Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Создание компонетов по имени класса [D6, WinXP]


eugie ©   (2007-11-22 09:40:00) 

Подскажите, пожалуйста, можно ли выполнить следующее действие и если можно, то как:
- есть имя класса, хранящееся во внешнем источнике (в файле, реестре, в поле БД);
- можно ли, счтитав имя класса, создать компонент в приложении (то есть, имея стоку с названием класса нужно создать компонент)?


eugie   (2007-11-23 03:40:00) [1]

>2 DimaBr

Спасибо! :)


DimaBr   (2007-11-22 14:12:00) [2]

procedure TForm1.Button1Click(Sender: TObject);
var AClassName: string;
   AClassP: TPersistentClass;
   AObject: TPersistent;
begin
//   AClassName := LoadFromDataBase_Or_Registry;
  AClassName := 'TComboBox';
  AClassP := FindClass(AClassName);
  if Assigned(AClassP) then begin
    AObject := TComponentClass(AClassP).Create(self);
    TControl(AObject).Parent := Form1;
  end;
end;


initialization
 RegisterClasses([TComboBox]);
end.


Reindeer Moss Eater   (2007-11-22 13:38:00) [3]

Конструктором класса конечно.


eugie   (2007-11-22 13:28:00) [4]

ну ладно
try
 FindClass('TComboBox');
except
 RegisterClass('TComboBox');
end;

а дальше что делать-то? как этот комбобокс создать?


homm   (2007-11-22 13:07:00) [5]

> [5] eugie   (22.11.07 13:02)
> а примерчик можно?

> [2] Reindeer Moss Eater ©   (22.11.07 09:51)
> геткласс + ф1


eugie   (2007-11-22 13:02:00) [6]

а примерчик можно?


Юрий Зотов   (2007-11-22 10:59:00) [7]

> eugie

См. в справке: GetClass, FindClass, RegisterClass.


DimaBr   (2007-11-22 10:35:00) [8]

Можно, но для этого (предварительно) нужно зарегистрировать все классы хранящиеся в ващей БД.


Reindeer Moss Eater   (2007-11-22 09:51:00) [9]

геткласс + ф1


eugie   (2007-11-22 09:47:00) [10]

для наглядности:
var vCompName:String;

считываем в vCompName название класса - 'TEdit'

и вот теперь нужно динамически создать компонент типа TEdit


Наверх

Титульная страница Поиск, карта сайта Написать письмо