Gestion d'identifiants sur les éléments graphiques
Une demande fréquente des développeurs est de pouvoir accéder à des éléments graphiques de la carte ou de la mise en page en utilisant un nom. Ceci permet, par exemple, de les organiser et d'associer à certains élément des comportements particuliers. Dans ArcView GIS 3.x cela pouvait se faire en utilisant la propriété "Tag" des éléments.
Avec ArcGIS 9.2, les éléments graphiques d'ArcMap dont les classes ArcObjects correspondantes implémentent l'interface "IElementProperties", disposent d'une propriété "CustomProperty" (de type variant) et une propriété "Name" (de type string) qui peut être utilisée pour retrouver un élément par son identifiant ou par n'importe quel autre objet associé.
Avec ArcGIS 9.2, les éléments graphiques d'ArcMap dont les classes ArcObjects correspondantes implémentent l'interface "IElementProperties", disposent d'une propriété "CustomProperty" (de type variant) et une propriété "Name" (de type string) qui peut être utilisée pour retrouver un élément par son identifiant ou par n'importe quel autre objet associé.
La propriété "Name" est exposée dans l'interface d'ArcMap dans l'onglet "Taille et Position" de la boîte de dialogue des propriétés de l'élément. L'utilisateur peut donc définir et modifier manuellement le nom de chacun de ces éléments.
L'exemple de code VBA ci-dessous montre comment parcourir tous les éléments graphiques du document ArcMap en affichant pour chacun sa propriété "Name".
Public Sub Afficher_Noms_Elements()
Dim pMxDoc As IMxDocument
Dim pPageLayout As IPageLayout
Set pMxDoc = ThisDocument
Set pPageLayout = pMxDoc.ActiveView
Dim pGC As IGraphicsContainer
Set pGC = pPageLayout
pGC.Reset
Dim pElement As IElement
Set pElement = pGC.Next
Do While Not pElement Is Nothing
Dim pCP As IElementProperties
Set pCP = pElement
MsgBox pCP.Name
Set pElement = pGC.Next
Loop
End Sub
On notera enfin que les propriétés des éléments graphiques sont persistantes, c'est à dire qu'elles sont sauvegardées dans le document ArcMap, ArcGlobe ou ArcScene.
0 comments :
Enregistrer un commentaire