DBEdit与Onclick事件的小疑问,无法理解
现在我的窗口里有两个为DBEdit1与DBEdit2,我想实现的是互斥按钮的效果,如点击DBEdit则赋值为"√",表示已选择,我是在两个DBEDit1与DBEdit2的onclick事件,都同时指向同一个DBEditClick函数如下:
void __fastcall TfrmAddBl::DBEditClick(TObject *Sender)
{
AnsiString asTempDBEditName = ((TDBEdit *)Sender)->Name;
AnsiString asDBEditContent;
if ( ((TDBEdit *)Sender)->Text == "" )
((TDBEdit *)Sender)->Text = "√";
else
((TDBEdit *)Sender)->Text = "";
if ( asTempDBEditName == "DBEdit1" || asTempDBEditName == "DBEdit2"){
int sum = (DBEdit1->Text == "√") + (DBEdit2->Text == "√");
if( sum != 0 ){ //如果两个都没选择,则不处理,否则,先清空再赋值
DBEdit1->Text = "";
DBEdit2->Text = "";
((TDBEdit *)Sender)->Text = "√";
}
}
}
上面的代码,运行可以实现互斥了,但现在有个小问题,如,
1.先点击DBEdit1,
2.再点击DBEdit2,可以实现互斥的效果,此时DBEdit2打上勾了,
3.点击DBEdit2,将勾取消,此时两个勾都没了,
4.第四步,当我接着点击DBEdit1时,这个勾打不上,
我单步调试时,发现,在第四步单击DBEdit1时,还没进入DBEditClick事件,就已经被赋值为"√",接着在DBEditClick就会将其作为原来是打勾的,故又赋值为"",从而出现打勾打不上的情况,我所不理解的事情就是在第四步的时候,原来DBEdit1为空的,点击时,还没进入DBEditClick事件,为什么就已经被赋值为"√"
讲得有点啰嗦,求论坛各位指教下。。。。。。