banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Rencontres QGIS 2025

L'appel à participation est ouvert jusqu'au 19 janvier 2025!

#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

 

Pied de page des forums

Powered by FluxBB