#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 OPENZONEQuelqu'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 subEnsuite 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 GETZONEHors 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 ![]()
JF
Hors ligne


