Форум: "Начинающим";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
ВнизСоздание компонетов по имени класса Найти похожие ветки
← →
eugie (2007-11-22 09:40) [0]Подскажите, пожалуйста, можно ли выполнить следующее действие и если можно, то как:
- есть имя класса, хранящееся во внешнем источнике (в файле, реестре, в поле БД);
- можно ли, счтитав имя класса, создать компонент в приложении (то есть, имея стоку с названием класса нужно создать компонент)?
← →
eugie (2007-11-22 09:47) [1]для наглядности:
var vCompName:String;
считываем в vCompName название класса - "TEdit"
и вот теперь нужно динамически создать компонент типа TEdit
← →
Reindeer Moss Eater © (2007-11-22 09:51) [2]геткласс + ф1
← →
DimaBr © (2007-11-22 10:35) [3]Можно, но для этого (предварительно) нужно зарегистрировать все классы хранящиеся в ващей БД.
← →
Юрий Зотов © (2007-11-22 10:59) [4]> eugie
См. в справке: GetClass, FindClass, RegisterClass.
← →
eugie (2007-11-22 13:02) [5]а примерчик можно?
← →
homm © (2007-11-22 13:07) [6]> [5] eugie (22.11.07 13:02)
> а примерчик можно?
> [2] Reindeer Moss Eater © (22.11.07 09:51)
> геткласс + ф1
← →
eugie (2007-11-22 13:28) [7]ну ладно
try
FindClass("TComboBox");
except
RegisterClass("TComboBox");
end;
а дальше что делать-то? как этот комбобокс создать?
← →
Reindeer Moss Eater © (2007-11-22 13:38) [8]Конструктором класса конечно.
← →
DimaBr © (2007-11-22 14:12) [9]
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.
← →
eugie (2007-11-23 03:40) [10]>2 DimaBr
Спасибо! :)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.12.16;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.068 c