dbgrib用于显示query查询的结果,当用户选中某行时,弹出修改框,修改后再提交给数据库。
问题是: 怎样知道用户选中哪一行,并传给弹出的修改框。。

解决方案 »

  1.   

    当用户选中某行时, dbgrid.datasource.dataset 自动将当前记录设为被选中的那行
    取用户选中的记录值只需操作dbgrid.datasource.dataset的当前记录即可
      

  2.   

    弹出时:
        Edit1.text := dbgrid.datasourse.dataset.fieldvalus['字段名'];
    修改后提交
        dbgrid.datasourse.dataset.fieldvalus['字段名'] :=  Edit1.text;
        dbgrid.datasourse.dataset.post;因为DBGrid是数据感知组件,所有你选择一行后,数据集中的焦点也跑到你选择
    的那一行了,可以直接对DataSet进行读取和修改等操作。不需要去查找当前行。
    不过的到当前行也可以:rNo := dbgrid.datasourse.dataset.RecNo;
      

  3.   

    将记录信息显示在TEdit或其它控件里面,修改时只能在TEdit里面修改,然后再提交;这样下面的DBGrid就相当于一个ListBox了,操作方便、界面美观、自由控制
      

  4.   

    dbgrid.datasourse.dataset.RecNo就是你选中的行
    但是并不是这样操作
    你只需要按照 arraden(小兵传奇) 那样写就Ok了
      

  5.   

    当前你选哪一行,在DATASET中就是哪一行.
      

  6.   

    我想得到dbgrid的最大的行号(最后一行的行号)怎么取呢???以后我要insert into talbe
      

  7.   

    不用特意去要dbgrid的行号,他和query  adoquery时联系的,用指针就可以了
      

  8.   

    当前你选哪一行,在DATASET中就是哪一行.
      

  9.   

    procedure TForm1.DBGrid1CellClick(Column: TColumn);
    begin
      edit1.Text := dbgrid1.Columns.Grid.SelectedField.AsString; //所选取单元格的内容
      edit2.Text := inttostr(table1.RecNo);  //取得当前行
      edit3.Text := inttostr(dbgrid1.Columns.Grid.SelectedIndex); //取得当前列
    end;
      

  10.   

    DBGrid1的onCellClick里column.Field.DataSet.FieldByName('字段')
    可以操作了