J'essaie de créer un contrôle personnalisé basé sur TCustomComboBox dans Delphi 2007, mais je suis bloqué sur le premier obstacle. J'essaie de contourner la façon dont la liste déroulante est affichée, principalement le texte qui est affiché, en regardant la source de TCustomComboBox dans stdctrls.pas il semble que je dois juste remplacer DrawItem, mais il ne fonctionne pas, comme le code de ma méthode substituée n'est jamais exécuté.Création d'un descendant TCustomComboBox dans Delphi
J'ai regardé un code source de plusieurs composants open source pour voir comment ils le font, mais je suis toujours à une perte.
Voici ce que j'ai jusqu'à présent (pas grand-chose il est vrai)
type
TKeyValueComboBox = class(TCustomComboBox)
private
{ Private declarations }
//FColumns:Integer;
protected
{ Protected declarations }
procedure DrawItem(Index: Integer; Rect: TRect; State: TOwnerDrawState);override;
public
{ Public declarations }
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
published
end;
Et
procedure TKeyValueComboBox.DrawItem(Index: Integer; Rect: TRect;
State: TOwnerDrawState);
begin
TControlCanvas(Canvas).UpdateTextFlags;
if Assigned(OnDrawItem) then OnDrawItem(Self, Index, Rect, State)
else
begin
Canvas.FillRect(Rect);
Canvas.TextOut(Rect.Left + 2, Rect.Top, Items[Index]+'-HELLO');
end;
end;
Est-ce que quelqu'un sait quelle méthode je dois utiliser pour obtenir ma version surchargée de feu? ou ce que je fais mal?
Toute aide serait appréciée.