#1 Tue 21 October 2014 11:02
- Alexandre A
- Participant occasionnel
- Date d'inscription: 21 Oct 2014
- Messages: 11
[MapBasic 9.5] Checkbox pour affichage de cartes
Bonjour à tous, 
Je travaille sur MB à la création d'un petit outil qui permet d'afficher les parcelles d'un cadastre et en plus d'y superposer des cartes de risques naturels. 
L'outil de recherche de parcelle est créé et fonctionnel, il fonctionne via des pop up menus.
A cela j'ai donc souhaité y rajouter quelques checkbox où mes collègues pourront choisir d'y superposer en plus une ou plusieurs cartes de risques naturels. 
Mais, problème, mon code ne fonctionne pas, il n'y a apparemment pas d'erreur dans le code, mais si je coche les checkbox rien ne se passe, les tables ne s'ouvrent pas. A noter que je ne suis clairement pas un expert de MB, j'ai donc sûrement fait des erreurs "grossières"... 
Voici une partie du code, relatif aux checbox (je ne mets que ça car le reste fonctionne) :
Code:
Declare Sub Select_risque
Dim checker_k, checker_l, checker_m As Logical
Control Checkbox 
        Title "Mouvements de terrain" 
        Position 48, 65
        Value 0
        into checker_k
Control Checkbox 
        Title "Inondation par débordement de cours d'eau et/ou ruissellement urbain"
        Position 48, 75
        Value 0
    into checker_l
Control Checkbox 
        Title "Submersion marine"
        Position 48, 85
        Value 0
        into checker_m
Sub Select_risque
Dim checker_k, checker_l, checker_m As Logical
checker_k = readcontrolvalue(2)
if checker_k Then 
Open Table "W:\GEOMATIQUE\......TAB" Interactive
Add Map Auto Layer ......TAB
End If
checker_l = readcontrolvalue(2)
if checker_l Then  
Open Table "W:\GEOMATIQUE\......TAB" Interactive
Add Map Auto Layer ......TAB
End If
checker_m = readcontrolvalue(2)
if checker_m Then 
Open Table "W:\GEOMATIQUE\......TAB" Interactive
Add Map Auto Layer ......TAB
End If
End SubMerci beaucoup!!!
Hors ligne
#2 Tue 21 October 2014 16:49
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic 9.5] Checkbox pour affichage de cartes
Salut et bienvenue,
Il me semble qu'il manque le "handler" (détection de ce que fait ton utilisateur).
Que doit faire ton programme -> dés que ton utilisateur coche la checkbox la carte s'affiche ou il coche les différentes cartes puis il dispose d'un bouton "exe" pour afficher toutes les cartes qu'il a choisies?
Pour plus d'infos voir page 166 dans --> http://www.google.fr/url?sa=t&rct=j … mp;cad=rja
Ou faire une recherche sur "[ Calling handler ] "
A+
Joël
Hors ligne
#3 Wed 22 October 2014 07:15
- Alexandre A
- Participant occasionnel
- Date d'inscription: 21 Oct 2014
- Messages: 11
Re: [MapBasic 9.5] Checkbox pour affichage de cartes
Super je ne connaissais pas la "bible" du Mapbasic 
Mon programme doit permettre que l'utilisateur coche les cartes qu'il choisit, puis effectivement il y a un bouton exe qui lance la procédure pour l'affichage d'une ou plusieurs de ces cartes.
Je vais tester le calling handler
Hors ligne
#4 Wed 22 October 2014 07:22
- Alexandre A
- Participant occasionnel
- Date d'inscription: 21 Oct 2014
- Messages: 11
Re: [MapBasic 9.5] Checkbox pour affichage de cartes
Je viens de trouver le même manuel en français :
http://i-signum.com/download/Documentat … erence.pdf
ça peut aider....
Hors ligne
#5 Wed 22 October 2014 09:10
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic 9.5] Checkbox pour affichage de cartes
Une doc qui peut t'être utile aussi:
--> http://georezo.net/jparis/MI_Enviro/Dia … ntrols.zip
Qui se trouve dans cette section du forum --> http://georezo.net/jparis/decharge_liste_doc.htm
A+
Joël
Hors ligne
#6 Wed 22 October 2014 09:28
- Alexandre A
- Participant occasionnel
- Date d'inscription: 21 Oct 2014
- Messages: 11
Re: [MapBasic 9.5] Checkbox pour affichage de cartes
J'avais déjà téléchargé ce doc qui est très bien fait. 
J'ai en partie réussi! Quand on coche les cartes s'affichent. Mais petit problème qui subsiste : elles s'affichent dès qu'on coche la case, est-ce qu'il y a moyen de juste cocher, et ensuite les cartes s’affichent quand on appuie sur le exe?
Effectivement il manquait le calling handler, et le readcontrol value n'était pas dirigé vers le bon ID.
Je suis sur la bonne voie 
Voici le nouveau code :
Code:
Declare Sub Select_risque_mvt
Declare Sub Select_risque_ino
Declare Sub Select_risque_sub
Dim checker_k, checker_l, checker_m As Logical
    Control Checkbox
        Title "Mouvements de terrain" 
        ID 4
        Calling Select_risque_mvt
        Position 48, 65
        Value 0
        into checker_k
    Control Checkbox 
        Title "Inondation par débordement de cours d'eau et/ou ruissellement urbain"
        ID 5
        Calling Select_risque_ino
        Position 48, 75
        Value 0
        into checker_l
    Control Checkbox 
        Title "Submersion marine"
        ID 6
        Calling Select_risque_sub
        Position 48, 85
        Value 0
        into checker_m
Sub Select_risque_mvt
Dim checker_k As Logical
checker_k = readcontrolvalue(4)
if checker_k Then 
Open Table "W:\GEOMATIQUE\......TAB" Interactive
Add Map Auto Layer ......TAB
End If
End Sub
Sub Select_risque_ino
Dim checker_l As Logical
checker_l = readcontrolvalue(5)
if checker_l Then  
Open Table "W:\GEOMATIQUE\......TAB" Interactive
Add Map Auto Layer ......TAB
End If
End Sub
Sub Select_risque_sub
Dim checker_m As Logical
checker_m = readcontrolvalue(6)
if checker_m Then 
Open Table "W:\GEOMATIQUE\......TAB" Interactive
Add Map Auto Layer ......TAB
End If
End SubHors ligne
#7 Wed 22 October 2014 14:59
- Spacejo
- Membre
- Lieu: Nancy
- Date d'inscription: 17 Aug 2008
- Messages: 2511
Re: [MapBasic 9.5] Checkbox pour affichage de cartes
peut être en suivant cette piste :
Je ne l'ai pas essayé mais celà te donne une direction à exploiter.
Code:
Declare Sub Ouverture_Tables
Dim checker_k, checker_l, checker_m As Logical
    Control Checkbox
        Title "Mouvements de terrain" 
        ID 4
        Position 48, 65
        Value 0
        into checker_k
    
    Control Checkbox 
        Title "Inondation par débordement de cours d'eau et/ou ruissellement urbain"
        ID 5
        Position 48, 75
        Value 0
        into checker_l
    
    Control Checkbox 
        Title "Submersion marine"
        ID 6
        Position 48, 85
        Value 0
        into checker_m
    Control OKButton
        Title "OK"   
        Position 48,105
        width 60
        Calling Ouverture_Tables
Sub Ouverture_Tables
   checker_k = readcontrolvalue(4)
   checker_l = readcontrolvalue(5)
   checker_m = readcontrolvalue(6)
   if checker_k and checker_l and checker_m Then 
     
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Add Map Auto Layer ......TAB
     ElseIf checker_k and checker_l Then 
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Add Map Auto Layer ......TAB
     ElseIf checker_k and checker_m Then 
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Add Map Auto Layer ......TAB
     ElseIf checker_l and checker_m Then 
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Add Map Auto Layer ......TAB
     ElseIf checker_k Then 
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Add Map Auto Layer ......TAB
     ElseIf checker_l Then 
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Add Map Auto Layer ......TAB
     ElseIf checker_m Then 
     Open Table "W:\GEOMATIQUE\......TAB" Interactive
     Add Map Auto Layer ......TAB
  End If
End SubIl y a certainement plus court et plus simple.
Celà demande à être optimiser 
PS:Je ne sais pas si tu as vu qu'avec l'installation de MapBasic -> dans -> C:\Program Files\MapInfo\MapBasic\Samples\MAPBASIC
Il y a des exemples à décortiquer (.mb)
A+
Joël
Dernière modification par Spacejo (Wed 22 October 2014 15:06)
Hors ligne
#8 Wed 22 October 2014 16:09
- Alexandre A
- Participant occasionnel
- Date d'inscription: 21 Oct 2014
- Messages: 11
Re: [MapBasic 9.5] Checkbox pour affichage de cartes
J'ai réussi!
Merci Joël pour ton aide, ça m'a bien fait avancé
J'ai aussi regardé les samples de MapBasic mais ils sont supers corsés! C'est du haut niveau j'ai l'impression. 
Bref, en fait il ne fallait pas mettre les calling dans chaque fonction Control Checkbox, mais tous les regrouper dans le Control Ok Button, comme ça il lance la procédure au moment de l'exe (en même temps, ça parait logique). Ton exemple était donc bon, et apparemment pas besoin de faire des "hypothèses" de checbox cochés, comme dans ton exemple, ça à l'air de marcher sans puisqu'il vérifie pour chaque checbox la value et ouvre la table en conséquence.
Donc un grand Merci!
Hors ligne





