RT网上搜索了下,一般答案是这样for i:=0 to DBGrid1.Columns.Count-1 do
xx:=DBGrid1.Columns[I].Field.Value;
如果是想取某一列的值,则:
with DBGrid1.DataSource.DataSet do
begin
First;
while not Eof do
begin
xx:=DBGrid1.Columns[xx].Value;
//其他处理
//也可以xx:=FeildValues[FieldName];
//其他处理etc...
Next;//这句别忘了.
end;
end;这样会导致数据库指针的移动,能不能直接从DBGrid的控件角度着手,获得每一行的第一个格子里的内容?
xx:=DBGrid1.Columns[I].Field.Value;
如果是想取某一列的值,则:
with DBGrid1.DataSource.DataSet do
begin
First;
while not Eof do
begin
xx:=DBGrid1.Columns[xx].Value;
//其他处理
//也可以xx:=FeildValues[FieldName];
//其他处理etc...
Next;//这句别忘了.
end;
end;这样会导致数据库指针的移动,能不能直接从DBGrid的控件角度着手,获得每一行的第一个格子里的内容?
解决方案 »
- 关于delphi2009
- 为什么镜像是左右颠倒?
- 奇怪的不得了,数据库中是负数,用adotable读出来就是负数!!!!!
- 我这样理解对吗?
- Ado组件不见了,怎么办?
- 请教高手,谁能解释一下TButton的ONCLICK事件是如何产生的
- Visual Studio .NET Enterprise Architect(中文企业设计师本)哪儿有下???
- 读写BIOS,控制外部程序。……急!
- 為什麼 delphi 能, 而 vb vc不能呢? DELPHI 最強大的數據功能,難道沒有人知道它的原理嗎 ?
- 技术性难题!
- Delphi开发,如何实现定时从SQL数据库导出数据到XML文件,然后打包发送
- ListView数据读取问题
完全可以以TStringGrid方式访问每个Cell
不过,这样只能访问到当前显示在界面上每个Cell的值,没有显示的内容无法通过Cell访问,因为那个需要在滚动数据集的时候,后台提取数据显示到对应位置的Cell上。TStringGrid的行数和列数是可预见的,也就是RowCount,ColCount,虽然你可以动态改变,但也是相对“固定”的。
TDBGrid的行数和列数就只有界面上显示那些Row和Col,需要滚动的时候或则大小改变的时候才有变化,无穷的数据都是临时绘制到适当位置的Cell上。
比如DBGrid的Dataset是ADOQuery,则应当ADOQuery.Next,取ADOQuery.Fields[0]
若不想看到滚动,另外用一个Dataset操作啊也可以这样,或用Locate方法重新定位,让人感觉不到记录在滚动:
var
P:Pointer;
begin
P:=ADOQuery1.GetBook;
ADOQuery1.DisableControls;
try
//...读取值的操作
if P<>nil then
ADOQuery1.GotoBook(P);
finally
ADOQuery1.EnableControls;
end;
end;
不明白你的意思,这个是通过ADOQuery的Next来遍历行的,怎么了
哎。万恶的Delphi