本帖最后由 javagxc 于 2010-05-17 16:52:38 编辑

解决方案 »

  1.   

    onCellClick事件或是onkeypress事件都可以判斷的
      

  2.   


    DataSource1的DataChange事件中处理
    显示dbgrid当前记录的字段值。
    DBGrid1.Datasource.Dataset.Fields[0].AsString //当前记录第一个字段值
    DBGrid1.Datasource.Dataset.Fields[1].AsString //当前记录第二个字段值
    DBGrid1.Datasource.Dataset.Fields[2].AsString //当前记录第三个字段值

    DBGrid1.Datasource.Dataset.Fields[n].AsString //当前记录第n个字段值
      

  3.   

    这根grid无关,当你选中一条记录时,数据集就定位到这条数据上了,你只需要读取数据集中的数据就行了
      

  4.   

    你要的是鼠标点击那里的当前值?比如DBGrid1.SelectedField.DataSet.FieldValues['Date'];
      

  5.   

    学习
    UPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUPUP
      

  6.   

    鼠标点或者->、<-都可以的。
      

  7.   

    edit1.text:=dbgrid.datasource.dataset.fieldbyname('字段').asString;
      

  8.   

    说得好像很深澳,事实上DataSource好像早有此功能。
      

  9.   

    当前值已经可以获取,获取方法如下:
    DBGrid1.DataSource.Dataset.Fields[dbgrid1.Columns.Grid.SelectedIndex].AsString;
    目前面临的最后一个问题是,我想光标离开的时候获取这个值,不管这个值有没有编辑过,要用什么事件啊
    用oncolexit只能解决在同一行切换光标的问题,如果光标在不同行的同一列切换就失去作用了。用什么控件可以行列切换时都能获取值啊。
      

  10.   

    你的绑定方法是不是这样的?
    DBGrid->DataSoure->Query(Table)?那不用考虑什么当前行了,你在dbGrid里面的onCellChange这之类的事件里面,直接写
    Query(Table).fieldbyname('字段名').asstring;(……)如果要深究的话,就是当你在DBGrid中选中一行的时候,数据集中的浮标就已经指到了数据集对应的行中,所以你不用做任何查找或者移动浮标的操作,直接取数据集中字段的值就可以了。把你要的字段的值取出来之后,保存到变量里面,发送就ok
      

  11.   

    换一种思路:
    准备条件:定义两个全局变量,并且在窗口创建期初始化。
    1、当单元格点击的时候(OnCellClick),判断当前的列值和其中一个全局变量是否一致,判断当前的数据记录的值和另一个全局变量是否一致。
    2、如果不一致,判断全局变量是否是初始值,如果是初始值,那么把当前的列和记录的值分别赋给两个全局变量。如果不是初始值,说明单元格已经改变,那么把全局变量作为你要的数据保存起来供后面使用。
    3、把全局变量修改为当前的列和记录值。