我发现了DBGrid的一个BUG

qiyanchao 2004-09-20 05:27:18
不信你自己做试验
在FormActivate事件中添加如下代码
当然,代码中用到的控件你自己加,然后再设置
运行前将ADOTable1的Active属性设为True
第一次顺利运行
运行后第二列与第三列会产生下拉列表
然后回来(就是回到设计状态)
然后将DBGrid1的Option属性中的dbRowSelect和dbMultiSelect属性设为True
这次运行的时候当然不会有下拉列表产生,因为dbRowSelect和dbMultiSelect属性设为True了
然后再回来(就是回到设计状态)
将DBGrid1的Option属性中的dbRowSelect和dbMultiSelect属性改回False
按理说这次运行后第二列与第三列会产生下拉列表
因为属性已改回来了
但是没有
而且以后再也不会有了
除非你用DBCommoBox方法来产生下拉列表
哈哈
数据我连的是SQL Server中NorthWind中的Employees表
void __fastcall TForm1::FormActivate(TObject *Sender)
{
AnsiString sSql;
sSql = "select * from Employees";
ADOQuery1->Close();
ADOQuery1->SQL->Clear();
ADOQuery1->SQL->Add(sSql);
ADOQuery1->Open();
if (ADOQuery1->RecordCount)
{
DataSource1->DataSet = ADOQuery1;
}


while(!ADOTable1->Eof)
{

DBGrid1->Columns->Items[1]->PickList->Add(ADOTable1->FieldByName("LastName")->AsString );
DBGrid1->Columns->Items[2]->PickList->Add(ADOTable1->FieldByName("LastName")->AsString);
ADOTable1->Next();
}


}
...全文
93 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiyanchao 2004-09-20
  • 打赏
  • 举报
回复
你厉害
这5分
给你了
qiyanchao 2004-09-20
  • 打赏
  • 举报
回复
真的假的
我试试
kmfangxun 2004-09-20
  • 打赏
  • 举报
回复

搂主有意思呀!你把DBGrid1的Option地dgEditing和dgAlwaysShowEditor重新设为true就可以了,别动不动就bug、bug的!我觉得你自己需要Debug一下了。

1,178

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder 数据库及相关技术
社区管理员
  • 数据库及相关技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧