Frage

wie erstelle ich ein TCustomControl, das sich wie Tpanel verhält?zB MyCustomComponent, dass ich Komponenten wie Etiketten, Bilder usw. einfügen kann.

War es hilfreich?

Lösung

Der Trick ist dieser Code in TCustomPanel:

constructor TCustomPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := [csAcceptsControls {, ... } ];
//...
end;

Es gibt viele weitere VCL-Steuerelemente, von denen Sie abstammen können csAcceptsControls in ihren ControlStyle Eigenschaft.

Wenn Sie dies in Ihren eigenen Steuerelementen tun möchten, aber nicht von einem solchen VCL-Steuerelement absteigen, sollten Sie so etwas tun:

  1. Überschreiben Sie den Create-Konstruktor
  2. Hinzufügen csAcceptsControls zu den ControlStyle Eigenschaft

Wie dieser Beispielcode:

//MMWIN:MEMBERSCOPY
unit _MM_Copy_Buffer_;

interface

type
  TMyCustomControl = class(TSomeControl)
  public
    constructor Create(AOwner: TComponent); override;
  end;


implementation

{ TMyCustomControl }

constructor TMyCustomControl.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  ControlStyle := ControlStyle + [csAcceptsControls {, ...} ];
//...
end;


end.

--jeroen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top