Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
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

Printemps des cartes 2024

#1 Fri 18 June 2010 11:28

Simon AILLAUD
Participant occasionnel
Date d'inscription: 11 Jun 2010
Messages: 23

[MapBasic 7.5] PopupMenu & CheckBox

Bonjour,

Dans l'application que j'essaie de développer en MapBasic (j'essaie car je débute!), je propose dans un premier temps à l'utilisateur de sélectionner une zone géographique sur laquelle travailler via une boîte de dialogue et un PopupMenu. (Cette partie fonctionne et ouvre la table correspondante).

Ce que j'aimerais faire, c'est rajouter une petite option via une CheckBox (dans la même boîte de dialogue) permettant d'afficher la carte correspondante.

Avec ma méthode utilisée dans le code, je ne vois pas comment faire. En effet, la boîte de dialogue se trouve dans une fonction qui me retourne la valeur du PopupMenu. Comment puis-je gérer celle de la CheckBox?


Voici mon code actuel :

Code:

Declare Sub Main
Declare Sub OpenZone
Declare Function getZone() As SmallInt


'==================================================================================MAIN

'----------Commentaires sur le module--------------------------------------------------
'Procédure principale
'--------------------------------------------------------------------------------------

Sub Main
    Close All Interactive

    Create Menu "Zone Géo" As
        "Chosir Zone"
            HelpMsg "Choisir la zone géo sur laquelle travailler"
            Calling OpenZone
            
    Alter Menu Bar Add "Zone Géo"
End Sub
'==============================================================================FIN MAIN


'===============================================================================GETZONE

'----------COMMENTAIRE SUR LE MODULE---------------------------------------------------
'Procédure qui permet de choisir la zone sur laquelle on souhaite travailler
'--------------------------------------------------------------------------------------

Function getZone() As SmallInt

    Dim zoneChoisie as String
    Dim affCarte as String

    '----------Boite de dialogue:
    Dialog
        Title "Choix de la zone géographique à représenter"
        Width 220

        Control PopupMenu
            Title "France par Régions;France par Départements;Régions par Départements"
            'Calling verificateur
            ID 1
            Value 1
            Into zoneChoisie
            
        Control CheckBox
            Title "Afficher la carte correspondante"
            ID 2
            Into affCarte

        Control OKButton
            ID 3

        Control CancelButton
            ID 4

    getZone = zoneChoisie

End Function

'===========================================================================FIN GETZONE

'==============================================================================OPENZONE

'----------Commentaires sur le module--------------------------------------------------
'Procédure qui permet d'ouvrir la table Région
'--------------------------------------------------------------------------------------
Sub OpenZone

    Dim N as String
    
    N = getZone()
    
    If N = "1" Then
        Open Table "D:\Mes Documents\MapInfo\Fonds_cartes_mapinfo\Reg.tab" As Regions
    Elseif N = "2" Then
        Open Table "D:\Mes Documents\MapInfo\Fonds_cartes_mapinfo\Dep.tab" As Departements
    End If
    
End Sub
'==========================================================================FIN OPENZONE

Quelqu'un a t il une idée?
Ce code vous semble-t-il correct par rapport à ce que je souhaite faire?
Toutes vos remarques seront les bienvenues pour m'apprendre à faire un joli code en MB^^

Merci.

Hors ligne

 

#2 Fri 18 June 2010 14:18

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: [MapBasic 7.5] PopupMenu & CheckBox

bonjour,

d'abord, je crois que dans ton menu au lieu de "calling OpenZone" tu devrais faire "Calling Dialog" que tu devait mettre en procédure....

Code:

sub dialog

Dialog
        Title "Choix de la zone géographique à représenter"
        Width 220
....
end sub

Ensuite ton Ok button devrait faire "calling OpenZone"

Ensuite ta variable zoneChoisie devrait être déclarer en Global au lieu de dim...donc elle pourra être utiliser dans les 2 sub procedure.

Et donc, N = ZoneChoisie

finalement tu peux enlever la fonction car elle n'est plus utile Function getZone() As SmallInt

Et il te manque un if...j'imagine pour voir si ton check box est coché ou pas

Code:

dim checkbox as integer?
checkbox = readcontrolvalue(2)
if checkbox = 1
....
else
...
end if

Je ne sais pas si checkbox renvoie un integer ou booleen
Voila pour ma part

JF

Dernière modification par jean94 (Fri 18 June 2010 14:20)

Hors ligne

 

#3 Fri 18 June 2010 14:27

Simon AILLAUD
Participant occasionnel
Date d'inscription: 11 Jun 2010
Messages: 23

Re: [MapBasic 7.5] PopupMenu & CheckBox

Merci pour ta réponse, je vais tester tes idées.

Pour info, CheckBox retourne un booléen (logical en MB).

Hors ligne

 

#4 Fri 18 June 2010 14:42

Simon AILLAUD
Participant occasionnel
Date d'inscription: 11 Jun 2010
Messages: 23

Re: [MapBasic 7.5] PopupMenu & CheckBox

Cela ne semble pas marcher.
Lorsque le Ok Button appelle OpenZone, la valeur de la variable zoneChoisie est _NULL_, et ne contient pas la valeur du PopupMenu....

Hors ligne

 

#5 Fri 18 June 2010 15:22

Simon AILLAUD
Participant occasionnel
Date d'inscription: 11 Jun 2010
Messages: 23

Re: [MapBasic 7.5] PopupMenu & CheckBox

Je poste mon nouveau code qui semble marcher correctement.
Cela pourra peut être toujours servir^^

Code:

Sub Main    
    
    Include "C:\Program Files\MapInfo\MapBasic\MAPBASIC.DEF"
    
    Close All Interactive

    Create Menu "Zone Géo" As
        "Chosir Zone"
            HelpMsg "Choisir la zone géo sur laquelle travailler"
            Calling GetZone
            
    Alter Menu Bar Add "Zone Géo"
End Sub
'==============================================================================FIN MAIN


'===============================================================================GETZONE

'----------COMMENTAIRE SUR LE MODULE---------------------------------------------------
'Procédure qui permet de choisir la zone sur laquelle on souhaite travailler
'--------------------------------------------------------------------------------------

Sub GetZone

    Dim zoneChoisie as String
    Dim nomTable as String
    Dim checker as Logical

    '----------Boite de dialogue:
    Dialog
        Title "Choix de la zone géographique à représenter"
        Width 220

        Control PopupMenu
            Title "France par Régions;France par Départements;Régions par Départements"
            ID 1
            Value 1
            Into zoneChoisie
            
        Control CheckBox
            Title "Afficher la carte correspondante"
            ID 2
            Value 0
            Into checker
            Position 5 , 50

        Control OKButton
            ID 3
            Position 145,10

        Control CancelButton
            ID 4
            Position 145,35

    If zoneChoisie = "1" Then
        Open Table "D:\Mes Documents\MapInfo\Fonds_cartes_mapinfo\Reg.tab" As Regions
    Elseif zoneChoisie = "2" Then
        Open Table "D:\Mes Documents\MapInfo\Fonds_cartes_mapinfo\Dep.tab" As Departements
    End If
    
    If checker Then
        Map From TableInfo(0,TAB_INFO_NAME)
    End If
    
End Sub

'===========================================================================FIN GETZONE

Hors ligne

 

#6 Fri 18 June 2010 16:10

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: [MapBasic 7.5] PopupMenu & CheckBox

Bonjour

Si tu veux utiliser ton zone choisi dans une autre sub il faut la déclarer en "Global" si non tu peux faire une ReadControlValue() dans ton autre sub.

Je crois aussi qu'il y a une erreur à ta ligne

If checker then..

sa ne devrait pas etre If cheker = true then ....?

P-e que je me trompe

JF

Dernière modification par jean94 (Fri 18 June 2010 16:14)

Hors ligne

 

#7 Fri 18 June 2010 19:52

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

Re: [MapBasic 7.5] PopupMenu & CheckBox

Errare humanum est jean94:
- le global n'est utile que dans des projets en module. Des Dim avant le Sub main suffisent à ce que les variables ainsi définies soient utilisables dans tous les Sub
- If checker then.. est synonyme de If cheker = true then ... (ou If cheker = 1 then ...)

Hors ligne

 

#8 Fri 18 June 2010 20:08

jean94
Participant assidu
Date d'inscription: 13 Aug 2009
Messages: 436

Re: [MapBasic 7.5] PopupMenu & CheckBox

Bonjour,

Effectivement, or dans mon premier message je lui suggérait de faire 2 module un étant actionner par le Ok buton, un code bien moduler est habituellement plus efficace.

Pour ce qui est tu chercker, je suis heureux de l'apprendre et je me coucherai plus intelligent ce soir tongue

JF

Hors ligne

 

Pied de page des forums

Powered by FluxBB