WindowState

Résolu
OcHre Messages postés 44 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 26 avril 2008 - 16 déc. 2006 à 15:10
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 - 18 déc. 2006 à 18:41
Salut, je poste ce message parceque j'ai quelques problemes concernant WindowState à savoir que ma Form principale renvoie toujours wsNormal meme lorsque celle-ci est couchée...Voila mon code qui devrait s'executer:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if form1.windowstate=wsMinimized then
begin
flashwindow(application.handle,true);
exit;
end;
timer1.enabled:=false;
end;

Sauf que rien ne se passe, à l'inverse si j'essaye avec:

if form1.windowstate=wsNormal then

alors le code s'execute (sachant que le timer est activé une fois ma fenetre couchée)...
J'espère avoir été assez clair et remercie par avance ceux qui pourront m'aider (pour info je suis sur Delphi 7).

6 réponses

florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
16 déc. 2006 à 17:55
Salut,

Ceci est du à un petit problème dans la conception de Delphi.
En fait, si tu réduis la fenetre principale de l'application, les propriétés WindowState de toutes les fiches reste nt inchangées.

Je ne sais pas ce que tu comptes faire avec cette propriété, mais à ma connaissance, le seul moyen est de répondre à l'évenement OnMinimize et OnRestore d'un TApplicationEvents (palette "supplément") et donc de maintenir une variable Boolean pour savoir si la fenêtre principale est minimisée ou non.




Bonne chance,
Flo

PS: Même s'il est vrai qu'ici, le "exit" est un peu crade, il ne faut pas non plus chercher à l'éviter à tout prix. Il y a des fois où c'est réellement utile.
3
bv94 Messages postés 40 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 16 décembre 2006 1
16 déc. 2006 à 17:20
Bonsoir,

mis à part le exit qui n'est pas très propre (utilise un simple else), le code devrait fonctionner. Ton soucis est ailleurs...


BV94
0
OcHre Messages postés 44 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 26 avril 2008
16 déc. 2006 à 17:34
Merci de ta reponse mais je ne pense pas que le probleme soit ailleurs, j'ai essayé ca :

procedure TForm1.Timer1Timer(Sender: TObject);
begin
if form1.windowstate=wsNormal then
begin
showmessage('Normale');
end;
if form1.windowstate=wsMinimized then
begin
showmessage('Couchée');
end;
end;

Or il m'affiche quand meme le message Normale meme quand ma fenetre est couchée :/
0
OcHre Messages postés 44 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 26 avril 2008
16 déc. 2006 à 18:27
Merci pour ta réponse je commencais à devenir nutz....
En l'occurence ici c'est juste pour faire clignoter la fenetre principale quand on recoit un message privé et que celle-ce est couchée (je code un client IRC basique).
Sinon je ne savais pas qu'exit était particulierement crade, j'essairais de l'utiliser avec parcimonie.
Merci encore.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
18 déc. 2006 à 09:11
sans vouloir rentrez dans un débat, "exit" n'est pas "crade". mais certains personnes, l'utilisent dans certain cas ou c'est pas très propre. Cela ne veut pas dire qu'il ne faut pas s'en servire. ça veux juste dire, qu'il faut s'en servir correctement. (comme toute les autre fonction d'ailleur)

Par exemple, cela reste un function que j'utilise beuacoup pour gerer des cas particulier/d'erreur, surtout dans des traitement complexe.

bon code,

Loda
<hr size="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
0
florenth Messages postés 1023 Date d'inscription dimanche 1 août 2004 Statut Membre Dernière intervention 17 août 2008 3
18 déc. 2006 à 18:41
Tout à fait d'accord avec Loda sur l'emploi du *exit* Cela reste, ni plus ni moins qu'une instruction, tout comme *break* ou *continue* et qui ne sont absolument pas crades à l'emploi dans la majeure partie des cas. C'est même plutôt le contraire puisqu'ils améliorent la lisibilité.

Il est particulièrement pratique lorsqu'il évite de longues contitions if...then qui prendraient toute la procédure. Surtout quand il est utlisé conjointement à des blocs try...finally.

Par contre, dans certains cas, son usage est un peu abusé (voir le premier code de OcHre), surtout lorsqu'on peut facilement le remplacer par des if...then...else if...then...else.

Par contre, et rien à voir, l'utilisation des *labels* et *goto* est complètement obsolète.

++
0
Rejoignez-nous