请问:自己写的VCL从Panel继承来或在panel放别的组件的问题?(100分)

  • 主题发起人 主题发起人 greenbamboo
  • 开始时间 开始时间
G

greenbamboo

Unregistered / Unconfirmed
GUEST, unregistred user!
当我全部选中窗体中组件或选中此组件的全部区域的话,此组件上的东西就都看不了,
就好似一个空的Panel? 什么?
 
是不是放在了 panel 上,是不是顺序有问题。
 
1、你在组件上面放置了一个其它的组件将它们遮信了,可以将它删除或置后;
2、你的计算机的系统资源(如内存等)不足,重新启动后看看。
3、和计算机上其它的程序有冲突
4、你的delphi有问题,可以考虑重新安装[:D]
 
是自己写的控件?是不是没有处理好重绘消息通知?
 
谢谢楼上的各位了。

我出现这种情况 是在设计期出现的。
单个点击选中不会出现此情况,但多选时就出现像选中Panel的样子
(对了,我在Panel上放的是ListView)
 
很简单,你一定时处理了他的自画事件,或者重画的消息,而没有Inherited;
当然就不会画出它上面的组件了.
 
我的组件是从WinCtrol继承来的,在他上面放了panel,在在Panel上放了个ListView,
ListView我加了东西继承了Inherited,
WinCtrol没有继承Inherited,
panel没有继承Inherited,他只起承载ListView 等组件的作用。
 
都是要Inherited的;
 
对于Panel我只是用,并不对他改动什么

type
TTestListView = class(TWinCtrol)
private
Panel:Tpanel;
ListView:TListView;
public
Constructor Create(AOwner:TComponent);
....
end;

Constructor Create(AOwner:TComponent);
begin
inherited Create(AOwner);
Panel:=TPanel.create(self);
Panel.parent:=self;

ListView:=TListView.create(panel);
ListView.parent:=panel;
end;
 
就这些代码吗?
ListView上好象不能放控件,我的意思是说,有先后次序,在点选TTestListView后上面的
控件看不见是正常的的,至于其它的似乎,你也没说的怎么清楚,
另外我觉得把
ListView:=TListView.create(panel);改成
ListView:=TListView.create(SELF);
感觉上更好些;
 
ListView:=TListView.create(panel);改成
ListView:=TListView.create(SELF);
其实效果一样,反正ListView是放在panel上的。

我认为关键是Panel创建后,让他的align为alclient,他就屏蔽了后面容器的焦点,就像
Form上放个Panel让他的align为alclient一样,但是再在form的panel放其它组件,全选时
panel上的东西还是能看到的。

是不是panel和listview在create时调用createWnd有什么奥妙,还是controlstyle或
controlstate有什么奥妙?
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部