#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é
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