DBEdit与Onclick事件的小疑问,无法理解

yang_jnu yang_jnu 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
现在我的窗口里有两个为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事件,为什么就已经被赋值为"√"
讲得有点啰嗦,求论坛各位指教下。。。。。。
...全文
评论 18
收藏 已收藏
分享
返回顶部
yang_jnu
茶馆 551 成员 20,044 内容