急!!!求教:如何确定消息由谁发送?(30分)

  • 主题发起人 主题发起人 wxb761014
  • 开始时间 开始时间
W

wxb761014

Unregistered / Unconfirmed
GUEST, unregistred user!
请问诸位:
我在窗体上放了两个按钮,两者都能使
窗体Hide,我在FormHide中写了代码,
但我必须判断是哪个按钮使窗体Hide,
如何判断,请指教!!!
 
怎么调用的?
你可以使用sender参数来判断.
 
具体为:
比如在FormHide时将Edit中的内容
转换为float。有一按钮使下一窗体
show,本窗体hide,同时执行formhide
进行转换。另一按钮使程序结束运行,但
此时edit中为空,程序退出时由于执行
formhide进行转换,会发生异常。(空格无法转换为float)
请问如何解决。
在formhide中我使用
if(TButton *)Sender==Button1(此按钮使程序结束)
进行判断,但异常还是发生。
sender参数详细意义何在??

 
空格无法转换为float

try
if Trim(Edit1.Text)<>'' then
V:=StrToFloat(Edit1.Text);
except
....
end;

>if(TButton *)Sender==Button1(此按钮使程序结束)
if (Sender is TButton) and ((TButton *)Sender=-Button1) then
......

 
设置一个开关变量这个问题就解决了。
 
用这个可能好一点:
if (sender as Tbutton).caption = 'something' then
...
 
附加一个参数不就行了?
或者用一个全程变量?(笨办法)
 
要想知道哪个控件执行了动作,可以用tag
1、在设计时Button1.tag=1001, Button2.tag=1002
2、两个Button共用一个事件,onBtnClick,
3、事件里这样写:
if Sender is TButton then
case TButton(Sender).tag of
1001:begin
//你要做什么
end;
1002:begin
//你要做什么
end;
end;
注:共用一个事件,也可以先在第一个Button上点两下,就建立了Button1的事
,Button2就不点了,直接从事件的下拉框中选Button1的事件就行了。它们两共
用一个onClick事件。
 
多人接受答案了。
 
后退
顶部