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 Tue 19 August 2008 16:03

magali di salvo
Participant actif
Lieu: Lyon
Date d'inscription: 21 Sep 2005
Messages: 70

[mapbasic] boucle dans une boite de dialogue

bonjour,
je me retrouve coincée avec mapbasic V9 pour générer un dialogue à partir d'un fichier de paramètre.
je voudrais réaliser un dialogue avec des cases à cocher par thème (znieff, natura2000, appb, etc...)
la liste des thèmes est issue d'un fichier paramètre de n enregistrements
(ce que je voudrais, c'est si j'ajoute un enregistrement, ça modifie en automatique ma boite de dialogue pour que je n'ai plus à éditer mon programme mapbasic)

j'ai donc fait un truc du style :

Code:

    
n = TableInfo(liste, TAB_INFO_NROWS)

Dialog 
 Title "Cocher le ou les thèmes à traiter : "
        
    for i = 1 to n
    fetch rec i from liste
    id_boite = liste.COL1
    nom_boite = liste.COL2

    Control CheckBox 
    Position 10,i*20 Width 150
    ID id_boite 
    Title nom_boite 
    Value FALSE
    next
    
    Control OKButton
    Position 10, 20*n Width 50 
    Title "OK" 
    Calling okhandler 

            Control CancelButton
           Position 80, 20*n Width 50 
          Title "Annuler"

le probleme est que visiblement mapbasic refuse les boucles dans les dialogues ? (erreur à la compilation : invalid dialog command)
je pensais utiliser une commande du style "alter dialog" mais l'aide indique que cette fonction n'existera plus après la V9 et en plus je suis sensés utiliser un ID de dialogue que je ne sais pas comment récupérer...

quelqu'un saurait-il comment faire pour générer un dialogue à partir d'un fichier de paramètre en automatique ?
merci par avance

magali di salvo, diren rhone alpes

Hors ligne

 

#2 Tue 19 August 2008 17:17

Maurice
Membre
Lieu: Montpellier
Date d'inscription: 5 Sep 2005
Messages: 5331

Re: [mapbasic] boucle dans une boite de dialogue

Bonjour
C'est Alter MapInfoDialog qui n'existera plus (il permettait de bidouiller les dialogues standards de MI...bien utile et expliqué ici!!) et pas Allter Dialog qui lui n'a jamais existé smile
Pour le problème: pas de boucle possible dans un dialogue ! Mais la piste serait peut être d'utiliser des boucles pour construire une chaine de caractères cmd_dlg, que l'on exécute ensuite par un run command cmd_dlg
A tester

Hors ligne

 

#3 Tue 19 August 2008 17:48

Miss T.
Participant assidu
Lieu: En pleine amazonie...
Date d'inscription: 17 Oct 2005
Messages: 294

Re: [mapbasic] boucle dans une boite de dialogue

En effet, MapBasic ne prend pas les boucles dans la configuration du dialog.

La forme type du code pour vous c'est (je vous conseille de faire une zone de liste à choix multiple, c'est bien plus simple à gérer):

Code:

'***********************************************************
' A déclarer en variable globale pour ne pas avoir à refaire la liste dans chaque procédure qui l'utilise:
Dim Liste_de_Choix() as string  


'***********************************************************
Sub Lauch_config
    Redim Liste_de_choix(TableInfo(liste, TAB_INFO_NROWS))

    for i = 1 to n
        fetch rec i from liste
        Liste_de_choix(i) = liste.COL2
    next

    Dialog 
         Title "Cocher le ou les thèmes à traiter : "
    Control MultiListBox
        Position 10 Width 150 Height 100
        ID 3000 
        Title from variable Liste_de_choix() 
    Control OKButton
        Position 10, 120 Width 50 
        Title "OK" 
        Calling okhandler 
    Control CancelButton
            Position 80, 120 Width 50 
        Title "Annuler"

End sub

Pour récupérer les valeurs:

Code:

'***********************************************************
Sub okhandler 
     Do        'pour toutes les lignes sélectionnées
        Choix = ReadControlValue(3000)    ' on choppe le numéro de la ligne qui correspond au numéro dans la liste Liste_de_choix()
        If Choix <> 0 then    ' (si le numéro de la ligne = 0, c'est qu'on a fini de parcourir les lignes sélectionnées)
             Intitulé_Choix = Liste_de_choix(Choix)
                     '.... Ce que vous avez à faire pour chacun des choix...
        else
            exit Do 
        end if
    Loop 

    dialog remove

end sub

En espérant que ça vous aide....

Hors ligne

 

#4 Wed 20 August 2008 09:31

magali di salvo
Participant actif
Lieu: Lyon
Date d'inscription: 21 Sep 2005
Messages: 70

Re: [mapbasic] boucle dans une boite de dialogue

Merci à Maurice et à Miss T !
effectivement, utiliser une multilistbox est beaucoup plus pratique ! ça marche !

encore merci

magali di salvo diren Rhône-Alpes

Hors ligne

 

#5 Thu 21 August 2008 15:21

olivier Dumas
Participant occasionnel
Date d'inscription: 11 Sep 2007
Messages: 26

Re: [mapbasic] boucle dans une boite de dialogue

Je pense qu'il faut utiliser un  Control MultiListBox  pour gérer ce type de problématique.

Hors ligne

 

Pied de page des forums

Powered by FluxBB