我正在嘗試創建複合組件TTreePage(後代形式TCustomControl)。它應該包含3個子組件:Treeview(TTreeview)align:= alLeft,Splitter(TSplitter)align:= alLeft和Container(TPanel)align:= alClient。在設計時訪問子組件屬性
這裏是contstructor:
constructor TTreePage.Create(AOwner: TComponent);
begin
inherited;
FTreeview := TTreeView.Create(self);
FTreeview.SetSubComponent(True);
InsertControl(FTreeview);
FSplitter := TSplitter.Create(self);
FSplitter.SetSubComponent(True);
FSplitter.Width := 3;
FSplitter.Color := clBlack;
InsertControl(FSplitter);
FContainer:= TPanel.Create(Self);
FContainer.SetSubComponent(True);
FContainer.BevelInner := bvNone;
FContainer.BevelOuter := bvNone;
FContainer.Color := clYellow;
InsertControl(FContainer);
RefreshLayout; // this performs alignment of subcomponents
end;
這裏是創建PARAMS過程:
procedure TTreePage.CreateParams(var Params:TCreateParams);
begin
inherited;
Params.Style := Params.Style + WS_EX_CONTROLPARENT;
ControlStyle := ControlStyle + [csAcceptsControls, csCaptureMouse, csOpaque];
end;
整個組件表現爲一個單塊。我無法通過鼠標選擇任何子組件(TTreeview,TSplitter或TPanel)。是的,我可以在Object Inspector中編輯它們的屬性,但我不能編輯例如TTreeview的寬度或拖動TSplitter。對我來說最重要的是在設計時在TTreeview中添加節點,但是我無法爲它調用Tree節點編輯器。
我該怎麼辦?
Thanx
你的建議看起來很有希望,但是當我將它添加到我的代碼中時,它似乎不會簡單地啓動。我在程序中放置了showmessage,我點擊,一遍又一遍地移動鼠標,但沒有發生任何事情。 – lyborko