#1 Mon 20 June 2005 18:14
- Dialine
- Invité
additem dans une combobox
De: didier
[arcgis 8.3]
ci-dessous un code permettant de charger une combobox à partir d'un champ d'une table attributaire.
Code:
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pLayer As ILayer
Dim pFLayer As FeatureLayer
Dim pFClass As IFeatureClass
Dim pFeature As IFeature
Dim i As Integer
Set pLayer = pMxDoc.FocusMap.Layer(0)
Set pFLayer = pLayer
Set pFClass = pFLayer.FeatureClass
For i = 0 To pFClass.FeatureCount(Nothing) - 1
Set pFeature = pFClass.GetFeature(i)
MaCombo.AddItem pFeature.Value(2), i
Next i
Sauriez comment adapter code pour que les données à charger dans la combobox soient issues d'une table dbf chargée dans le projet ?.
MERCI
#2 Tue 21 June 2005 08:19
- Olivier GUYOT De LA POMMERAYE
- Invité
Re: additem dans une combobox
Bonjour,
Il vous faut parcourir la collection de "tables seules" (IStandaloneTableCollection) et lorsque vous avez trouvé votre table DBF, instancier un object de type "IStandaloneTable", qui va contenir votre table DBF, ensuite il faut passer l'object dans une "ITable", enfin il faut instancier un "ICursor" grace à la méthode "Search" accessible depuis votre ITable, puis pour finir instancier un object "IRow" à chaque passage dans votre boucle de parcours des enregistrements du ICursor, c'est cet object IRow qui vous donnera accès aux valeurs de votre table pour les ajouter dans votre combobox.
Ce qui doit donner un truc du genre (non vérifié) :
Dim oDoc As IMxDocument
Set oDoc = ThisDocument
Dim oMap As IMap
Set oMap = oDoc.FocusMap
Dim oIStandaloneTableCollection As IStandaloneTableCollection
Set oIStandaloneTableCollection = oMap
Dim oIStandaloneTable As IStandaloneTable
Dim i As Integer
For i = 0 To IStandaloneTableCollection.StandaloneTableCount - 1
Set oIStandaloneTable = IStandaloneTableCollection.StandaloneTable(i)
If oIStandaloneTable.Name = "BOULOU" Then Exit Do
Next
Dim oITable As ITable
Set oITable = oIStandaloneTable
Dim oICursor As ICursor
Set oICursor = oITable.Search(Nothing, False)
Dim oIRow As IRow
Set oIRow = oICursor.NextRow
Do While Not oIRow Is Nothing
Cbx_DBFValues.AddItem oIRow.Value(oIRow.Fields.FindField("BLA"))
Set oIRow = oICursor.NextRow
Loop
Set oIRow = Nothing
Set oICursor = Nothing
Set oITable = Nothing
Set oIStandaloneTable = Nothing
Set oIStandaloneTableCollection = Nothing
Set oMap = Nothing
Set oDoc = Nothing
Bonne journée,
Olivier GUYOT de LA POMMERAYE
og@ geosys.com