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
Version imprimable
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
Désolé mais comprends pas la question
Salut
OnResize?
Bonjour,
vous pouvez utiliser le message "WMSysCommand" pour vous créer des événements OMinimize, OnMaximize etc..
Code:
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:
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.
http://sub0.developpez.com/tag.png