#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
JF
Hors ligne