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

  FORUM HardWare.fr
  Programmation
  Delphi/Pascal

  Fermer immédiatement une fenetre modale

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Fermer immédiatement une fenetre modale

n°1391934
el zozo
Stroumf Grognon
Posté le 21-06-2006 à 09:36:22  profilanswer
 

Alors voila : J'ai une fenetre principale qui appele une fenetre modale perso.
MaFenetreModale := TMaFenetreModale.create;
MaFenetreModale.ShowModal;
 
 La fenetre modales est composée d'un CheckBoxList et d'un bouton de validation.
 La CheckBoxList est remplit à la création. Il se peut alors qu'elle n'ai aucun élément.  
dans ce cas, je souhaiterait fermer immédiatement la fenetre.
  Mais j'y arrive pas  :cry:  
  J'ai essayé de mettre "ModalValue=MrOK" ou "self.Close" dans l'évenement "OnShow", mais ça n'a aucun effet.
 
  Quelqu'un à une idée?

mood
Publicité
Posté le 21-06-2006 à 09:36:22  profilanswer
 

n°1393346
Mahoe
Posté le 23-06-2006 à 00:27:05  profilanswer
 

Bonjour,
 
Il est normal que celà se produise car tu lance deux instructions opposées. Il y a deux façons que je vois pour régler ton problème
 
La première consiste à te créer une fonction public que tu appelle juste après la création et qui te retourne le nombre d'éléments dans ton checkboxlist et tu lance ou non le modal selon le nombre retourné
 
Ex :  
 
MaFenetreModale := TMaFenetreModale.create; // création de ton modal
if MaFenetreModale.PossedeElement then // vérifie si des éléments sont présents
  MaFenetreModale.ShowModal // si oui, ouvre si éléments
else
  MessageDlg('Pas d''éléments, fenêtre fermée',mtError,[mbOk],0); // si non, affiche un message d'erreur
 
La deuxième solution (que j'aime moins) s'applique si tu veux absolument voir qu'il y ai eu une fenêtre s'afficher et se fermer. Il te suffit de mettre un timer qui est activé au show de ta fiche et qui ferme la fenêtre s'il n'y a pas d'éléments. Bien sûr, il faut désactiver le timer après la première vérification si tu ne veux pas pomper du cpu pour rien. Ce n'est pas une belle solution, je te conseille l'autre mais elle peut te dépanner si tu doit voir la fenêtre
 
J'espère t'avoir aider

n°1393406
el zozo
Stroumf Grognon
Posté le 23-06-2006 à 07:24:50  profilanswer
 

Je croi que je vait retenir le 1ere solution.
 
 :lol: En fait, j'avais deja essayé la 2nde, mais sans desactiver le timer apres la 1ere verif (puisque de toute facon, je ferme). Manque de bol, la commande close n'etait pas prise en compte au falacieu pretexte qu'il y avait une impresion en cour (ma fenetre sert à choisir quels document imprimer, dans ce cas, toutes les impression etant obligatoire, il sufit d'imprimer des la creation)
Resultat : il a lancé en boucle l'impression.   :pt1cable:  
La pov bécane ne repondant absolument plus (un p'tit bi-proc avec 1Go de RAM), j'ai du retirer la prise. Il y avais 300 fichers dans le spooler  :cry:  
Bah... ils ont l'habitude. La veille, j'avais éffacé la base de prod  :sol:

n°1393410
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 23-06-2006 à 07:33:49  profilanswer
 

el zozo a écrit :


La pov bécane ne repondant absolument plus (un p'tit bi-proc avec 1Go de RAM), j'ai du retirer la prise. Il y avais 300 fichers dans le spooler  :cry:  
Bah... ils ont l'habitude. La veille, j'avais éffacé la base de prod  :sol:


si tu avais utilisé un thread pour ton impression, tu n'aurais pas eu le souci... et je sais pas si t'es au courant, mais quand une tache part en couilles, tu peux la stopper avec le gestionnaire de taches, c'est moins violent que débrancher la prise [:mlc]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1393421
el zozo
Stroumf Grognon
Posté le 23-06-2006 à 09:44:31  profilanswer
 

Harkonnen a écrit :

si tu avais utilisé un thread pour ton impression, tu n'aurais pas eu le souci... et je sais pas si t'es au courant, mais quand une tache part en couilles, tu peux la stopper avec le gestionnaire de taches, c'est moins violent que débrancher la prise [:mlc]


Ben non :D Y'avais vraiment plus rien qui répondait  [:alph-one] M'est avis que je suis tombé sur un driver d'imprimante méchant  [:calimero]
M'fin bon... On est un peu en mode 36.15 mylife, là ;-) Un p'tit flag pour pas lancer 2 fois l'impression et le monde est sauvé  [:gijar]


Message édité par el zozo le 23-06-2006 à 09:46:54
n°1394154
KangOl
Profil : pointeur
Posté le 24-06-2006 à 14:47:17  profilanswer
 

sinon tu redéfinis le constructeur de ta fenetre et celui-ci renvoi une exception s'il n'y a rien a imprimer :o
 
je trouve ca nettement plus propre :)


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

  Fermer immédiatement une fenetre modale

 

Sujets relatifs
[ Programmation Windows ] Placement fenetre comme la loupeJava et fenêtre dos
[JS] Accéder à une fenêtre déjà ouverte ?fermer une fenetre
Pleine fenetre sur navigateurs windows[Appli Graph] Méthodes pour afficher du contenu au sein d'une fenêtre
Fermer un programme avec un VBS ou autrePropagation de message aux enfants d'une fenetre [MFC]
ajouter une fenetre à une application win32 console ? 
Plus de sujets relatifs à : Fermer immédiatement une fenetre modale


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