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.
作者:疯狂Delphi
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.
欢迎关注我,一起进步!扫描下方二维码即可加我