我发现了DBGrid的一个BUG
不信你自己做试验
在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();
}
}