2 p'tites questions... [Delphi] - Programmation
Marsh Posté le 04-08-2001 à 21:44:51
1) je crois qu'il y a une fonction IsIconic dans les API Win32 qui te dit ca...
sinon, tu peux essayer d'intercepter le message WM_SYSCOMMAND et de tester le type:
Code :
|
2)si tu passes par des variables pour stocker tes fenetres, il te suffit juste de tester si la variable est assignée:
Code :
|
si tu les crees en dynamique, c'est un peu plus penible et je vais attendre de voir si la reponse precedente te suffit avant de me lancer dans un post de 3 kms
Marsh Posté le 04-08-2001 à 21:56:12
Pour la première question c'est nickel sauf que je ne sais pas à quoi sert le "Inherited" ???
Pour la deuxième, je ne passe pas par des variables. Voila, ce que je fais pour afficher ma fenêtre :
Code :
|
Merci JWhy
Marsh Posté le 04-08-2001 à 22:08:34
J'avais oublier de préciser, y a une p'tite subtilité : je voudrais que juste une fenêtre se minimise et pas les autres ouvertes...
Marsh Posté le 04-08-2001 à 22:16:44
pour le (1) en fait, le test que tu dois faire c'est :
if (Msg.CmdType and $FFF0 = SC_MINIMIZE) then
concernant le inherited:
Ta TForm1 herite de TForm qui herite de TCustomForm qui definit WMSysCommand avec a l'interieur plein de trucs pour gerer l'alignement des fenetres, etc...
Quand tu redefinis WMSysCommand dans ta TForm1, le WMSysCommand de la TCustomForm ne vas plus etre appelé (puisque tu le redefinis !) et tu va donc intercepter tous les messages WM_SYSCOMMAND (par ex: SC_MAXIMIZE, SC_MINIMIZE, SC_MOVE, etc...)
dans l'exemple donné, tu ne geres que le type SC_MINIMIZE...
donc tous les autres messages vont passer a la trappe.
Le fait de mettre "inherited" a la fin va appeler la methode WMSysCommand de la classe dont tu herites (TForm en theorie, mais vu que WMSysCommand n'y est pas defini, ca va appeler le WMSysCommand de TCustomForm)
donc, dans l'exemple, tu vas faire ton test, faire ce que tu as a faire dans le cas ou le message est SC_MINIMIZE et grace au inherited, appelé le gestionnaire de WMSysCommand defini dans la classe parente, ce qui va te permetre de gerer le comportement standard de SC_MINIMIZE ainsi que tous les autres messages !
si tu as une version pro ou entreprise de Delphi (avec le source), tu peux jeter un oeil a l'unite Forms, procedure TCustomForm.WMSysCommand
pour le point (2), tu as dans les sources de ton projet:
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
qui t'affiche la form principale, c'est ca ?
et tu veux afficher une (ou n) formX (sur un click de bouton par ex.) et savoir si elles sont presentes ou non... c'est ca ?
Marsh Posté le 05-08-2001 à 19:27:28
Bendes a écrit a écrit : Pour la deuxième, je ne passe pas par des variables. Voila, ce que je fais pour afficher ma fenêtre :
|
Code :
|
Marsh Posté le 05-08-2001 à 19:48:34
Merci JWhy: j'ai tout compris, c'est très logique en fait...Pour la deuxième question, c'est ça que je voudrais arriver à faire.
antp: J'essaye ton truc directement et merci...
[edtdd]--Message édité par Bendes--[/edtdd]
Marsh Posté le 04-08-2001 à 20:41:15
- Y a-t-il moyen de détecter la diminution d'une fenêtre particulière, j'arrive à détecter la diminution de l'application (fenêtre principale du programme) mais pas d'un écran précis ???
- J'voudrais pouvoir savoir si une fenêtre est affichée ou non. Mon problème est que je créé les fenêtres quand je le veux et non au chargement de l'application...De ce fait, je ne peux pas accèder aux propriétés de la fenêtre !