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

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

Получение класса по его имени [D7, WinXP]


TForumHelp ©   (2008-06-13 12:57:00) 

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

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

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


TForumHelp   (2008-06-13 18:43:00) [1]

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


Anatoly Podgoretsky   (2008-06-13 16:05:00) [2]

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

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


DimaBr   (2008-06-13 15:35:00) [3]

В догонку.

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


DimaBr   (2008-06-13 15:33:00) [4]

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


{RASkov}   (2008-06-13 15:07:00) [5]

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

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


TForumHelp   (2008-06-13 14:52:00) [6]

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


{RASkov}   (2008-06-13 14:46:00) [7]

> [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:10:00) [8]

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


{RASkov}   (2008-06-13 13:46:00) [9]

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

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

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


Наверх

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