求救关于:Tstringgrid(Dbgrid).Cell[0,1]类型转换出错的问题! ( 积分: 200 )

  • 主题发起人 主题发起人 foreach
  • 开始时间 开始时间
F

foreach

Unregistered / Unconfirmed
GUEST, unregistred user!
由于我要处理这样一种情况,修改DBGRID内某些CELL的值(不保存到数据库);
然后要把DBGRID中全部CELL的值赋给ARRAY,所以我做了这样的一个转型的动作,但却报错:
Tstringgrid(Dbgrid).Cell[0,1]
access violation at address 002e26cf in module vcl70.bpl
read of address 00000004
 
由于我要处理这样一种情况,修改DBGRID内某些CELL的值(不保存到数据库);
然后要把DBGRID中全部CELL的值赋给ARRAY,所以我做了这样的一个转型的动作,但却报错:
Tstringgrid(Dbgrid).Cell[0,1]
access violation at address 002e26cf in module vcl70.bpl
read of address 00000004
 
Tstringgrid(Dbgrid).Cells[1,1]呢?
 
DBGRID不是从STRINGGRID上继承的,所以这样的转换是致命的
 
CELL[1,1]也同样报错,我怎么处理呢?
 
它继承自TCustomGrid
试试TCustomGrid(Dbgrid).SetEditText(x, y, value)

TCustomGrid(Dbgrid).GetEditText(x, y, value)读出
 
我同意somset的意见,你的集成有问题,再说你要转到数组里,完全可以不用这种方法阿,作循环处理不就行了,在数据库里面直接提取数据后再修改
 
我的方法也不对,TCustomGrid中主要成员都是private的不能用
才发现
再想想
 
我不知道楼主为什么要用TStringGrid来转换后再往表格里写,而且不写到数据库~~~
你不写到数据库去可以用缓存的方式
要么你可以直接用StringGrid啊
 
没有人知道了吗?我只是想以CELL[I,J]的方式读取DBGRID上的内容,有这么难吗?
 
http://www.delphibbs.com/delphibbs/dispq.asp?lid=2513534
http://www.delphibbs.com/delphibbs/dispq.asp?lid=951753
呵呵,手头上没有Delphi,没有办法试试
你自己看看吧,估计比较困难呀
 
我试了一下:i:=Tstringgrid(Dbgrid).Row;
没有问题。
到底Tstringgrid(Dbgrid).Cell[0,1]怎么就出错了呢?
 
TStringGrid和TDBGrid都是从TCustomGrid继承下来的,所以如果转换时在TCustomGrid里没有的属性是不能被这样转换的~~~不知道你为什么非要那样写!

你如果只是为了能够取这些值的话可以这样:
//自定义一个类
type
TMyGrid=class(TCustomDBGrid);

然后读内容:
var
s:string;
///
s:=TMyGrid(DBGrid1).GetEditText(列号,行号);
 
DBGrid没有Cells[Col,Row]的过程这么能强行转换能,
再说TDBGrid又不是从TStringGrid那继承过来的
 
后退
顶部