#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 subPour 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 subEn 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


