我要在DBGrid中的某列输入内容(比如该字段对应的简拼)按回车键后出现一个窗口显示若干行数据供我选择,当我选择了其中的某行后,不光将原列对应字段要赋予新值,而且还要求将DBgrid中当前行的其他字段赋予所选择的新值。
出现我要选择的窗口数据供我选择我是这样处理的:
在DataSource的onDataChange事件中:
   if (DBGrid1.SelectedField.FieldName='spr') and (Key=#13) then
   begin
     if DBGrid1.SelectedField.IsNull then
      sprZJM :='' //传入该字段的简拼,为了让frmSpr窗体显示按该条件执行查询!
    else
     sprZJM :=DBGrid1.SelectedField.Value;
     frmSpr.ShowModal;
     frmSpr.Free;
   end;
那么当我真正选择了某行后,如何给我刚才在DBgrid中的当前行的相应字段赋值呢?
请各位前辈指教!!!
小弟在此谢了!

解决方案 »

  1.   

    弹出对话框不必那么复杂,直接在DBGrid.Columns设计窗口中,设置Colums.ButtonStyle为cbsEllipsis,然后相应DBGrid.EditButtonClick事件中调用你的对话框
      

  2.   

    选择数据后,直接对DataSet的相应字段赋值就行了, 如TTable1.FieldByName('Name').Value := ....
      

  3.   

    补充,DBGrid的数据编辑单元右边会出现一个按钮
      

  4.   

    关键是取得值后如何正确的记住最初Grid中的那条记录号呢?
      

  5.   

    有个第三方控件(DBGridEH)好象可以实现你的需求!
      

  6.   

    关键是取得值后如何正确的记住最初Grid中的那条记录号呢?
    ==================================================================================不用记忆的,直接对DataSet的有关字段赋值,或者对DBGrid的列属性的Field赋值即可,因为你不明显移动数据集的位置,它是不会变的.数据集总是和DBGrid记录同步的
      

  7.   

    如果你非要记住某条记录,可用DataSet的标签功能
      

  8.   

    我已经用TBook完成了 功能,谢谢!!!
      

  9.   

    DBGridEH 可以实现你的要求,可以试试!