#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 sub
Bonne 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