动态添加的多个按钮,如何写按钮的Click和Mousedown事件(50分)

  • 主题发起人 主题发起人 出现派
  • 开始时间 开始时间

出现派

Unregistered / Unconfirmed
GUEST, unregistred user!
动态添加的多个按钮,如何写按钮的Click和Mousedown事件
 
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
procedure MyButtonOnClick(Sender: TObject);//自定义事件
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}
procedure TForm1.MyButtonOnClick(Sender: TObject);//自定义事件
begin
showmessage('你的事件');
end;

procedure TForm1.Button1Click(Sender: TObject);
var Button:tbutton;
begin
Button:=TButton.Create(Form1);
Button.Parent:=Form1;
Button.OnClick:=Form1.MyButtonOnClick ;//Button动态创建名
Button.Show;
end;

end.
//其它的也一样的
 
Btn1 := TButton.Create() ;
Btn1.Name := 'Btn1' ;
Btn1.Hint := 'Btn1';
Btn1.OnClick := BtnClick ;
procedure BtnClick(Sender:TObject) ;
begin
if TButton(Sender).Hint = 'Btn1' then
begin
end;
或者
if TButton(Sender).Name = 'Btn1' then
begin
end;
end ;
MouseDown事件类是
 
可以结贴了
 
我来迟了,可惜!
 
同意luckj,这个问题太简单了。
唉,来迟一步!来迟一步!
 
同意一楼的东东
 
我认为动态创建的button不能放在一个过程中,否则创建后不能在其他过程中访问
 
Btn1.OnClick := BtnClick 这一句有错啊
我的源码是这样的:
procedure Addbuttons(pnl1:Tpanel;btnidex:integer;Buttoncaptions:string;buttonname:string);

begin
with Tspeedbutton.Create(pnl1) do
begin
caption:=buttoncaptions;
name:=buttonname;
parent:=pnl1;
height:=23;
width:=102;
top:=height*btnidex +23;
flat:=true;
left:=2;
OnClick :=buttonclick; 这一句提示有错。。。。
end;
end;

procedure buttonclick(btnname:string;exepath:string;sender:Tobject);
begin
if TSpeedButton(sender).Name=btnname then
begin
...
end;
end;
 
你的ButtonClick声明错了,去看看TButton关于ButtonClick的声明就可以了。
to :yanghai0437
在一个过程里写,当然是有它的局限性,但对于某些问题来说,不失为一种好的解决办法,例如:不讲解美观的基础信息输入界面(很多输入框)等地方。
 
后退
顶部