OcHre
Messages postés44Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention26 avril 2008
-
16 déc. 2006 à 15:10
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 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).
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 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.
OcHre
Messages postés44Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention26 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 :/
OcHre
Messages postés44Date d'inscriptionmercredi 23 mars 2005StatutMembreDernière intervention26 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 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.
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 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.