Come creare un TCustomControl che si comporta come TPANEL?
-
17-09-2020 - |
Domanda
Come posso creare un TCustomControl che si comporterà come TPanel?Ad esempio MycustomComponent, che posso rilasciare componenti in etichette, immagini ecc.
Soluzione
Il trucco è questo pezzo di codice in TCustomPanel:
constructor TCustomPanel.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
ControlStyle := [csAcceptsControls {, ... } ];
//...
end;
.
Ci sono molti altri comandi VCL che puoi scendere da questo hanno csAcceptsControls
nella loro proprietà ControlStyle
.
Se vuoi farlo nei tuoi controlli, ma non scendere da un tale controllo VCL, allora dovresti fare qualcosa del genere:
- .
- Override il costruttore Crea
- Aggiungi
csAcceptsControls
alla proprietàControlStyle
Come questo codice di esempio:
//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
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow