Delphi使用FindClass实现动态建立对像(有点像反射)

 

 

相关资料:http://www.blogjava.net/nokiaguy/archive/2008/05/10/199739.html 

 1 {
 2 http://www.blogjava.net/nokiaguy/archive/2008/05/10/199739.html
 3 在delphi中动态建立类的实例可分为4步。
 4 1. 声明一个从TPersistent继承的类。因为在注册类时要求必须从TPersistent继承。
 5 2. 注册类。可以使用RegisterClass等过程进行注册。
 6 3. 验证类是否被注册(可选)。如果确定要建立的类已经注册了,可以省略此步。
 7 4. 得到并建立类。可使用FindClass(classname)得到要建立的类,然后使用Create方法建立类的实例。
 8 }
 9 
10 unit Unit1;
11 
12 interface
13 
14 uses
15   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
16   Dialogs, StdCtrls, ExtCtrls, jpeg;
17 
18 type
19   TForm1 = class(TForm)
20     Button1: TButton;
21     Edit1: TEdit;
22     Image1: TImage;
23     procedure Button1Click(Sender: TObject);
24   private
25     { Private declarations }
26   public
27     { Public declarations }
28   end;
29 
30   TMyClass = class(TPersistent)
31   public
32     function GetValue: String;
33   end;
34 
35 var
36   Form1: TForm1;
37 
38 implementation
39 
40 {$R *.dfm}
41 
42 { TMyClass }
43 
44 function TMyClass.GetValue: String;
45 begin
46   Result := 'hello world';
47 end;
48 
49 procedure TForm1.Button1Click(Sender: TObject);
50 var
51   class1: TMyClass;
52 begin
53   if GetClass('TMyClass')<>nil then
54   begin
55     class1 := FindClass('TMyClass').Create as TMyClass;
56     Edit1.Text := class1.GetValue;
57   end;   
58 end;
59 
60 Initialization //可将这两行放在end.的前面
61   RegisterClass(TMyClass);
62 
63 end.

 

posted on 2016-05-03 11:01  疯狂delphi  阅读(783)  评论(0编辑  收藏  举报

导航