wie erstelle ich ein TCustomControl, das sich wie Tpanel verhält?
-
17-09-2020 - |
Frage
wie erstelle ich ein TCustomControl, das sich wie Tpanel verhält?zB MyCustomComponent, dass ich Komponenten wie Etiketten, Bilder usw. einfügen kann.
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:
- Überschreiben Sie den Create-Konstruktor
- Hinzufügen
csAcceptsControls
zu denControlStyle
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