如何获得dbgrid中某个列的内容(100)

  • 主题发起人 主题发起人 zuodan
  • 开始时间 开始时间
本进程 还是 其他 进程的 ?
 
什么叫某个列的内容?dbgrid数据来自于dataset,最终取数据都是从dataset里面取的。
 
是一列还是某一cell?
 
DBGrid的CellClick里面var s: String;begin s := Column.Field.AsString; ShowMessage(s);end;看看是不是楼主想要的结果?
 
关键是不是从dataset中来读取,因为不是在单击某个cell时读取的,只是知道cell的位置,如要取(3,5)位置的cell的数据,该如何取
 
先使数据到第三行数据上,再取再用上面的提供的代码来取var s: String;begin s := Column.Field.AsString; ShowMessage(s);end;
 
DBGrid和StringGrid不同,它本身不象后者那样存储数据,显示的数据全都是从Dataset中取出来后,再绘制的,因此如果你想取Cell(3,5)中的数据,只能先获得当前记录处于第几行,方法Type TMYDbgrid=Class(TDBgrid);TMyDbgrid(Dbgrid1).Row 表示当前记录处于第几行,在这个基础上,需要计算对DataSet.MoveBY(多少),然后再通过DataSet来获取数据,最后在对DataSet.MoveBy回去。如果你对游标的clone比较属性,也可以采用clone游标来读取数据。
 
znxia :是啊,我知道数据是来自dataset中的,但我现在不能移动数据集的位置,该如何获取指定位置的cell的值呢
 
看了DBGrid.drawcell代码后,改写的,取得第5行记录的第一个字段的值:Type TMydbgrid=Class(TDBGrid);procedure TForm1.Button2Click(Sender: TObject);var X:TDataLink; OLD:Integer;begin X:=TDataLink.Create; X.DataSource:=DataSource1; OLD:=X.ActiveRecord; X.ActiveRecord:= OLD+(5-TMydbgrid(DBGrid1).Row); Caption:= X.DataSet.Fields[0].AsString; X.ActiveRecord:= OLD; X.Free;end;对于定位是哪个字段,对你来说应该没问题吧?其中可能会有一些异常,我没处理。
 
后退
顶部