总结:
1.DBGrid从数据库中的读取方式是这样的:
对于Client/Server数据库,server端数据查询时只会将当前已查询出来的数据
传送出来, 你此时并不知道到底有多少条记录符合条件, 只有到全部记录传送
到客户端后, 你才可能知道数据集究竟有多少条记录,(这样做要花费大量时间).
所以不可能通过Grid得知第几行,第几列的数据.
(比如我要知道第3000行,第2列的数据,但是现在这一行还未传到DBGrid内,该如
何是好?)
而对于文件型数据库查询时是一次性地将所有记录都查询出来,这样在下一步操作
前就可取得记录条目数, 也就可以定DBGrid的各种属性值. 自然也就可以获得某
个指定行, 列处的字符串了.
但是Delphi并不是对所有的文件型数据库都是这样做的,因此,可靠的方法还是对
该DBGrid所对应的TDataSet(包括TTable, TQuery, TClientDataSet)的指定行,
列进行检索.gefei的方法是正确的(除去对RecNo的说法).
2.GetEditText是对于当前正在编辑的某个Cell进行的操作.它有几个局限.首先,
DBGrid必须处于编辑状态,其次,它还只能返回编辑时选定的字符.而一般性的选定
则不会返回字符串.返回当前选择的Cell值,可以继承TCustomDBGrid类,将其中的
Cols和Rows(应该是这两个,名字可能有点出入)设为publish或public就可获得当
前选择的行,列,而不必使DBGrid处于编辑状态.
3.也可人为地发出某种消息,或者通过定位而使DBGrid的当前记录指向您所要的记录,
但是这样做,窃以为不如直接从DBGrid所对应的数据集中选取,那样直接,方便,可读
性强.我的原则是这样的:程序可读性一定要比技巧重要,因为您不能保证什么时候会
重读自己的源码,而过于强调技巧会使阅读程序困难.