WindowState [Résolu]

OcHre 46 Messages postés mercredi 23 mars 2005Date d'inscription 26 avril 2008 Dernière intervention - 16 déc. 2006 à 15:10 - Dernière réponse : florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention
- 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).
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 16 déc. 2006 à 17:55
3
Merci
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.

Merci florenth 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 121 internautes ce mois-ci

Commenter la réponse de florenth
bv94 40 Messages postés dimanche 2 février 2003Date d'inscription 16 décembre 2006 Dernière intervention - 16 déc. 2006 à 17:20
0
Merci
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
Commenter la réponse de bv94
OcHre 46 Messages postés mercredi 23 mars 2005Date d'inscription 26 avril 2008 Dernière intervention - 16 déc. 2006 à 17:34
0
Merci
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 :/
Commenter la réponse de OcHre
OcHre 46 Messages postés mercredi 23 mars 2005Date d'inscription 26 avril 2008 Dernière intervention - 16 déc. 2006 à 18:27
0
Merci
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.
Commenter la réponse de OcHre
cs_Loda 900 Messages postés vendredi 3 novembre 2000Date d'inscription 30 juillet 2009 Dernière intervention - 18 déc. 2006 à 09:11
0
Merci
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.
Commenter la réponse de cs_Loda
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 18 déc. 2006 à 18:41
0
Merci
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.

++
Commenter la réponse de florenth

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.