想找一个与Sender功能相似的办法(50分)

J

Jao

Unregistered / Unconfirmed
GUEST, unregistred user!
我在form上放六个Button,想要当按下任何一个时能够显示其Name,但是要用Sender来作得写成:
if Sender = Button1 then...
else if Sender = Button2 then ...
这样好象也不怎么简单,以前写Foxpro时会用宏代换的办法:
Snd = &par (par是一个变量)
这样如果给par赋1,则Snd也是1,给par赋2,则Snd也是2。不知道Delphi能不能实现这个功能,或者有一些相似的方法。
 
T

tqz

Unregistered / Unconfirmed
GUEST, unregistred user!
仅仅是显示Name,何必要判断?
ShowMesssage((Sender as TButton).Name);
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
可以用sender的标题来区分;
begin
label1.caption:= Tbutton(Sender).caption;
end;

这只是一种方法。

如果不是同样的类型,还可以用tag.
每一个TWinControl都有tag属性,用来放integer;
你就可以
case TwinControl(sender).tag of
1..10 : begin
...
end

11..20 : begin
...
end

else ...;
end
// of case
 
J

Jao

Unregistered / Unconfirmed
GUEST, unregistred user!
感谢两位!
虽然解决问题,但想刨根问底,有没有与Foxpro那样的宏代换相似的办法?
 

曹晓钢

Unregistered / Unconfirmed
GUEST, unregistred user!
宏代换...

曹晓钢小声问:foxpro里的宏代换是怎样的?
 
C

CJ

Unregistered / Unconfirmed
GUEST, unregistred user!
都是 SENDER
DELPHI 好象不行,以前好象看过一个OCX有类似的功能
晓钢:
i = yourbutton
&i.enabled = false //yourbutton.enabled = false效果一样

foxpro的语法可能很久没用了,大概就这样吧

一个解决方法:
1 获得名称
2 FOR I:=0 TO FORM1。CONTROLCOUNT
BEGIN
IF FORM1。CONTROLS。NAME := 你的变量
FORM1.CONTROLS AS 你的空间类型 ....
END;
 
J

Jao

Unregistered / Unconfirmed
GUEST, unregistred user!
Foxpro与Delphi是完全不相同的编程方式,所以提这个问题可能有点牛头不对马
嘴,但是大家讨论一下毕竟有个比较清晰的认识。
接受答案了。
 
J

Jao

Unregistered / Unconfirmed
GUEST, unregistred user!
多人接受答案了。
 
顶部