Gambas France BETA


Pas de compte ? Incription

surveiller la fermeture d'une forme

1
AuteurMessages
jibi#1 Posté le 25/8/2011 à 16:40:03
codergambas.jimdofree.comBonjour à tous

public sub form_open()

instruction test
si non vers ouverture d'une form2

MAIS la suite des instructions ne peut être lu tant que la form2 n'a pas été refermée
end

A ce jour j'utilise timer_Timer pour attendre la fermeture de la form2 et continuer la lecture du code
mais ca me plait pas trop!

n'existe il pas quelque chose qui ferait patienter le temps que la form2 se soit refermée?
je pensais à watcher mais je n'ai pas compris son fonctionnement, et je n'en ai pas trouvé d'exemple


quelqu'un aurait une idée?

Debian GNU/Linux 11 64-bit

Prokopy#2 Posté le 25/8/2011 à 17:24:38
Kinder PinguiSalut jibi,

Avant toute chose, je te demanderai de bien vouloir mettre en forme tes codes dans tes prochains messages, c'est bien plus lisible (surtout avec la nouvelle version qui colore le code ;) ). Tu n'as qu'à sélectionner ton code et cliquer sur l'icône "Gambas" juste au-dessus de l'éditeur.

Pour ton histoire, il y a plusieurs solutions (comme tout le temps), je te propose la mienne.
À ta place, je créerais une fonction Form2Fermee( ) (ou truc du genre) qui serait appelée par ton Form2 lors de l'évènement Close.

Mais un code vaut mieux que des tas d'explications. :)

Form1 :

1
2
3
4
5
6
7
PUBLIC SUB Form_Open()
Form2.Show()
END

PUBLIC SUB Form2Fermee()
PRINT "La form 2 est fermée, on continue les opérations ..."
END


Form2 :
1
2
3
PUBLIC SUB Form_Close()
Form1.Form2Fermee()
END
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand ça marche mais qu'on ne sait pas pourquoi.
Quand la théorie rejoint la pratique, rien ne fonctionne et on ne sait pas pourquoi.
jibi#3 Posté le 25/8/2011 à 20:53:25
codergambas.jimdofree.commerci Prokopy

effectivement c'est une des méthodes que j'avais essayée mais en vain ! cela ne marchait pas
Au vu de ta réponse j'ai insisté un peu plus et j'ai vu ou je me plantais
1
2
3
PUBLIC SUB form2_close()
form1.form2fermee
END

ne fonctionne pas

Par contre :
1
2
3
public_sub form_close
form1.form2fermee
END

cela fonctionne ==> donc il ne faut pas mettre le nom de la form mais juste Form_Close()


J'ai une deuxième question
dans :
1
2
3
4
PUBLIC SUB Form1_open()
instruction ..
fonctionblabla()' ou form2.show()
END


en faite la form1 ne s'affiche que lorsque la fonctionblabla est finie d'être lue ou la form2 s'est affichée , aussi pour que la form s'ouvre avant la fin de la fonctionblabla ou l'ouverture de la form2, là encore j'ai mis un timer

1
2
3
4
5
PUBLIC SUB Form_open()
instruction ..
timer1.start()
suite instruction....
END


1
2
3
4
5
6
7
8
PUBLIC SUB _timer1_timer()
DIM nbre AS INTEGER
INC nbre
IF nbre = 2 THEN
timer1.stop
fonctionblabla() ou form2.show
ENDIF
END


mis à part a configurer le prog différemment, est ce possible avec autre chose que ce timer?



Debian GNU/Linux 11 64-bit

jibi#4 Posté le 26/8/2011 à 11:01:00
codergambas.jimdofree.comben tout compte fait j'ai reconfiguré le code différemment => plus besoin de timer ou d'attendre quoique ce soit !
a plus
Debian GNU/Linux 11 64-bit

gambix#5 Posté le 27/8/2011 à 08:39:25
Faire simple !ce que tu cherche s'appelle modal.

c'est comme la fenêtre d'ouvertiure de fichier par exemple !

1
2
3
4
5
PUBLIC SUB form_open()

Form2.Modal

END


Mais tu va certainement avoir besoin de tester le retour de form2

D'ou dans form2 :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
STATIC PUBLIC Value AS STRING

STATIC PUBLIC FUNCTION Run() AS BOOLEAN

DIM hForm AS NEW Form2
RETURN hForm.ShowModal
END


PUBLIC SUB Bouton_Click()
IF TextBox1.Text = "Blabla" THEN Value = TextBox1.Text
ME.close
END


'**********Form 1**************

PUBLIC SUB Form_Open

IF NOT Form2.Run() THEN

ME.text = Form2.Value

ENDIF

Moins de texte dans une signature c'est agrandir son espace.
1