Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2887 connectés 

  FORUM HardWare.fr
  Programmation

  [Delphi] 2 p'tites questions...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Delphi] 2 p'tites questions...

n°51080
Bendes
Posté le 04-08-2001 à 20:41:15  profilanswer
 

- 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 !

mood
Publicité
Posté le 04-08-2001 à 20:41:15  profilanswer
 

n°51085
JWhy
je peux plier (héhé)
Posté le 04-08-2001 à 21:44:51  profilanswer
 

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 :
  1. ----------------------------------------
  2. type
  3.   TForm1 = class(TForm)
  4.     procedure WMSysCommand(var Msg: TWMSysCommand); message
  5.     WM_SYSCOMMAND;
  6.   end;
  7. procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
  8. begin
  9.   if Msg.CmdType = SC_MINIMIZE then
  10.   begin
  11.     // trucs a faire si la fenetre est minimisée
  12.   end; 
  13.   Inherited;
  14. end;
  15. ----------------------------------------


 
 
2)si tu passes par des variables pour stocker tes fenetres, il te suffit juste de tester si la variable est assignée:

Code :
  1. ----------------------------------------
  2.   if Assigned(FMaFenetre) then
  3.     // ok, ma fenetre est presente, je peux faire des trucs
  4.     FMaFenetre.ShowModal; 
  5. ----------------------------------------


 
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 ;)


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°51087
Bendes
Posté le 04-08-2001 à 21:56:12  profilanswer
 

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 :
  1. Application.CreateForm(TForm, Form);
  2. Form.Show;


 
Merci JWhy

n°51090
Bendes
Posté le 04-08-2001 à 22:08:34  profilanswer
 

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...

n°51091
JWhy
je peux plier (héhé)
Posté le 04-08-2001 à 22:16:44  profilanswer
 

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 ?


---------------
www.alliancefrancophone.org ... Home is where the heart is
n°51144
antp
Super Administrateur
Champion des excuses bidons
Posté le 05-08-2001 à 19:27:28  profilanswer
 

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 :
  1. Application.CreateForm(TForm, Form);
  2. Form.Show;






Code :
  1. fenetre_visible:=false;
  2. if Form <> nil then
  3. begin
  4.    if Form.Visible then
  5.       fenetre_visible:=true;
  6. end;


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°51146
Bendes
Posté le 05-08-2001 à 19:48:34  profilanswer
 

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]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Delphi] 2 p'tites questions...

 

Sujets relatifs
[Delphi] jolie jolie designDelphi
delphi et port parallelequestions sur les pop up
[Delphi] ListView[Javascript] Sondage avec plusieurs questions
[Delphi] stabilité..??[DELPHI et ACCESS] problèmes d'accents
[HTML]J'ai une chtites questions, pour webmasters ou connaisseurs htmltuto delphi
Plus de sujets relatifs à : [Delphi] 2 p'tites questions...


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR