用这种方法可以实现,但为了动态优化需要换成另外一种方式procedure TfrmMain.bsSkinSpeedButton2Click(Sender: TObject);
.......
begin
.....
GpItem.OnClick :=aa();
end;procedure TfrmMain.aa(Sender: TObject);
begin
......
fme:=TfmeStoreSet.Create(application); //TfmeStoreSet 是bpl中的一个frame ,这样调用可正常运行
.....
end;但这种方法如何实现procedure TfrmMain.bsSkinSpeedButton2Click(Sender: TObject);
.......
begin
.....
GpItem.OnClick :=aa('XX',TfmeStoreSet);
end;procedure TfrmMain.bb(var sString;var tf:TFrame);
begin
.....
CreateTabSheet.caption:=s;
fme:=tf.Create(application);
...
end;
.......
begin
.....
GpItem.OnClick :=aa();
end;procedure TfrmMain.aa(Sender: TObject);
begin
......
fme:=TfmeStoreSet.Create(application); //TfmeStoreSet 是bpl中的一个frame ,这样调用可正常运行
.....
end;但这种方法如何实现procedure TfrmMain.bsSkinSpeedButton2Click(Sender: TObject);
.......
begin
.....
GpItem.OnClick :=aa('XX',TfmeStoreSet);
end;procedure TfrmMain.bb(var sString;var tf:TFrame);
begin
.....
CreateTabSheet.caption:=s;
fme:=tf.Create(application);
...
end;
解决方案 »
- 如何让dbgrid总是有一行空白的行? 用于方便操作,用户不必按"方向键下"就可以操作一条新的记录 。谁能想出最简单的实现方法
- 关于DELPHI7中idftp上传问题
- 求助:为什么我在创建socket的时候老是失败?急!急!急!
- 怎样改变dbgrid右边滚动条的颜色?
- 请问Tdatabase控件在数据库开发的程序里用得多不多?
- 给MDI主窗口加背景时,总是出错,请大家进来看看吧!
- 请问这个错误是什么意思?》
- 大家谁知道有好的网址,提供好的DELPHI程序源码?
- parambyname('MyPicture').asstring:=edit1.text 为什么报parambyname为没有定义的标示符?
- Sql Server 中一条条浏览记录时出现了 Invalid Blob Handle In Record Buffer 的错误,请问如何解决?
- ListView1滚动条问题
- 怎么样才能随便地删除数据
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type T1 = class(TPersistent)
end; T2 = class(TPersistent)
end; TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure CreateByClassName(cName: string);
procedure FormDestroy(Sender: TObject);
private
FC: TPersistentClass;
FO: TPersistent;
end;var
Form1: TForm1;implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
begin
Self.CreateByClassName('T2');
end;procedure TForm1.CreateByClassName(cName: string);
begin
if Assigned(FO) then FreeAndNil(FO);
FC := GetClass(cName);
FO := FC.Create;
Showmessage(FO.ClassName);
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned(FO) then FreeAndNil(FO);
end;initialization
RegisterClass(T1);
RegisterClass(T2);
finalization
UnRegisterClass(T1);
UnRegisterClass(T2);end.
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type T1 = class(TPersistent){类型1}
class procedure proc;
end; T2 = class(TPersistent){类型2}
class procedure proc;
end; TM = procedure of object; TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure CreateByClassName(cName: string);
procedure FormDestroy(Sender: TObject);
private
FO: TPersistent;
end;var
Form1: TForm1;implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject);
begin
Self.CreateByClassName('T1');{测试用类名T1构造对象}
Self.CreateByClassName('T2');{测试用类名T2构造对象}
end;procedure TForm1.CreateByClassName(cName: string);
var
M: TMethod;
C: TPersistentClass;
begin
if Assigned(FO) then FreeAndNil(FO);
C := GetClass(cName);
FO := C.Create;
Showmessage('对象构造自' + FO.ClassName + '类');
M.Code := C.MethodAddress('proc');
M.Data := C;
TM(M)();//执行相应的类方法
end;procedure TForm1.FormDestroy(Sender: TObject);
begin
if Assigned(FO) then FreeAndNil(FO);
end;{ T1 }class procedure T1.proc;
begin
Showmessage('T1类的proc方法被执行');
end;{ T2 }class procedure T2.proc;
begin
Showmessage('T2类的proc方法被执行');
end;initialization
RegisterClass(T1);
RegisterClass(T2);
finalization
UnRegisterClass(T1);
UnRegisterClass(T2);end.
用onclick调用一个Function,传递过去,并使用
TFrame(TCustomFrameClass(GetClass('TfmeStoreSet')).Create(self));
解决问题,谢谢大家