【问题】我想用checkbox判断用户在dbgrideh中勾选了那些数据,于是想到用checkbox来实现,而正好dbgrideh有这个属性值,但是利用这个属性需要在数据库中有对应的字段,而我现在不能在数据库中添加字段;于是在csdn上搜索,说是用clientdataset可以解决,我于是按照以下方式来进行处理:
1.控件连接方式:ADOconnection+ADOdataset+DatasetProvider+Clientdataset+Datasource+Dbgrideh,并在ADOdataset的commantext写入,select cast(1 as boolean) as fselect,* from accounts;
2.设置ADOdataset的更新方式为ltBatchOptimistic;
3.然后在单击dbgrideh的cell时,
void __fastcall TForm1::DBGridEh1CellClick(TColumnEh *Column)
{
if(Column->FieldName=="fselect")
{
if(TClientDataSet1->State != dsEdit) TClientDataSet1->Edit() ;
TClientDataSet1->FieldByName("fselect")->Value = !TClientDataSet1->FieldByName("fselect")->Value;
}
4.运行程序,单击dbgrideh中的checkbox列,提示“Field 'fselect' cannot be modified. process stopped.”请教这是什么原因,怎样解决?(已经排除了的可能性1。我已经将TClientDataSet1中的fselect字段的faReadonly属性设置为false;2。已经将TClientDataSet1的Readonly设置为false;)