Pages: 1
- Sujet précédent - [arcgis9.3] remplir listbox à partir d'une séléction sur la carte - Sujet suivant
#1 Thu 13 May 2010 12:12
- zaynabe
- Participant occasionnel
- Date d'inscription: 13 May 2010
- Messages: 12
[arcgis9.3] remplir listbox à partir d'une séléction sur la carte
bonjour tout le monde
je viens de m'inscrire sur ce forum et comme un message d'entrée, je vous expose un problème sur les listbox sur vba arcgis espérant que vous puissiez m'aider!!
voilà, je travaille sur une carte sur arcmap, j'ai une barre d'outil dont laquelle se trouve un commandButton, qui permet, une fois qu'on clique dessus, de lancer ou d'appeler un formulaire
dans ce formulaire, il ya une zone listbox.
dans cette listbox, je veux afficher ou récuperer les ObjectID (identifiants) de mes entités que j'ai selectionné sur la carte (selection à la souris).
je veux encore préciser que les objectID de mes entités sont stockés dans la table attributaire de ma couche.
et mes couches sont organisées dans une géodatabase access (c'est organisé en jeux de classes d'entités et classes d'entités)!!!
merci et j'espère que j'aurais des réponses à mes questions
Hors ligne
#2 Fri 14 May 2010 10:24
- zaynabe
- Participant occasionnel
- Date d'inscription: 13 May 2010
- Messages: 12
Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte
bonjour
personne n'a de réponse pour ma question!!!
un petit bout de code ou une orientation seront les bien venus!!!!
bonne journée
Hors ligne
#3 Fri 14 May 2010 11:47
Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte
Je tente de t'expliquer la demarche :
-1 recuperer tes features selectionnés et les parcourir par une boucle
-2 remplir un Tableau (MyArray variable de type variant) avec les informations de features que tu parcours
dans ta boucle ne pas oublier de redimensionner ton tableau en fonction des besoins avec DIM et REDIM avec variable de comptage et le code suivant par exemple ReDim Preserve MyArray(7, MaLongueur)
-3 Vider ta liste avec MonForm.Controls(MonNomListe).Clear
-4 assigné le tableau a ta liste avec la syntace suivante MonForm.Controls(MonNomListe).Column() = MyArray
Voila rapidement
Bon courage
[Matthieu Pette - Ad Terram] (@Ad_Terram sur le PiouPiou bleu)
~Géomaticien Indépendant~
Hors ligne
#4 Fri 14 May 2010 12:05
- Nicolas Granier
- Participant assidu
- Date d'inscription: 19 Apr 2007
- Messages: 271
Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte
bonjour, un brin de code à tester
Code:
Public Sub test() Dim pMxDoc As IMxDocument Dim pmap As IMap Dim pfield As IField Dim pLayer As ILayer Dim pFLayer As IFeatureLayer Dim pFeatureClass As IFeatureClass Set pMxDoc = ThisDocument Set pmap = pMxDoc.FocusMap Set pLayer = pMxDoc.SelectedLayer Set pFLayer = pLayer Set pFeatureClass = pFLayer.FeatureClass Dim pFeatureSelection As IFeatureSelection Dim pSelectionSet As ISelectionSet Dim pFCursor As IFeatureCursor 'Récupère la sélection Set pFeatureSelection = pFLayer 'Vérifie qu'il existe bien une entité de sélectionner If pFeatureSelection.SelectionSet.Count < 1 Then MsgBox "Aucune entité sélection sur la couche " & pLayer.Name Exit Sub End If 'Récupère les entités sélectionnées Set pSelectionSet = pFeatureSelection.SelectionSet ' 'Récupère un curseur sur les entités sélectionnées MsgBox "Nombre d'ojets selectionnées " & pSelectionSet.Count() 'enumération de la selection Dim pEnumIDs As IEnumIDs Set pEnumIDs = pSelectionSet.IDs Dim pRowBuffer As IRowBuffer Dim pFeature As IFeature Dim id As Long id = pEnumIDs.Next 'je parcours l'enumération de la sélection Do Set pFeature = pFeatureClass.GetFeature(id) 'j'accède à la classe feature par son id Set pRowBuffer = pFeature 'je me place sur Irowbuffer Value = pRowBuffer.Value(0) MsgBox Value 'place du champ 0= champ 1, 1 = champ 2,etc... ' commande pour ajouter la valeur pRowBuffer à la listbox UserForm1.ListBox1.AddItem Value id = pEnumIDs.Next Loop Until id = -1 End Sub
et ce code peut être lancé à l'initialisation du formulaire à l'ecran
en appalement la fonction à l'ouverture
comme ceci
Code:
Private Sub UserForm_Initialize() Call test End Sub
En espérant que ça t'aide
A+
Hors ligne
#5 Mon 17 May 2010 13:36
- zaynabe
- Participant occasionnel
- Date d'inscription: 13 May 2010
- Messages: 12
Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte
bonjour
merci à forestis et nicolas pour l'aide
je suis arrivée à afficher les identifiants des entités sélectionnées dans ma listbox
voici le code que j'ai utilisé
Code:
' Declarations Dim pMxDoc As IMxDocument Dim pMap As IMap Dim pFeatLayer As IFeatureLayer Dim pFeatSel As IFeatureSelection Dim lstIDs As IEnumIDs Dim Fid As Long 'OID d'une entité selectionnée Dim i As Long ' Corps Set pMxDoc = ThisDocument Set pMap = pMxDoc.FocusMap ' Affectation de la couche contenant la selection Set pFeatLayer = pMap.layer(i) ' Affectation de l'interface IFeatureSelection Set pFeatSel = pFeatLayer ' Récupération des identifiants des entités sélectionnées Set lstIDs = pFeatSel.SelectionSet.IDs ' Boucle sur les OID sélectionnés For i = 0 To (pFeatSel.SelectionSet.Count - 1) Fid = lstIDs.Next ' Action sur l'entité selectionnée ListBox1.AddItem lstIDs.Next Next i GoTo ResetVar Exit Sub ResetVar: Set pMxDoc = Nothing Set pMap = Nothing Set pFeatLayer = Nothing Set pFeatSel = Nothing Set lstIDs = Nothing
mais il ya un autre problème avec ce code: les identifiants s'affichent, mais en bas de la list, il ya des " -1 " qui s'affichent!!! je ne sais pas d'où ça vient!!
quelqu'un peut m'aider pour régler ce problème
merci
Hors ligne
#6 Mon 17 May 2010 14:16
- Cornet Jérémie
- Participant assidu
- Lieu: Nouméa
- Date d'inscription: 6 Apr 2008
- Messages: 229
Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte
Bonjour Zaynabe,
Je t'ai répondu sur
http://www.forumsig.org/showthread.php?t=27056
Quand tu fais un post sur les 2 forums, n'hésites pas à le dire et à mettre le lien pour éviter les double réponses et pour que les contributeurs des 2 forums ne répondent pas alors que ca a déjà été fait sur l'autre forum.
Bonne continuation !
Jérémie
Dernière modification par Cornet Jérémie (Mon 17 May 2010 14:17)
Hors ligne
#7 Mon 17 May 2010 16:04
- zaynabe
- Participant occasionnel
- Date d'inscription: 13 May 2010
- Messages: 12
Re: [arcgis9.3] remplir listbox à partir d'une séléction sur la carte
merci beaucoup jérémie
le programme marche bien maintenant
bonne journée
Hors ligne
Pages: 1
- Sujet précédent - [arcgis9.3] remplir listbox à partir d'une séléction sur la carte - Sujet suivant