请各位高手帮忙,为什么我用强制类型转换时出错?(100分)

  • 主题发起人 主题发起人 xufeng_ok
  • 开始时间 开始时间
X

xufeng_ok

Unregistered / Unconfirmed
GUEST, unregistred user!
强制转换
TCustomGrid(DBGRID).GridLineWidth:=1;
我的做法:
我在一个新的FORM中添加一个BUTTON1和DBGRID1,
在BUTTON1的ONCHICK事件中添加语句:
TCustomGrid(DBGRID).GridLineWidth:=1;

然后执行,
出错:Undeclared identifier:"gridlinewidth"
请问这是我哪里没设置好呢?
 
protected属性,外部不能访问。
 
gridlinewidth是protected属性,外部不能访问
可以用TStringGrid(DBGRID).GridLineWidth:=1;
 
谢谢各位,已经解决。
请问MLZHOU:
我看帮助说TDBGRID的父类是TCustomGrid,为什么TSTRINGDBGRID可以,
而TCustomGrid就不可以???
 
protected的成员在派生类中不是可以允许访问的吗?
声明
type
TMyGrid=class(TCustomGrid);
然后调用
TMyGrid(StringGrid1).MoveRow(***);
为什么这样用才行?
而TCustomGrid(StringGrid1).MoveRow(***);不行呢?
MoveRow是TCustomGrid的protected的方法.
我做了一个试验,这样是可以得
type
T1 = class(TObject)
protected
procedure MyPro();
end;
T2 = class(T1)
end;
var
var
SomeObject: T2;
begin
SomeObject := T2.Create;
T1(SomeObject).MyPro;
SomeObject.Free;
end;

procedure T1.MyPro();
begin
showmessage('this is a protected method');
end;
这样可以编译通过阿,为什么?
收保护的方法(protected)除了在声明的类中使用以外,还可以在派生类中使用,在c++中,只能从派生类内部调用,在外部是不允许的.就是适用于类本身,而不是类对象,delphi应该也是这样吗?
 
后退
顶部