DELPHI : Détourner les Boutons Minimise et Maximise d’une Fiche

Comment détourner les actions par défaut quand je clique sur les bouton – et + de la barre de titre d’une fiche ?

Je veux que quand je clique sur – (minimiser)

  1. Au lieu de se réduire dans le barre de status
  2. Le programme s’affiche simplement plus petit

Et que quand je clique sur + (maximiser)

  1. Au lieu d’occuper tout l’écran
  2. Il retrouve sa taille d’origine

Seul OnMinimize possède un Evènement déclaré dans l’objet APPLICATION

Ce qui rend la première procédure plus facile :

  • Dans FORM :  OnCreate
    • Redéfinir l’événement OnMinimise
 Application.OnMinimize := MINI;
  • Dans Procédures Privées
    • Déclarer la fonction MINI
 private
{ Déclarations privées }
procedure MINI(Sender: TObject);
  • Sous Implémentation
    • Développer cette procédure
procedure TForm1.MINI(Sender: TObject);
begin
AfficherMINI.Execute;
WindowState := wsNormal;
end;

Comme l’événement “Minimise” n’est pas annulé, la fenêtre se réduit  et passe la main,  il faut donc la Restaurer en donnant au WindowState la valeur Normale

AffcicherMINI donne les dimensions de la Mini Fiche

OnMaximize ne possédant pas de procédure propre il faut la créer à partir des Messages Systèmes

  • Dans la section Déclaration  Procédures Privées
procedure _WM_GETMINMAXINFO(var mmInfo: TWMGETMINMAXINFO);
message wm_GetMinMaxInfo;
  • Dans la section Implémentation
procedure TForm1._WM_GETMINMAXINFO(var mmInfo: TWMGETMINMAXINFO);
begin

with mmInfo.minmaxinfo^ do
begin
ptmaxposition.x := left;
ptmaxposition.y := top;

if Tag > Width then
ptmaxsize.x := Tag
else
ptmaxsize.x := Screen.Width div 2;

ptmaxsize.y := Height;
end;
end;

Il suffit de donner à la variable minimaxinfo les coordonnées de la nouvelle fenêtre.

Laisser un commentaire