可能对大家来说,都不愿启口这样的问题,
但我确实有点摸不找头脑。请看下面,很短的源码。
谢先了!unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure ss(tt:TControl;sender:tobject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=0 to ControlCount-1 do
if (sender is Tbutton) then
//问题就出在这儿,怎样解决呢
(sender as TButton).OnClick:=Ss(edit1,sender);
end;procedure TForm1.ss(tt: TControl;sender:tobject);
begin
tt.Width:=tt.Width+10;
end;end.
但我确实有点摸不找头脑。请看下面,很短的源码。
谢先了!unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Edit1: TEdit;
procedure FormCreate(Sender: TObject);
procedure ss(tt:TControl;sender:tobject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=0 to ControlCount-1 do
if (sender is Tbutton) then
//问题就出在这儿,怎样解决呢
(sender as TButton).OnClick:=Ss(edit1,sender);
end;procedure TForm1.ss(tt: TControl;sender:tobject);
begin
tt.Width:=tt.Width+10;
end;end.
var i:integer;
begin
for i:=0 to ControlCount-1 do
if (sender is Tbutton) then
//问题就出在这儿,怎样解决呢
Ss(edit1,sender);
end;
这样就对了
改成:
(sender as TButton).OnClick:=Ss;
但是ss的参数必须只有一个,并且是tobject类型的!tbutton.onclick是个tnotifyevent类型的指针,不能随便副职!除非Ss(edit1,sender); 返回值是tnotifyevent!
procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=0 to ControlCount-1 do
if (sender is Tbutton) then
//ÎÊÌâ¾Í³öÔÚÕâ¶ù£¬ÔõÑù½â¾öÄØ
(sender as TButton).OnClick:=button1.OnClick;
end;procedure TForm1.ss(tt: TControl;sender:tobject);
begin
tt.Width:=tt.Width+10;
end;procedure TForm1.Button1Click(Sender: TObject);
begin
Ss(edit1,sender) ;
end;
begin
Edit1.Width:=Edit1.Width+10;
end;procedure TForm1.FormCreate(Sender: TObject);
var i:integer;
begin
for i:=0 to componentcount-1 do
if (components[i] is Tbutton) then
//问题就出在这儿,怎样解决呢
(components[i] as TButton).OnClick:=MyButton1Click;end;TnotityEvent的参数要相同