![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Создание компонента по его имени
Long © (2005-12-05 12:13:00)Такая проблемма:
Как создать объект, зная его имя ?
Т.е. есть несколько классов, у которых общий предок TForm. Ну или другой, не важно.
procedure X(ИмяКлассаФормы: string);
begin
MyForm:=<ФункцияСоздающаяЭкземплярКлассаПоЕгомени(ИмяКлассаФормы)>;
end
Например в рантайме это выглядит примерно так:
Я в поле ввода набираю Form1 и нажав на кнопку, мне создается форма Form1 и т.п.
Вариант типа If - не предлагать :)
Long (2005-12-05 20:56:00) [1]Это не то, что нужно.
Мне нужно создать форму (или какой-либо другой класс) передав его имя в виде СТРОКИ
Igor_thief (2005-12-05 14:54:00) [2]
var
Form1: TForm1;
fc: TFormClass;
frm: TForm;
implementation
{$R *.dfm}
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
fc := TForm;
frm := fc.Create(Self);
frm.Parent := Self;
frm.Left := 10;
frm.Top := 10;
Tag := TAg + 1;
frm.Name := 'From' + IntToStr(Tag);
frm.Visible := true;
end;
Long (2005-12-05 12:27:00) [3]я вот так замутил,но не работает:
var MyProcessClass: TFormClass;
MyProcessForm : TProcessForm;
begin
MyProcessClass:=TFormClass(FindClass(MyFormClassName));
MyProcessForm:=TProcessForm(MyProcessClass.Create(Application));
create проходит а на присвоении контролов вываливается. :-(
Anatoly Podgoretsky (2005-12-05 12:23:00) [4]Long (05.12.05 12:20) [2]
FindClass не ищет объектов
Long (2005-12-05 12:20:00) [5]А разве FindClass найдет не созданный объект ?
Игорь Шевченко (2005-12-05 12:15:00) [6]
> Я в поле ввода набираю Form1 и нажав на кнопку, мне создается
> форма Form1 и т.п.
FindClass + Create ?