Вниз
Скачать: CL | DM;

Получение класса по его имени   Найти похожие ветки 

← →
TForumHelp ©   (2008-06-13 12:57) [0]

Здравствуйте!

Помогите пожалуйста создать функцию, наподобие:

type
 TControlClass = class of TComponent;
 TNilClass = class;

function FindComponentByClass(CompClass: String): TControlClass;


которая вернет класс компонента по имени класса, например:

var
 C, X: TControlClass;
begin
 C := FindComponentByClass("TButton"); //возвращает TButton
 X := FindComponentByClass("TSomething"); //возвращает TNilClass
end;


чтобы в дальнейшем можно было работать с этим классом.
Если класс не существует функция возвращает TNilClass


← →
{RASkov} ©   (2008-06-13 13:46) [1]

Во первых: при чем тут конференция "Компоненты"?
Во вторых: Есть же уже стандартные вещи, например FindClass....

> которая вернет класс компонента по имени класса

Только не класс компонента, а ссылку на класс.


← →
TForumHelp ©   (2008-06-13 14:10) [2]

и как же с помощью FindClass получить TButton?


← →
{RASkov} ©   (2008-06-13 14:46) [3]

> [2] TForumHelp ©   (13.06.08 14:10)

Ну может быть так:
procedure TForm1.Button1Click(Sender: TObject);
var ClNm: TPersistentClass; Ctrl: TControl;
begin
 RegisterClass(TButton);
 ClNm:=GetClass("TButton");
 if ClNm<>nil then begin
  Ctrl:=TControlClass(ClNm).Create(Self);
  Ctrl.Parent:=Self;
 end;
end;

Что за задача-то у тебя?


← →
TForumHelp ©   (2008-06-13 14:52) [4]

а без регистрации классов никак? :(


← →
{RASkov} ©   (2008-06-13 15:07) [5]

> [4] TForumHelp ©   (13.06.08 14:52)

Их нужно единожды зарегистрировать и все....
А ты что же не знаешь какие классы будешь использовать?


← →
DimaBr ©   (2008-06-13 15:33) [6]

Без регистрации никуда.
Зарегистрировав класс Вы тем самым даёте задание компилятору скомпилоровать это клас в ваш EXE-шник и имеете возможность управлять им динамически.


← →
DimaBr ©   (2008-06-13 15:35) [7]

В догонку.

Перестаньте постить вопросы не относящиеся к теме конференции, вы это делаете уже не первый раз...


← →
Anatoly Podgoretsky ©   (2008-06-13 16:05) [8]

> DimaBr  (13.06.2008 15:35:07)  [7]

Так ты не переноси, а закрывай.


← →
TForumHelp ©   (2008-06-13 18:43) [9]

всем большое спасибо!



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.016 c
15-1212392855
Nous Mellon_
2008-06-02 11:47
2008.07.13
Срочная халтурка для С++ кодера


2-1213098806
ciborg
2008-06-10 15:53
2008.07.13
TComboBox только для чтения


15-1211878467
ekto
2008-05-27 12:54
2008.07.13
NASM


15-1211813808
БарЛог
2008-05-26 18:56
2008.07.13
php. случайный элемент числового множества


15-1211830557
Дмитрий С
2008-05-26 23:35
2008.07.13
Время жизни ком-объекта.




   Наверх