首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

一个关于BCB中DBGrid组件的OnColEnter事件的有关问题

2013-03-28 
一个关于BCB中DBGrid组件的OnColEnter事件的问题我用BCB 6.0写了一些代码:void __fastcall TfmSelectManag

一个关于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);有时候编译器就是这么变态的

热点排行