Comment faire pour réaliser un traitement spécifique sur le minimize ou le maximize d'une form ? la form n etant pas la form principale
Comment faire pour réaliser un traitement spécifique sur le minimize ou le maximize d'une form ? la form n etant pas la form principale
Dernier appel pour la question precedemment posée...
Y a t il une solution possible ?
Si il n'y en a pas, que quelqu'un me previenne ...
merci d'avance
Salut
OnResize?
Pedro
Aucune réponse aux sollicitations techniques par MP
Faut pas attendre d'en avoir besoin pour s'en servir... (Lucien Stéphane)
Les pages Source C'est bon. Mangez-en!
Le défi Delphi
Règles du forum - FAQ Delphi - Pensez au chtit
Aéroclub Bastia Saint-Exupéry
Bonjour,
vous pouvez utiliser le message "WMSysCommand" pour vous créer des événements OMinimize, OnMaximize etc..
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28 private procedure WMSysCommand(VAR Message: TWMSysCommand); message WM_SYSCOMMAND; implementation procedure TFGridMdiForm.WMSysCommand(var Message: TWMSysCommand); var AIconButtonUsed: Boolean; ASetChildActive: Boolean; begin ASetChildActive := False; if (((Message.cmdtype and $FFF0)= SC_RESTORE) or ((Message .cmdtype and $FFF0)= SC_MAXIMIZE)or ((Message.cmdtype and $FFF0)= SC_MINIMIZE)) then begin FMaster.EnabledchildnotActive(False); ASetchildActive := (Message.cmdtype and $FFF0) <> SC_MAXIMIZE; end; AIconButtonUsed := ((Message.cmdtype and $FFF0)= SC_RESTORE) or ((Message.cmdtype and $FFF0)= SC_MAXIMIZE); Içi déclencher votre événement end; inherited; // Inherited pour que le message soit traiter end;
Salut!
Il suffit de connaître l'handle de la form que l'on souhaite traîter.
La solution la plus simple selon moi, est de vérifier l'état de IsIconic et IsZoomed.
Exemple, j'éxécute NotePad et je récupère son handle.
Puis je fais la comparaison de l'état dans un timer :A noter que l'on peut aussi obtenir les dimensions de cette fenêtre avec GetWindowRect.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Var MyHandle: Hwnd; mini, maxi: Boolean; {----------------------------------------------------------------} Procedure TForm1.FormCreate(Sender: TObject); Begin ShellExecute(Handle, '', 'Notepad.exe', '', '', 1); Sleep(500); MyHandle := GetForeGroundWindow; FormStyle := fsStayOnTop; End; {----------------------------------------------------------------} Procedure TForm1.Timer1Timer(Sender: TObject); Begin If (mini <> IsIconic(MyHandle)) Or (maxi <> IsZoomed(MyHandle)) Then Begin MessageBeep(0); mini := IsIconic(MyHandle); maxi := IsZoomed(MyHandle); If (mini) Then Label1.Caption := 'La fenêtre est minimisée' Else If (maxi) Then Label1.Caption := 'La fenêtre est maximisée' Else Label1.Caption := 'La fenêtre est restaurée'; End; End; {----------------------------------------------------------------} End.
![]()
Partager