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

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

Merci 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 smile

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 smile

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 Sub

Hors 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 Sub

Il y a certainement plus court et plus simple.
Celà demande à être optimiser wink
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

 

Pied de page des forums

Powered by FluxBB