Rajoutter des bouttons sur la barre de titre d'une fenêtre

Description

Le package fourni rajoutte un nouveau composant dans la barre "additional": le TTitleBarButtonsManager. Il permet de rajoutter des boutons personnalisés dans la barre de titre d'une fenêtre. Ce composant a seulement 3 propriétés publiées :

property Form:TCustomForm read FForm write SetForm; //La fenêtre qui va recevoir les bouttons sur sa barre de titre (par exemple, mettre "Form1" si votre form s'appelle comme ça)

property Buttons:TTitleBarButtons read FButtons write SetButtons; //Une collection de TTitleBarButton (voir plus bas)

property Spacing:Integer read FSpacing write SetSpacing default 2; //L'espace entre les bouttons

Source / Exemple :


Voilà les propriétés publiées des TTitleBarButton :

    property OnClick:TNotifyEvent read FOnClick write SetOnClick;                //Click sur le boutton
    property OnPaint:TTitleBarButtonPaintEvent read FOnPaint write SetOnPaint;   //Gestionnaire d'affichage personnalisé

    property Width:Integer read FWidth write SetWidth;                           //Largeur (la hauteur est définie par Windows et le thème courant)

    property Enabled:Boolean read FEnabled write SetEnabled;                     //Bouton actif ou non

    property Name:string read FName write SetName;                               //Un nom (comme un nom de composant) pour faciliter la lecture du code.

L'événement OnPaint est déclaré comme suit:

  TTitleBarButtonState=(tbsDisabled,tbsDown,tbsHot);

  TTitleBarButtonStates=set of TTitleBarButtonState;

  TTitleBarButtonPaintEvent=procedure(Sender:TObject;Canvas:TCanvas;Rect:TRect;State:TTitleBarButtonStates) of object;

Il suffit de dessiner ce que l'on veut sur le Canvas tout en restant dans le rectangle Rect. State permet de savoir quel est l'état du bouton (tbsDown=enfoncé, tbsHot=souris au-dessus, tbsDisabled=bouton inactif).

Conclusion :


J'ai mis un programme d'exemple pour illustrer le fonctionnement. Comme vous pourrez le constater, les boutons s'adaptent à tous les styles de bords de fenêtre (BorderStyle) et leur position s'adapte aussi à la propriété BorderIcons des fiches. J'ai conscience que mes boutons sont très laids sur la capture, mais grâce à l'événement OnPaint vous pourrez développer toute votre créativité et faire beaucoup mieux!

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.