如何防止自制控件的子控件被用户删除?(100分)

  • 主题发起人 主题发起人 ydchen_xm
  • 开始时间 开始时间
Y

ydchen_xm

Unregistered / Unconfirmed
GUEST, unregistred user!
我编写了一个控件,其中包含了若干个子控件。使用该控件的过程中,其中的子控件用户可以选中并删除,这是我所不希望的。TLabeledEdit在使用时其子控件TBoundLabel是不能被选中的(在Object TreeView中也不会显示),我看了半天其源代码也没看出什么特别之处。请哪位知道端倪的大虾指点。先谢过!
 
请参考ComponentState,我想应该有合适的参数。
不在Object TreeView.可以尝试把Sub Control的Owner:= nil;(记得释放)
 
新年帮助你ding!
 
在控件的初试化中加:
ControlStyle:=[csOpaque];

 
>>使用该控件的过程中,其中的子控件用户可以选中并删除
你指的是在设计期间被删除吧?

constructor TMyPanel.Create(AOwner: TComponent);
begin
inherited create(AOwner);

//FButton在TMyPanel的private部分定义
// FButton:=TButton.Create(AOwner);//这样写就会出现你说的可以删除的情况
FButton:=TButton.Create(Self);//正确的应该这样写

//这里用AOwner做Owner了,结果,子控件的Owner就是Form了,这样,子控件就
//可以被拖动、删除了,应该用Self做Owner,就没问题。
end;

 
多谢dirk。我又仔细看了一下TCustomLabledEdit的代码,发现确如您所言。我开始太不仔细了。:)
 
后退
顶部