Bienvenue! Inscrivez-vous et rejoignez notre communauté :)
  • Login:

Bienvenue sur Forum SIG - Systèmes d'Information Géographique et Géomatique.

Bienvenue sur le forumSIG. S'il s'agit de votre première visite, assurez vous de faire une recherche préalable dans les FAQ SIG. Vous devez vous inscrire avant de pouvoir poster.

Affichage des résultats 1 à 11 sur 11

Discussion: Fonction listbox

  1. #1

    Date d'inscription
    août 2011
    Messages
    49

    Par défaut Non Résolu : Fonction listbox

    Bonjour,
    Je cherche à paramètrer le plus possible le remplissage de ma base de données sous Mapinfo.
    Il semble possible de créer des zones de liste par exemple pour la table CANALISATION_AEP colonne MATERIAUX avoir une liste déroulante avec PVC FONTE ACIER pour limiter les fautes et autres abréviations.
    J'ai trouvé ceci :

    Code:
    Control listbox
    Position x,y
    Width
    Height
    Id n
    Calling proc_x
    Title "......"
    Title "........;.....;"
    Title from variable tab_élément
    Value i
    Into var_4
    Disable/enable
    Hide/show


    Es ce que cela parle à quelqu'un???
    Dernière modification par Warg ; 10/04/2012 à 10h54.

  2. #2

    Date d'inscription
    mars 2008
    Localisation
    Nancy
    Emploi
    Sans
    Messages
    4 412

    Par défaut

    Oui
    Page 146
    Fichiers attachés Fichiers attachés

  3. #3

    Date d'inscription
    août 2011
    Messages
    49

    Par défaut

    Merci mais même avec ce tutorial ça me pose problèmes!!! Disons que je suis perdue avec les ID, Value

    Grosso modo :
    ma table se nomme = Reseau_AEP
    mon champ se nomme = Materiaux
    ma liste doit contenir = Fonte, PVC, Acier

    si quelqu'un pouvait m'expliquer!

  4. #4
    Modérateur
    Date d'inscription
    décembre 2007
    Localisation
    Paris
    Emploi
    Technicien forestier jojomaticien.
    Organisme
    Un expert forestier
    Âge
    28
    Messages
    784

    Par défaut

    Pouvez vous nous donner la version de MapInfo que vous utilisez?
    A l'avenir penser à mettre la balise devant votre titre.
    Lorsque la plume trouve un peu d'encre, alors le papier s'embellit.
    Je ne traîne pas je modère.
    Respecter les Règles

  5. #5

    Date d'inscription
    août 2011
    Messages
    49

    Par défaut

    Désolée version 10.5

  6. #6

    Date d'inscription
    août 2011
    Localisation
    Paris
    Emploi
    Chargé de mission SIG
    Âge
    30
    Messages
    487

    Par défaut

    Code:
    Include "mapbasic.def"
    Declare Sub ok_sub 'notes values when user clicks OK.
    Declare Sub Main
    
    Sub Main
    
    Dim s_title As String 'the title of the map
    Dim materiaux As SmallInt
    
    Dialog
    Title "Choix matériaux"
    Control ListBox
    Title "Fonte;PVC;Acier”
    Into materiaux
    ID 1
    
    Control OKButton
    Position 5, 35
    Calling ok_sub
    Control CancelButton
    Position 60, 35
    If CommandInfo(CMD_INFO_DLG_OK) Then
    ' ... then the user clicked OK.
    Else
     ... then the user clicked Cancel.
    End If
    End Sub
    
    Sub ok_sub
    ' Here, place code to handle user clicking OK
    End Sub

  7. #7

    Date d'inscription
    août 2011
    Messages
    49

    Par défaut

    je précise que je fais du mapbasic depuis 2 heures de temps.....!!!
    Ce qui est précédé de ' est ce que j'ai à modifier?

  8. #8

    Date d'inscription
    août 2011
    Localisation
    Paris
    Emploi
    Chargé de mission SIG
    Âge
    30
    Messages
    487

    Par défaut

    Citation Envoyé par aurel_heca Voir le message
    je précise que je fais du mapbasic depuis 2 heures de temps.....!!!
    Ce qui est précédé de ' est ce que j'ai à modifier?
    Ah ... maintenant on le sait ! Sinon, je pourrai répondre plus en détail mardi. Si quelqu'un d'autre a du temps, qu'il ne se gêne pas !

  9. #9

    Date d'inscription
    août 2011
    Localisation
    Paris
    Emploi
    Chargé de mission SIG
    Âge
    30
    Messages
    487

    Par défaut

    Avant de commencer un code, il faut bien entendu avoir en tête le rendu final et ce que l'on veut exactement (un cahier des charges en gros). Tout n'est hélas pas possible et pas forcément le plus ergonomique avec Mapbasic bien qu'il rende d'énormes services.

    Pour ton programme, dans le plus simple des cas, il faudra sélectionner le tronçon de réseau et lancer la petite application qui ouvrira le dialogue pour que l'opérateur choisisse la bonne information.

    Explications parties par parties :

    Code:
    Include "mapbasic.def"
    Ligne que j'inclus (et pas que moi) au début du code, cela permet de faire des raccourcis en remplaçant des paramètres par des chiffres (en gros, c'est un fichier qui a d'enregistré tout plein de paramètres)
    (manuel 9.5 page 788)


    Code:
    Declare Sub ok_sub 'notes values when user clicks OK.
    Declare Sub Main
    Les déclarations : on énumère en début de code toutes les procédures (Sub) que le programme contient. ok_sub est le nom de la procédure qui va se lancer lorsque l'utilisateur cliquera sur "ok" mais c'est seulement parce qu'on va le définir dans le code, on peut très bien l'appeler Tartampion mais c'est plus simple et plus parlant.

    Les commentaires en mapbasic se mettent après des quotes '

    Code:
    Sub Main
    Début de la première procédure, qui sera terminée un peu plus bas par le "End Sub". Dans le cas d'une boîte de dialogue, le mieux est que la toute première procédure soit la création d'un bouton dans la barre de menu (ce que l'on ne fait pas ici car vaut mieux attendre que le programme fonctionne parfaitement).

    Code:
    Dim s_title As String 'the title of the map
    Dim materiaux As SmallInt
    En général et préférablement placée au début de la procédure, les déclarations des variables et constantes. Celles qui sont déclarées à l'intérieur d'une procédure, resteront à l'intérieur de celle-ci, déclarée sous forme de Dim (manuel page 254). Celles qui doivent être déclarée pour toutes les procédures doivent l'être à l'extérieur des procédures sous forme de Global (manuel page 323). (j'en parle ici parce que dans le cas d'un Dialogue, ça peut être utile de conserver la valeur d'une variable même lorsque la procédure est terminée).

    Code:
    Dialog
    Title "Choix matériaux"
    Control ListBox
    Title "Fonte;PVC;Acier”
    Into materiaux
    ID 1
    
    Control OKButton
    Position 5, 35
    Calling ok_sub
    Control CancelButton
    Position 60, 35
    Le code de la boîte de dialogue (manuel page 246) qui commence par Dialog et généralement on lui donne un titre qui apparaîtra tout en haut.
    Le Dialog peut contenir ensuite plein de petits modules comme des listes ou des boutons, dont l'ordre de tabulation sera défini par l'ordre dans le quel on aura placé ces divers modules (1er : 1er dans la liste des tabulations, etc.)

    Les modules ou Control sont sous la forme :
    Control le_nom_de_ton_controle_defini_dans_le_manuel
    Position X, Y (où X et Y sont la position du contrôle dans la boîte de dialogue).
    Les autres paramètres dépendent du type de contrôle et sont à voir dans le manuel. Par exemple, pour la listbox, les éléments du listbox sont déclarés après la clause Title, entre guillemets et séparés par des points virgules.


    Code:
    If CommandInfo(CMD_INFO_DLG_OK) Then
    ' ... then the user clicked OK.
    Else
    ' ... then the user clicked Cancel.
    End If
    CommandInfo(CMD_INFO_DLG_OK) est vraie lorsque l'utilisateur clique sur Ok, donc si c'est faux, cela veut dire que l'utilisateur a cliqué sur Cancel (ou sur la petite croix).

    Le code placé en fin de procédure est le code qui s'exécutera si la boîte de dialogue est fermée.
    Ici, un If (donc condition) qui se traduit par :

    Si clic sur bouton Ok est vrai Alors
    'code a placer si l'utilisateur clique Ok
    Et si ce n'est pas vrai Alors
    'code a placer si l'utilisateur ferme la fenêtre par Cancel (ou petite croix)
    Fin de condition

    Dans la partie "vrai", on peut par exemple placer le code : Call Sub ok_sub ce qui appellera la procédure ok_sub si l'utilisateur clique sur ok.

    Code:
    End Sub
    Fin de procédure.


    Code:
    Sub ok_sub
    ' Here, place code to handle user clicking OK
    End Sub
    Procédure qui se lancera suite au clic sur "Ok", qui pour le moment est remplie avec un commentaire et donc ne fera rien du tout.

    p.s. : ce n'a pas la prétention d'être un cours exhaustif ni très clair, mais j'ai tenté d'éclaircir un maximum les diverses parties du code en ajoutant des éléments qui peuvent être utiles par la suite lorsque l'on programme en mapbasic. Je conseille vivement de lire des cours sur mapbasic pour avoir des bases solides, ça prend quelques jours pour que les bases soient acquises, tout dépend des antécédents en programmation, mais le temps gagné par la suite est considérable.

  10. #10

    Date d'inscription
    août 2011
    Messages
    49

    Par défaut

    Merci pour ces explications mais je pense effectivement que le rendu final ne sera pas ce que j'attend !!

    En fait suivant l'image en piece jointe je voudrai dans ma fenetre INFOS avoir cette zone de liste en bout de mon champ MATERIAU. Je pensais que Mapinfo faisait cela plus simplement!!!
    Miniatures attachées Miniatures attachées Sans titre 1.jpg‎  

  11. #11
    Admin' Forum
    Date d'inscription
    janvier 2007
    Localisation
    Schilick(67)
    Emploi
    Administrateur SIG
    Organisme
    COSYLVAL
    Âge
    28
    Messages
    2 724

    Mes réseaux sociaux

    Follow Warg On Twitter Add Warg on Google+

    Par défaut

    Bonjour,
    merci de penser à faire un suivi de vos anciens sujets
    Si la réponse vous satisfait, merci de le signaler, sinon, ce n'est pas très motivant pour les membres du forum de répondre sans savoir si la solution apportée a portée ses fruits

    @+
    Marc
    ••(¯`·..La culture, c'est comme la confiture... sauf qu'il y en a un qui nourrit moins que l'autre..·´¯)••

    •>Merci de lire les règles du forum avant de poster<•

 

 

Discussions similaires

  1. [ArcGIS 9.x] Enlever les doublons d'une ListBox
    Par coy.snoopy dans le forum Programmation
    Réponses: 16
    Dernier message: 15/12/2010, 14h07
  2. [ArcGIS 9.x] Arborescence sur une listbox
    Par lilas_blanc dans le forum Programmation
    Réponses: 4
    Dernier message: 12/02/2007, 12h58
  3. [Access] Graph et listBox
    Par airbeone dans le forum Assistance et Programmation
    Réponses: 2
    Dernier message: 21/12/2006, 10h54
  4. [ArcGIS 8.x] Remplir une listbox
    Par ptipimouss dans le forum Programmation
    Réponses: 13
    Dernier message: 18/08/2005, 08h25
  5. [Access] Listbox liées
    Par gregsk8 dans le forum Assistance et Programmation
    Réponses: 1
    Dernier message: 21/03/2005, 08h12

Les tags pour cette discussion

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •