过程的参数?(50分)

  • 主题发起人 主题发起人 qlw
  • 开始时间 开始时间
Q

qlw

Unregistered / Unconfirmed
GUEST, unregistred user!
我要调一个过程,过程又以另一个过程为参数...这样说吧,
一个过程是动态生成窗体,另一个过程就是窗体的事件,
好象 onDblClick:=MyClick;
怎么写都报错,c中有函数指针,delphi里怎么做呢?
分数不多 聊表心意
 
一个简单的示例:

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure myClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var F : TForm;
begin
F := TForm.Create(self);
F.OnClick := Form1.myClick;
F.Show;
end;

procedure TForm1.myClick(Sender: TObject);
begin
ShowMessage('Just a Test!');
end;

end.
 
to liuly:

问题是,我想写成这个样子:
procedure TForm1.MyProcedure(myclick);
var F : TForm;
begin
F := TForm.Create(self);
F.OnClick := myClick;
F.Show;
end;
就是把过程象参数一样伟,象别的语言传函数指针那样,不知怎么做

 
我的这些东西实际上是写在dll中的
你说怪不怪,编译时居然不认self这个字
 
去睡了,明天再说
 
不是都一样吗? 你们两个的有什么区别?
 
myClick 必须写在类里面,而不是独立的函数
 
简单说我想写个函数,自动生成一系列元件,没有form1..这些东西,
元件的parent属性(指form1),OnClick事件等都当参数传进去。我对
delphi不太熟,各位能否说的详细些,谢谢!
顺便说一下,wlq,qlw都是我
 
{
Test.Click可以是任何一个对象的过程,必须是
TNotifyEvent=procedure (Sender:TObject) of object;类型,

当然对其他类型(非TNotifyEvent)又要再写另外的函数,
}


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TMyNotifyEvent=procedure (Sender:TObject);

TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure MyCreate(Event: TNotifyEvent);
public
{ Public declarations }
end;

TTest=class(TComponent)
procedure click(sender:TObject);
end;

var
Form1: TForm1;
Test:TTest;

implementation

{$R *.DFM}
{ TTest }

procedure TTest.click(sender: TObject);
begin
ShowMessage('TTest.Click');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Test:=TTest.Create(Self);
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
MyCreate(Test.Click);
end;

procedure TForm1.MyCreate(Event: TNotifyEvent);
var
B:TButton;
begin
B:=TButton.Create(Self);
B.Parent:=Self;
B.OnClick:=Event;
end;

end.
 
多人接受答案了。
 
后退
顶部