Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2014, 13:43   #1
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию Свойства Components и ComponentCount поясните

Всем привет. Я знаю, что есть такие два свойства. Свойство Components - это массив компонентов, в котором находятся все компоненты на форме. Cвойство ComponentCount показывает количество этих компонентов.
У меня есть динамически созданная форма или созданная в режиме проектирования. На неё нужно как-то динамически добавлять компоненты, не объявляя их при описание класса формы. Может ли помочь изменение двух этих свойств? Если да, то как? Если нет, то в какую сторону копануть.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 31.07.2014, 14:15   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Используй метод формы: InsertComponent() для добавления компонентов динамически.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2014, 14:21   #3
Vapaamies
Просветитель
Участник клуба
 
Аватар для Vapaamies
 
Регистрация: 26.12.2012
Сообщений: 1,844
По умолчанию

Тупо создавать компоненты, передавая форму в качестве Owner в конструкторе Create.
В разработке: воспроизводственный контур ИТ
Vapaamies вне форума Ответить с цитированием
Старый 31.07.2014, 15:16   #4
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Используй метод формы: InsertComponent() для добавления компонентов динамически.
Спасибо, попробую.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 31.07.2014, 15:20   #5
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Поискал документацию и тут нашел, что у неё всего один параметр типа TComponent. Проблема: Как её использовать?
Ведь компоненты могут иметь разные типы, имена, свойства и т.п.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 31.07.2014, 15:23   #6
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Создаешь компонент типа
Код:
 var b : TButton;
begin
 b := TButton.Create(Form1);
 b.Parent := Form1;
 b.Другое_Нужное_Свойство_Типа_Высоты_Длины_И_Действия := Значение.
end;
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 31.07.2014, 15:28   #7
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

А если тип любой(не важно какого вида)? Как быть?
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 31.07.2014, 15:32   #8
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от alextrof94 Посмотреть сообщение
Создаешь компонент типа
Код:
 var b : TButton;
begin
 b := TButton.Create(Form1);
 b.Parent := Form1;
 b.Другое_Нужное_Свойство_Типа_Высоты_Длины_И_Действия := Значение.
end;
Сказано же: Без объявления!
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Старый 31.07.2014, 16:05   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А если тип любой(не важно какого вида)?
Приводить типы к TComponent придется.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 31.07.2014, 16:27   #10
саша40
Участник клуба
 
Регистрация: 12.09.2012
Сообщений: 1,030
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Приводить типы к TComponent придется.
Да уже сделал.
Вот код:
Код:
function TMyMessages.AddMessageFormComponent(AComponent: TComponent): Boolean;
begin
Result:=false;
if FMessageForm.FindComponent(GetClassName(AComponent)) <> 0 then exit;
FMessageForm.InsertComponent(AComponent);
AComponent.SetParentComponent(FMessageForm);
Result:=True;
end;
Уничтожение:
Код:
function TMyMessages.DestroyComponent(ComponentName: String): Boolean;
begin
Result:=false;
if FMessageForm.FindComponent(ComponentName)<>0 then
begin
FreeAndNil(FMessageForm.FindComponent(ComponentName));
Result:=True;
end;
end;
И даже изменения свойства(по указателю):
Код:
procedure TMyMessages.SetPropertyComponent(AProperty: Pointer;
  AType: TypeIdentifier; AValue: String);
begin
AProperty^:=AType(AValue);
end;
FMessageForm - это моя форма.
Что нужно программисту: Компьютер, Среда программирование, Воображение, Прямые руки, Мозги, Знания этой среды программирования.
Программист-это профессия, а программирование-это моё хобби.
саша40 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Tms Components Pack Vashkin Компоненты Delphi 3 02.12.2011 10:28
TAV Components RODNOC Компоненты Delphi 1 22.10.2010 02:06
Winowed components JoanM Общие вопросы Delphi 12 08.05.2008 14:08
Components для Delphi 7 John_chek Общие вопросы Delphi 1 20.03.2007 09:43