代码如下:
procedure TSkatingfrm.AddRollerbladesClose(Sender: TObject; var CanClose: Boolean);
begin
dm.ADOQRollerblades.Cancel;
end;procedure TSkatingfrm.RzToolButton1Click(Sender: TObject);
var ExtClickEvent: TNotifyEvent;
begin
dm.ADOQRollerblades.Append;
FaClass.ShowSheet(Skatingfrm.ScrollBox4,Skatingfrm.TabSheet4,@AddRollerbladesClose,520,360);
end;function ShowSheet(ScrollBox:TScrollBox;RzTabSheet:TRzTabSheet;NewEventValue: pointer=nil;width:integer=0;height:integer=0):String;
begin
...
end;报如下错误:
[Error] Skating.pas(393): Variable required
procedure TSkatingfrm.AddRollerbladesClose(Sender: TObject; var CanClose: Boolean);
begin
dm.ADOQRollerblades.Cancel;
end;procedure TSkatingfrm.RzToolButton1Click(Sender: TObject);
var ExtClickEvent: TNotifyEvent;
begin
dm.ADOQRollerblades.Append;
FaClass.ShowSheet(Skatingfrm.ScrollBox4,Skatingfrm.TabSheet4,@AddRollerbladesClose,520,360);
end;function ShowSheet(ScrollBox:TScrollBox;RzTabSheet:TRzTabSheet;NewEventValue: pointer=nil;width:integer=0;height:integer=0):String;
begin
...
end;报如下错误:
[Error] Skating.pas(393): Variable required
var ExtClickEvent: TNotifyEvent;
begin
dm.ADOQRollerblades.Append;
FaClass.ShowSheet(Skatingfrm.ScrollBox4,Skatingfrm.TabSheet4,@AddRollerbladesClose,520,360);
end;
这个改成:
procedure TSkatingfrm.RzToolButton1Click(Sender: TObject);
var ExtClickEvent: TNotifyEvent;
begin
dm.ADOQRollerblades.Append;
FaClass.ShowSheet(Skatingfrm.ScrollBox4,Skatingfrm.TabSheet4,@TSkatingfrm.AddRollerbladesClose,520,360);
end; 下面是我测试的例子:
procedure ShowTest(p:Pointer);
Type Tp=procedure;
var a:Tp;
begin
a:=Tp(p);
a();
end;procedure TForm3.Button1Click(Sender: TObject);
begin
ShowTest(@TForm3.test);
end;procedure TForm3.test;
begin
showmessage('abc');
end;不过我觉得改成下面的方式更好:
Type
Tp=procedure of object ;procedure ShowTest(p:Tp);
begin
p();
end;procedure TForm3.Button1Click(Sender: TObject);
begin
ShowTest(self.test);
end;procedure TForm3.test;
begin
showmessage('abc');
end;
这里最好把函数的类型定义出来,这样会方便很多,我认为
如果我要把这个过程付给其他事件怎么操作?比如:
function ShowSheet(ScrollBox:TScrollBox;RzTabSheet:TRzTabSheet;NewEventValue: pointer=nil;width:integer=0;height:integer=0):String;
begin
showfrm := Tshowfrm.Create(nil);
showfrm.OnCloseQuery := @EventValue;//这里应该怎么写
...
end;
能不能说详细点,或贴出代码?
ShowSheet(Skatingfrm.ScrollBox4, Skatingfrm.TabSheet4, AddRollerbladesClose, 520, 360);function ShowSheet(ScrollBox:TScrollBox; RzTabSheet:TRzTabSheet; NewEventValue: TCloseQueryEvent; width:integer=0; height:integer=0):String;