如何实现对按钮的统一编程 ( 积分: 30 )

  • 主题发起人 主题发起人 孤云
  • 开始时间 开始时间

孤云

Unregistered / Unconfirmed
GUEST, unregistred user!
有一组按钮button1,button2,button3...,希望对它们进行统一编写程序
如:
procedure tform.Button?Click(Sender: TObject);
begin
Case ? of
1:...
2:...
....
end;
请问有没有可能这样编
还有一个问题
我在工具栏的按钮上添加图片,为什么每次重新打开的时候图片都不见了,imageindex又重新归为-1,请问是哪出错啦?
谢谢!
 
有一组按钮button1,button2,button3...,希望对它们进行统一编写程序
如:
procedure tform.Button?Click(Sender: TObject);
begin
Case ? of
1:...
2:...
....
end;
请问有没有可能这样编
还有一个问题
我在工具栏的按钮上添加图片,为什么每次重新打开的时候图片都不见了,imageindex又重新归为-1,请问是哪出错啦?
谢谢!
 
预先设计时或动态创建时将一组按钮赋值:
Button1.tag:=1;
Button2.tag:=2;
....
procedure tform.Button?Click(Sender: TObject);
begin
Case (Sender as TButton).Tag of
1:...
2:...
....
end;
 
自定义一个过程
如procedure tform.ButtonClick(Sender: TObject); //定义位置一定要在自动生成procedure定义的地方.或者,都用button1Click也可.
然后所有按钮的OnClick选这个过程.
然后在这个过程中判断.
if Sender = button1 then
...
else if Sender= button2 then
...
 
用TAG吧,如jwei119所说,这个是最方便滴
 
定义几个全局变量,每个变量的值对应一个按钮,这样也可以判断是按了哪个BUTTON
 
to jwei119:
都用Tag了何必还 procedure Button?Click()
双击其中一个按钮写事件,如上,然后把其他按钮的OnClick事件都指向
刚才写的处理过程,怎么指向不用我说了吧
 
动态创建一组按钮,如下:
var
Form1: TForm1;
i : integer;
button : array[0..n] of Tbutton;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
for i:=0 to n do
begin
button:=Tbutton.Create(Self);
button.Parent:=form1;
button.Width:=50;
........
button.onClick:=Form1.MyClick;
end;
end;
procedure TForm1.MyClick(Sender: TObject);
begin
for i:=0 to n do
begin
if button.Focused then
begin
Case i of
1:...
2:....
..........
end;
end;
end;
可以判断是哪个按钮按下
 
var i:integer;
begin
for i:=0 to form1.ControlCount-1 do
begin
if self.Controls is TBUTTON THEN
Tbutton(form1.Controls).caption:='d';
end;
end;
 
其实可以用:Tag属性的,设置每一个Tbutton的控件Tag属性,然后再遍历
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部