Советы по Delphi

         

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


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]



Содержание раздела