一个关于BCB中DBGrid组件的OnColEnter事件的问题
我用BCB 6.0写了一些代码:
void __fastcall TfmSelectManage::DBGridSelectManageColEnter(
TObject *Sender)
{
if(xian) //xian是我定义的bool类型变量,设置为true
{
if(!DBGridSelectManage->Fields[1]->AsString.IsEmpty())//DBGridSelectManage是DBGrid组件的名字
{
AnsiString m=DBGridSelectManage->Fields[1]->AsString;
ADOQuerySelectManage1->Close();//ADOQuerySelectManage1是ADOQuery组件的名字
ADOQuerySelectManage1->SQL->Clear();
ADOQuerySelectManage1->SQL->Add("select 货号,库存单价 from 库存库 where 商品名=:name");
ADOQuerySelectManage1->Parameters->ParamByName("name")->Value=m;
ADOQuerySelectManage1->Open();
if(ADOQuerySelectManage1->FieldByName("货号")->AsString=="")
{
ShowMessage("库存中不存在该商品,请重新输入!");
DBGridSelectManage->Fields[1]->AsString="";
}
else
{
DBGridSelectManage->Fields[2]->AsString=ADOQuerySelectManage1->FieldByName("货号")->AsString;
//DBGridSelectManage->Fields[8]->AsString=ADOQuerySelectManage1->FieldByName("库存单价")->AsString;
}
}
}
在以上代码中我遇到了一个疑问:我已经将xian设置为true了,同时!DBGridSelectManage->Fields[1]->AsString.IsEmpty()的返回值也为1,但if语句的内容却不被执行。但如果我将if(xian)去掉,语句却会执行。
请问各位高手这是怎么回事,这是我从来没遇到的情况?是不是和这个OnColEnter事件有关啊
[解决办法]
xian把改成int类型,判断==1 试试
[解决办法]
加两行空行试试看,有些执行点不到的问题就是这样解决的
[解决办法]
你说的if语句不执行 是第几个if语句,如果是if(xian) 不进来的话 可以试试if(xian == true);有时候编译器就是这么变态的