按分析出的错误的多少和分析原因的详细给分。谢谢!unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, StdCtrls;
type
TTBPhone = class(TToolBar)
procedure PhoneClick(Sender: TObject);
end;type
TForm1 = class(TForm)
Button1: TButton;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
BtnPhone:array [1..10] of TToolButton;
i:integer;
begin
for i:= 1 to 10 do
begin
BtnPhone[i] := TToolButton.Create(self);
BtnPhone[i].Parent := ToolBar1;
BtnPhone[i].Height := 65;
BtnPhone[i].Width := 65;
case i of
1:
begin
BtnPhone[i].Caption := '拨/挂';
BtnPhone[i].OnClick := TTBPhone.PhoneClick(BtnPhone[i]);
end;
else
end; end;
end;procedure TTBPhone.PhoneClick(Sender: TObject);
begin
showmessage('phone');
end;end.
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, ToolWin, StdCtrls;
type
TTBPhone = class(TToolBar)
procedure PhoneClick(Sender: TObject);
end;type
TForm1 = class(TForm)
Button1: TButton;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
BtnPhone:array [1..10] of TToolButton;
i:integer;
begin
for i:= 1 to 10 do
begin
BtnPhone[i] := TToolButton.Create(self);
BtnPhone[i].Parent := ToolBar1;
BtnPhone[i].Height := 65;
BtnPhone[i].Width := 65;
case i of
1:
begin
BtnPhone[i].Caption := '拨/挂';
BtnPhone[i].OnClick := TTBPhone.PhoneClick(BtnPhone[i]);
end;
else
end; end;
end;procedure TTBPhone.PhoneClick(Sender: TObject);
begin
showmessage('phone');
end;end.
Begin
BtnPhone[i] := TToolButton.Create(self);
BtnPhone[i].Parent := ToolBar1;
BtnPhone[i].Height := 65;
BtnPhone[i].Width := 65;
BtnPhone[i].Onclick:=BtnClkHandler;
End;procedure TTBPhone.BtnClkHandler(Sender:TObject);
begin
with Sender as TButton do
begin
//做你想做的
end;
end;
不行啊,undeclared identifier :btnclkhandler
我在前面已经声明过的。你调试通过了吗?
Begin
BtnPhone[i] := TToolButton.Create(self);
BtnPhone[i].Parent := ToolBar1;
BtnPhone[i].Height := 65;
BtnPhone[i].Width := 65;
BtnPhone[i].Name := Phone+inttostr(i);
BtnPhone[i].Visible := True; BtnPhone[i].Onclick:=BtnClkHandler;
End;procedure TTBPhone.BtnClkHandler(Sender:TObject);
begin
with Sender as TButton do
begin
//做你想做的
end;
end;
Var
i:integer;
BtnPhone:array[1..10] of TToolButton;
begin
For i:=1 to 10 Do
Begin
BtnPhone[i] := TToolButton.Create(self);
BtnPhone[i].Parent := ToolBar1;
BtnPhone[i].Height := 65;
BtnPhone[i].Width := 65;
BtnPhone[i].Onclick:=BtnClkHandler;
End;
end;procedure TForm1.BtnClkHandler(Sender:TObject);
begin
with Sender as TToolButton do
begin
showmessage('phone');
end;
end;
1、先声明一个与所创建控件的父控件相对应的事件参数一致的全局过程;
如在本例中声明的PhoneClick过程;
2、给所创建的控件的事件赋值,赋值时,只需给出过程名就可以不用给参数。
如:
BtnPhone[i].OnClick := PhoneClick;
不知可以不?
procedure TTBPhone.BtnClkHandler(Sender:TObject);
应该为procedure TForm1.BtnClkHandler(Sender:TObject);
申明在TForm1的私有段
with Sender as TToolButton do
我已经试过了