![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание компонетов по имени класса [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