Nous utilisons des cookies pour vous garantir la meilleure expérience sur notre site. Si vous continuez à utiliser ce dernier, nous considèrerons que vous acceptez l'utilisation des cookies. J'ai compris ! ou En savoir plus !.
banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

#1 Mon 22 January 2007 09:03

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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

Jeirhome
Membre
Lieu: Liverion
Date d'inscription: 22 Aug 2006
Messages: 4298
Site web

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

 

Pied de page des forums

Powered by FluxBB