Идёт загрузка страницы...

htp://aptem.net.ru





Delphi 1

Создание объектов любого типа

CLASSES.PAS определяет функцию с именем FindClass, возвращающую классовую ссылку на этот класс (такую же, как и при регистрации класса). Вот пример, который динамически создает компоненты на основе имени класса, введенного в поле редактирования. Не забывайте при этом вызвать RegisterClasses и перечислять все возможные классы, которые вы имеете намерение создать.


   
unit Unit1;

interface

uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
Forms, Dialogs, StdCtrls, Grids, DBGrids, ExtCtrls, DBCtrls, DB, DBTables;

type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
public
NextTop : integer;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
NewObj : TControl;
NewClass: TPersistentClass;
begin
NewClass := FindClass(Edit1.Text);
NewObj :=
TControl(TComponentClass(NewClass).Create(Self));
NewObj.Parent := Self;
NewObj.Name := NewObj.ClassName+IntToStr(NextTop);
NewObj.Top := NextTop;
NextTop := NextTop+20;
end;

initialization
RegisterClasses([TButton,TEdit,TLabel]);
end.

[000483]