子类如何屏幕父类的属性或者方法?

shuyi 2002-11-14 11:42:54
父类的Publish的方法我子类怎么屏蔽不让对象看到或者说使用
...全文
28 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
chechy 2002-11-14
  • 打赏
  • 举报
回复
呵呵,这是我的代码中的东西。在设计的时候我还写了其他代码限制大小。
没有什么真正不可视,只要达到目的就可以了。
procedure TCcTab.Paint;
var
Rec: TRect;
begin
inherited Paint;

if (csDesigning in ComponentState) then begin
Width := 27;
Height := 27;
Rec:= Rect(0, 0, Width, Height);
Canvas.Brush.Color:= clYellow;
Canvas.FillRect(Rec);
Canvas.Font.Name:= 'Courier New';
Canvas.Font.Size:= 11;
Canvas.Font.Color:= clRed;
DrawTextEx(Canvas.Handle, 'ET', -1, Rec,
DT_CENTER or DT_VCENTER or DT_SINGLELINE, nil);
end;
end;
shuyi 2002-11-14
  • 打赏
  • 举报
回复
to Chechy:
很感谢你的帮助,还有一些问题

else begin
Width := 27;
Height := 27;
end
没有被执行,所以在Design模式下是可以任意resize的
还有,你用到了width:=27 height:=27这不就带来一个问题,那这个Vcl也开放出来这几个属性了,而对于象Menu这样的控件是无Top left width height
所以我关心如何写一个基于TWincontrol的控件而实际上他是真正意义上的不可视控件。
li01bin 2002-11-14
  • 打赏
  • 举报
回复
私有继承
chechy 2002-11-14
  • 打赏
  • 举报
回复
很简单啊,可以这么写:
constructor TCcTab.Create(AOwner: TComponent);
begin
inherited Create(AOwner);

if not (csDesigning in ComponentState) then begin
Enabled := False;
Visible := False;
end
else begin
Width := 27;
Height := 27;
end
end;
但是不要期望去屏蔽属性。这个是面向对象的特性,屏蔽不了的。
shuyi 2002-11-14
  • 打赏
  • 举报
回复
to chechy..
其实问题是这样的,我想自己写一个控件,因为考虑到要转换到activex方便,只能从Twincontrol继承,但是又想做到那些Tmenu之类的不可视控件的效果,不知道怎么做。
shuyi 2002-11-14
  • 打赏
  • 举报
回复
关键是我在子类里面要使用,实际上就是把Publish的东东移到private里。
chechy 2002-11-14
  • 打赏
  • 举报
回复
不能屏蔽的,不过可以自己重新定义一个,不做任何事情。从而达到屏蔽的目的。
myy 2002-11-14
  • 打赏
  • 举报
回复
从Custom父类继承
shuyi 2002-11-14
  • 打赏
  • 举报
回复
好,谢谢Chechy
stanely 2002-11-14
  • 打赏
  • 举报
回复
可以屏蔽啊,
只要吧父类的函数放到子类的private里面就可以,不用override关键字!
l_xiaofeng 2002-11-14
  • 打赏
  • 举报
回复
学习ing

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧