单击事件为何第二次不生效?(50分)

  • 主题发起人 主题发起人 chean
  • 开始时间 开始时间
C

chean

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在有这样的一个事件:
procedure TForm1.RadioButton1Click(Sender: TObject);
begin
Edit1.SetFocus;
end;
当我第一次在RadioButton单击时Focus在Edit1上,但当第二次在RadioButton1单击时(接在第一次后)Focus不在Edit1上了,而是在RadioButton1了。何故?
 
应该不会这样吧.
 
应该不会这样吧,too!
 
要不你试一下Mouse_Up或者Mouse_Down事件.
 
你可能触发了双击事件,你把双击事件指向单击事件再试试
 
Edit1.SetFocus;
把 edit1 的 tab 顺序社为第一。单击不要太快
 
哈哈,这是DELPHI的聪明之处:一个单选按钮连续选中说明你没有改变选项,
DELPHI就不理你了。 不信你用另一个按钮把它的Checked属性变为false,
再来点一下看看
 
看看源代码吧,当RadioButton.Checked为True时,再点击酒会使Value也为True,
所以不会执行你的RadioButtonClick事件。

if FChecked <> Value then
begin
》 FChecked := Value;
》 TabStop := Value;
》 if HandleAllocated then
》 SendMessage(Handle, BM_SETCHECK, Integer(Checked), 0);
》 if Value then
》 begin
》 TurnSiblingsOff;
》 inherited Changed;
》 if not ClicksDisabled then Click;
end;
end;

再看看 Click的代码酒会明白ButtonOnclick事件就是在这里触发的

procedure TControl.Click;
begin
{ Call OnClick if assigned and not equal to associated action's OnExecute.
If associated action's OnExecute assigned then call it, otherwise, call
OnClick. }
if Assigned(FOnClick) and (Action <> nil) and (@FOnClick <> @Action.OnExecute) then
FOnClick(Self)
else if not (csDesigning in ComponentState) and (ActionLink <> nil) then
ActionLink.Execute
else if Assigned(FOnClick) then
FOnClick(Self);
end;



To All:
各位,还是先试试别人提出的问题,不要光猜测!
 
接受答案了.
 

Similar threads

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