#1 Mon 22 January 2007 09:03
Programmer l'affichage d'une table dans une mise en page
Je travaille avec les ActiveX MapControl et PageLayoutControut et je tente de faire une mise en page. Jusque là, j'y arrive tant bien que mal. Mais là, j'essaie d'afficher une table dans ma mise en page et c'est la galère !
D'après le cours de l'ENSG, j'essaie d'utiliser l'interface ITableFrame. Mais je ne trouve aucun élément de code pouvait m'aider sur la façon d'utiliser les quatre propriétés de cette interface pour que quelque chose s'affiche. J'y vais dans tous les sens, lorsque je regarde les propriétés, j'arrive à avoir une enveloppe définie, une table correcte, mais rien qui me crée vraiment l'objet qui permet à l'interface IElement de l'afficher.
Est-ce que quelqu'un a quelque chose qui permet d'afficher un semblant de table ?
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#2 Mon 22 January 2007 10:48
- Olivier De LA POMMERAYE
- Invité
Re: Programmer l'affichage d'une table dans une mise en page
Bonjour,
Est ce que vous vous en sortez avec ces deux exemples ?
http://forums.esri.com/Thread.asp?c=93& … 193#109655
http://forums.esri.com/Thread.asp?c=93& … 337#143895
Bonne journée,
#3 Mon 22 January 2007 11:04
Re: Programmer l'affichage d'une table dans une mise en page
J'ai déjà vu ces deux exemples (qui par ailleurs étant en introduction de sujet sont des codes qui ne fonctionnent pas totalement), et ils ne m'apportent pas grand chose.
Le deuxième fournit un curseur qui explore les différents éléments de la mise en page, ce qui implique que l'élément est déjà crée, alors que c'est ce que je veux moi, le créer cet élément, pas le modifer.
Le premier pose exactement le même problème que moi, et personne n'y répond. La seule différnece, c'est que j'ai rajouté une plus grosse tartine de code, essayant de satisfaire les propriétés TableProperty, TableView, etc de l'interface ITableFrame.
Je demande ici car je n'ai pas réussi à trouver de ressources dans edn ou ailleurs sur le web. Besoin d'expériences positives...
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#4 Mon 22 January 2007 13:55
- Olivier De LA POMMERAYE
- Invité
Re: Programmer l'affichage d'une table dans une mise en page
Excusez moi si je vous ai froissé, mais il arrive que certaines
personnes ne soient même pas passé par cette étape.
Voici un code qui vous montrera comment faire cela :
Private Sub UIButtonControl1_Click()
'-- Récupération de l'application ArcMap
Dim oMxApp As IMxApplication
Set oMxApp = Application
'-- Récupération du document en cours
Dim oMxDoc As IMxDocument
Set oMxDoc = Application.Document
'-- Récupération de la mise en page
Dim oLayout As IPageLayout
Set oLayout = oMxDoc.PageLayout
'-- Récupération du container graphique
Dim oContainer As IGraphicsContainer
Set oContainer = oLayout
'-- Récupération de la couche sélectionnée
Dim oFeatureLayer As IFeatureLayer
Set oFeatureLayer = oMxDoc.SelectedLayer
'-- Instanciation de la table attributaire
Dim oTable As ITable
Set oTable = oFeatureLayer.FeatureClass
'-- Définition & Instanciation de l'object graphique représentant la table
Dim oTableFrame As ITableFrame
Set oTableFrame = New TableFrame
Set oTableFrame.Table = oTable
oTableFrame.StartCol = 1
oTableFrame.StartRow = 1
oTableFrame.TableProperty = New TableProperty
Set oTableFrame.TableProperty.FeatureLayer = oFeatureLayer
oTableFrame.TableView = New TableView
Set oTableFrame.TableView.Table = oTable
'-- Définition & Instanciation de la géométrie de l'object graphique
Dim oEnveloppe As IEnvelope
Set oEnveloppe = New Envelope
oEnveloppe.PutCoords 3.4873, 7.4835, 17.9335, 18.596
'-- Définition & Instanciation de l'élément pour le container grahique
Dim oElement As IElement
Set oElement = oTableFrame
oElement.Geometry = oEnveloppe
'-- Ajout de l'élément au container
Call oContainer.AddElement(oElement, 0)
'-- Rafraîchissement de la vue
oMxDoc.ActiveView.Refresh
'-- Destruction des objects
Set oElement = Nothing
Set oEnveloppe = Nothing
Set oTableFrame = Nothing
Set oTable = Nothing
Set oFeatureLayer = Nothing
Set oContainer = Nothing
Set oMxDoc = Nothing
Set oLayout = Nothing
End Sub
Bon travail,
Olivier
#5 Mon 22 January 2007 15:43
Re: Programmer l'affichage d'une table dans une mise en page
Bon, ça ressemble dans les grandes lignes à ce que j'ai pu produire, je vais regarder de plus près pour voir les subtilités. Après, que vous m'ayez froissé avec votre première réponse, pas dans l'immédiat, puisque j'aurais pu rater un exemple pertinent sur edn. Mais vu que le contenu de vos liens ne correspondait pas à ce que je demandais, j'ai eu l'impression d'une réponse quasi automatique, sans que le contenu soit regardé plus que cela. Enfin, vous fournissez après coup du code qui semble pertinent, je ne peut vous en vouloir. Je teste et je donne des nouvelles...
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne
#6 Mon 22 January 2007 16:36
Re: Programmer l'affichage d'une table dans une mise en page
Ah !
C'est les moments que j'adore. Le code fonctionne très bien en VBA. Mais si je l'essaie en VB pour mon ActiveX PageLayoutControl, rien n'apparait.
Je prends exactement la même chose, à l'exception de la variable oMxDoc que je subtilise par ma variable PageLayoutControl. Le code s'exécute, mais rien n'apparait dans la fenêtre de contrôle. Une idée de ce qui ne va pas ?
Jérôme Cuinet
L'avantage de la Chine, c'est que le soleil se couche plus tard !
Hors ligne