Ho un componente composito costituito da un TEdit
e un TButton
(sì, so di TButtonedEdit
) che eredita da TCustomControl
. La modifica e il pulsante sono creati nel suo costruttore e posizionati su se stesso.Casella di selezione del componente composito non disegnata correttamente
In fase di progettazione, la casella di selezione non viene disegnata correttamente, suppongo che la modifica e il pulsante lo nascondano perché sono stati disegnati per il controllo personalizzato e poi sono stati cancellati da essi.
Ecco il confronto:
Ho visto anche questo per gli altri componenti 3rd party (come il TcxGrid anche disegna solo la parte esterna del indicatore di selezione)
Domanda: come può Lo cambio?
caso più semplici per la riproduzione:
unit SearchEdit;
interface
uses
Classes, Controls, StdCtrls;
type
TSearchEdit = class(TCustomControl)
private
fEdit: TEdit;
public
constructor Create(AOwner: TComponent); override;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Custom', [TSearchEdit]);
end;
{ TSearchEdit }
constructor TSearchEdit.Create(AOwner: TComponent);
begin
inherited;
fEdit := TEdit.Create(Self);
fEdit.Parent := Self;
fEdit.Align := alClient;
end;
end.
Quale versione di Delphi, nel caso in cui conta –
Ma non credo che si sta per avere fortuna. Penso che gli indicatori di selezione siano implementati dall'IDE che aggancia le procedure della finestra di controllo. E il tuo controllo è dipinto prima dei suoi figli. –
Probabilmente il modo più semplice, in cima alla mia testa, è quello di impostare la propria pittura per il tempo di progettazione. – Graymatter