Gambas France BETA


Pas de compte ? Incription

Difficultés pour fermer un formulaire...

1
AuteurMessages
Foromus#1 Posté le 21/4/2014 à 17:01:59
Bonjour à tous,

Voilà plusieurs jours que je coince là-dessus...
Pour faire simple :
Mon projet a pour but d'afficher des caractères (exo de mémorisation), et j'ai trois formulaires suivant ce que je veux faire. Plus un formulaire d'entrée, ou d’accueil, lequel est censé servir de relais, au cas où l'on souhaite passer du formulaire 2 vers le 3 ou autre, auquel cas, j'ai décidé de repasser systématiquement par l'entrée, car "en direct", il y avait des soucis... Malheureusement, même en "indirect", il y a aussi des soucis...
Supposons que j'arrête le déroulement par "MonFormulaire3.Close", et que j'appelle ensuite "MonFormulaireEntree.Show". Rien d'extraordinaire me direz-vous, mais pourtant, ça coince, par moments. En fait, il semblerait que, avant que la feuille soit totalement fermée, il reste des procédures à terminer, et comme j'ai des boutons, listbox, et autres qui sont affichées ou non, enabled ou disabled, je me retrouve avec des contrôles plus ou moins bloqués, en particulier le bouton de commande dans sa fonction "Jouer.SetFocus" (en attendant de cliquer dessus, ou de taper Return, puisqu'il a le focus). Il y a aussi un autre endroit où ça se passe mal, mais c'est plus rare. J'ajoute que, par intérêt, j'ai aussi une option "Automatique", ce qui fait que quand un affichage est effectué un certain temps, il est remplacé automatiquement par un autre (toujours aléatoires), sans avoir besoin de cliquer sur "Jouer".
Donc, j'ai un peu tout essayé, et après moult essais et avoir flanqué des drapeaux un peu partout, j'arrive à un certain résultat, mais c'est vraiment lourd, et je n'ai pas encore fait suffisamment de test pour savoir si c'est vraiment sûr maintenant.
Cela dit, n'y aurait-il pas une commande magique genre "Kill.ToutLeToutim", bref, le genre de truc qui me mettrait tout à zéro dans le formulaire et me permettrait d'utiliser Close, sans aucune rancune ni quelconque rébellion ?
Bon, je conçois que ma question est peut-être assez délicate à appréhender sans avoir le code sous les yeux, cela dit, bien qu'il n'y ait rien de secret ni d'extraordinaire dans mon truc, je n'aime pas trop publier ma prose, et à la limite, je préfère des pistes où creuser plutôt qu'une solution à un problème que je n'arrive pas à résoudre (qu'on veuille bien me pardonner ce petit côté "vanité"...)

Merci de votre intérêt pour la chose !

Ps : Autre : A un moment donné, suite à faute de frappe, je me suis retrouvé avec un double de l'éditeur ... sans savoir pourquoi (deux fenêtres, l'une au-dessus, l'autre en-dessous). Après fermeture de Gambas puis réouverture, j'ai retrouvé une fenêtre normale et entière...

Reivillo#2 Posté le 21/4/2014 à 20:24:58
C' est ici, et nul part ailleurs. « Et pis c'est tout ! »Bonsoir Foromus.

j'ai trois formulaires suivant ce que je veux faire.

Tes Formulaire sont-ils, Strictement Autonomes ?
Quand tu fermes un Formulaire, es-tu sûre qu'il n'ai pas dedant,
un Control toujours utilisé (Actif) par un autre Formulaire (Caché).

C'est peut-être, une Piste.

Reivillo.


Version LinuxMint 13 (1.6.1-1+maya-mate(32-bit)) LTS Noyau 3.14.33-031433-generic (27-02-2015)
LinuxMint 13 Mate Fr ICI, LinuxMint 17 Mate Fr .
Programmation Gambas3 Installé depuis la Console Terminal avec successivement: Les 3 Lignes sudo en Gras ci-dessous...
sudo add-apt-repository ppa:gambas-team/gambas3
sudo apt-get update
sudo apt-get install gambas3 -y
Gambas3.8.4-57.47 (Mise à Jour Auto via mintupdate le 28-01-2016)
Pour la Doc, c'est vers là: Documentation Gambas3 FR
Foromus#3 Posté le 21/4/2014 à 22:12:24
Bonsoir Reivillo,

En principe, je ne fais pas de choses de haut niveau. En général, je crée un Module, ce qui me permet, en cas de besoin, de créer des variables globales, chose interdite en Gambas. Cela me permet aussi d'y coller quelques procédures ou fonctions qui peuvent servir à plusieurs formulaires, c'est, je pense, le but du jeu. Autrement, mes formulaires sont strictement indépendants.
La solution trouvée - pour l'instant - consiste à différer le Close. J'appelle le nouveau formulaire par un Show, puis je place un Wait 3 (ou 4), et après, je mets mon Close. Comme ça, il a le temps de finir ses petites salades, et le truc est transparent puisque le dernier appelé recouvre le précédent, vu qu'ils ont tous la même taille (une de mes habitudes...).
Cela semble marcher, encore que je complique les choses car je veux enregistrer la config en sortie... Ben oui, pourquoi faire simple ?....
spheris#4 Posté le 22/4/2014 à 21:04:13
Dans le même cas que toi, j'opte pour faire un
1
ME.visible = FALSE
et non un
1
ME.close
.
Ta fenêtre devient transparente et tu peux continuer comme si elle était fermée.
C'est une autre piste.
;)
Foromus#5 Posté le 22/4/2014 à 22:14:52
Bonsoir Spheris,

Une piste, parmi d'autres... Mais là, je n'aime pas trop... J'y avais pensé avec la commande .Hide, ce qui revient au même. Cela dit, elle continue "à tourner", et avec des focus qui se baladent, on ne sait jamais...
A propos de focus, justement, j'ai eu un moment où le programme s'est arrêté, en fait, c'est que, suite à imbibition de certains contrôles, le bouton Quitter s'est trouvé avec le focus justement, et le programme s'est fermé inopinément.
Concernant le mot clé .Me, je reste prudent. Je ne pense pas qu'il ne concerne que la feuille, je pensais qu'il concernait tout contrôle ayant le focus. C'est la raison pour laquelle je ne l'utilise que fort peu, et uniquement dans les Open_Form, là au moins, je suis sûr de mon coup...
Naturellement, je me suis sorti de mon souci, mais au prix d'une lourdeur à mon sens trop pesante, et cela, sans gloire et sans panache !...
Merci de votre coopération à tous.
(Note : je ne considère pas le problème [Résolu] pour l'instant.)
spheris#6 Posté le 22/4/2014 à 23:29:06
...de créer des variables globales, chose interdite en Gambas....


Ah bon? Peux-tu développer cette phrase.. je ne comprends pas bien cette interdiction.
;)
Foromus#7 Posté le 23/4/2014 à 08:41:21
Bonjour Spheris,

N'étant pas spécialiste, j'avais cru comprendre que la chose n'était pas possible en Gambas, à savoir une variable visible par tous les formulaires, alors que je crois me souvenir que c'était possible en VB...
Donc, et en Gambas, je crée un Module, j'y mets mes Public Variable1, Public Variable2, etc, et si j'en ai besoin par ailleurs, dans mes autres formulaire, j'utilise "Module.VariableX", ce qui fait l'affaire.
Mais il paraît que lorsque l'on est un programmeur digne du nom, on n'utilise que très rarement les variables globales, c'est "petit-joueur", tout comme d'utiliser "GoTo"...
Mais bon, il faut aussi savoir estimer ses compétences, surtout quand elles sont modestes...
spheris#8 Posté le 23/4/2014 à 13:51:49
rassure toi.tu n'es pas aussi petit programmeur que tu le pretends.

j'utilise "Module.VariableX",


J'utilise le meme procédé et ça fonctionne très bien.
;)
1