Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.16;
Скачать: CL | DM;

Вниз

Создание компонетов по имени класса   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.026 c
15-1195276393
iZEN
2007-11-17 08:13
2007.12.16
FreePascal и Lazarus возможно нарушают авторские права Borland?


15-1195313211
IvanJ
2007-11-17 18:26
2007.12.16
Аналог из C++ в Delphi


2-1195662515
Jolik
2007-11-21 19:28
2007.12.16
Посоветуйте, как правильнее организовать веб-сервер...


2-1195744591
Fraider
2007-11-22 18:16
2007.12.16
Минимальный размер окна


2-1195557465
LikefNik
2007-11-20 14:17
2007.12.16
TRichEdit +BMP