Domanda

Come posso creare un TCustomControl che si comporterà come TPanel?Ad esempio MycustomComponent, che posso rilasciare componenti in etichette, immagini ecc.

È stato utile?

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:

    .
  1. Override il costruttore Crea
  2. Aggiungi csAcceptsControls alla proprietà ControlStyle
  3. 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
scroll top