#1 Fri 04 March 2011 14:59
- ebiseau
- Participant actif
- Date d'inscription: 6 Sep 2010
- Messages: 98
Suppression boite de dialogue
Bonjour,
j'ai écrit un mbx avec des boites de dialogue, quand je clique sur validez l'action demandée se produit mais ma boite de dialogue reste toujours visible à l'écran, comment procéder pour la faire disparaitre ?
Exemple :
dialog
control statictext
title "code INSEE"
position 40, 90
id 1
control edittext
position 40, 100
id 2
width 40
calling inactif
control statictext
title "nom de la voie (sans accent)"
position 150, 90
id 3
control edittext
position 150, 100
id 4
width 150
calling inactif
control button
position 120, 130
title "valider"
id 5
calling action
width 40
show
control cancelbutton
title "quitter"
position 180, 130
width 50
id 6
show
end sub
Merci d'avance :-)
Hors ligne
#2 Fri 04 March 2011 15:17
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: Suppression boite de dialogue
Bonjour,
Il suffi d'ajouter la commande "dialog remove" avant ton end sub
Or, si tu as des boites de dialogue successives il ne sera pas possible de procéder ainsi. Il te faudra passer par des fonctions qui sont très efficaces.
Dans le cas d'une fonction, le dialogue disparaît une fois que la valeur de la fonction est retournée.
JF
Hors ligne
#3 Fri 04 March 2011 15:31
- ebiseau
- Participant actif
- Date d'inscription: 6 Sep 2010
- Messages: 98
Re: Suppression boite de dialogue
J'ai effectivement des boites de dialogue successives, comment se présentent ces fonctions ?
merci
Hors ligne
#4 Fri 04 March 2011 16:08
- jean94
- Participant assidu
- Date d'inscription: 13 Aug 2009
- Messages: 436
Re: Suppression boite de dialogue
Voici un exemple plus complet et élaboré que tes besoins
http://georezo.net/forum/viewtopic.php? … e+dialogue
poste #21
Voici un code adapté
Ce qu'il faut comprend c'est que tu as une première sub qui gère les boîtes de dialogues et les fonctions, une fonction qui présente la boite de dialogue et une sub qui vient lire les valeurs.
Code:
declare sub dialog_manager ' Controle l'interaction entre les dialog (aller-retour
declare Function fdialog1() as string ' Le dialog comme tel en fonction
declare sub CreateFill1 ' Une sub qui prend les valeurs du dialogue pour mettre dans une variable
dim button_id as smallint
dim dialog_Counter as smallint
dim ControlContainer(2) as string
dialog_Counter = 1
'**************************************Sub qui gère les boites de dialogues
Sub dialog_manager
CLS
dim tempvar as string
dialog1:
if Dialog_Counter = 1 then
tempvar = fdialog1()
end if
function fdialog1() as string
if Dialog_Counter = 1 then goto dialog1 end if
dialog2:
if Dialog_Counter = 2 then
tempvar = fdialog2() '' Ta deuxième boite
end if
function fdialog2() as string
if Dialog_Counter = 2 then goto dialog2 end if
if Dialog_Counter = 10 then
Call Annule ' pas déclaré ici
exit sub
end if
end sub
'************************Première fonction
function fdialog1() as string
dialog
control statictext title "code INSEE" position 40, 90 id 1
control edittext position 40, 100 id 2 width 40
control statictext title "nom de la voie (sans accent)" position 150, 90 id 3
control edittext position 150, 100 id 4 width 150 Calling CreateFill1
control button position 120, 130 title "valider" id 5 calling action width 40 show
control cancelbutton title "quitter" position 180, 130 width 50 id 6 show
if commandinfo(CMD_INFO_DLG_OK) = False and button_id <> 5 then Dialog_Counter = 10 end if ' si l'utilisateur annule
fdialog1 = "text non significatif" 'texte bidon pour finir la fonction et passer à la sub si l'utilisateur appuie sur valider
end function
'*****************************sub qui vient mettre les valeurs dans une variable
sub CreateFill1 'Met à jour une variable qui contient les valeurs des boites de text dans ta fonction
button_id = TriggerControl() 'Identifie le bouton appuier pour aller d'un dialog a l'autre
ControlContainer(1) = ReadControlValue(2)
ControlContainer(2)= ReadControlValue(4)
dialog remove
If button_id = 5 then 'Utilise le Trigger pour vérifier si le dialogue avance ou recule dans le dialog_manager
Dialog_Counter = Dialog_Counter + 1 '-1 si l'on veut gérer un retour en arrière
end if
End subBonne chance
JF
Dernière modification par jean94 (Fri 04 March 2011 16:21)
Hors ligne
#5 Mon 07 March 2011 09:28
- ebiseau
- Participant actif
- Date d'inscription: 6 Sep 2010
- Messages: 98
Re: Suppression boite de dialogue
Merci beaucoup Jean pour tes réponses :-)
Hors ligne


