IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Liaison Excel Delphi via Oleautomation


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 14
    Par défaut Liaison Excel Delphi via Oleautomation
    Bonjour,

    j'ai créé une dll pour faire interagir mon programme avec excel via les interfaces.

    Je crée un objet avec des propriétés dans mon code delphi. Dés lors dans ma macro j'ai accès à cet objet et aux différentes propriétés définies.

    Cependant, j'ai décidé de rajouter une propriété contenant une image afin de récupérer cette image dans excel et de l'afficher dans mes menus.
    J'ai donc eu le code suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     property IcoPict: IPictureDisp read Get_IcoPict write Set_IcoPict;
    avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function TMyObject.Get_IcoPict: IPictureDisp;
    var
     Icone: TIcon;
    begin
     Icone := TIcon.Create;
     Icone.Handle := LoadIcon(HInstance, 'MAINICON');
     result := Tpicture(Icone) as IPictureDisp;
     icone.free;
    end;
    cependant lorsque j'appelle dans ma macro cela ne fonctionne pas. Il me dit que l'interface n'est pas supporté.

    Quelqu'un aurait-il une idée?

    Merci d'avance

  2. #2
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 086
    Par défaut
    As-tu fais un register de l'objet via RegSvr32 ?
    Test avec un client Delphi pour débugger plus facilement !
    As-tu fais un CreateObject avant ?
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 14
    Par défaut
    merci pour ta réponse malheureusement j'avais déjà essayé tes suggestions.
    J'ai fait un regsvr32 pour être sûr qu'il prend la bonne dll.
    Je travaille déjà sous un client delphi et mon objet existe.

  4. #4
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut
    TIcon, c'est bien la classe définie dans Graphics.pas.

    Depuis quand est-ce que TIcon implémente l'interface IPictureDisp ?

    Il ne suffit pas de faire un cast pour que la classe implémente IPictureDisp (d'ailleurs TPicture ne l'implémente pas non plus !).

    Ca ne marchera jamais de cette façon.

    Il me semble que la méthode préconisée par Microsoft lorsqu'on écrit une extension COM pour Office, c'est de passer par le presse-papier (je sais c'est un peu dégueux, mais ça marche).

    Dans l'objet COM, tu charges ton image et tu la copie dans le press-papier.

    Puis dans Excel, tu définis l'image du menu avec PasteFace().

  5. #5
    Membre averti
    Inscrit en
    Juin 2004
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 14
    Par défaut
    merci beaucoup, je vais essayer cela.

    Encore une question : quelle classe implémente l'interface IPictureDisp ?

    bien à vous.

  6. #6
    Membre Expert

    Profil pro
    Leader Technique
    Inscrit en
    Juin 2005
    Messages
    1 756
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Leader Technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 756
    Par défaut
    A ma connaissance, aucune classe Delphi.

    Cette interface est déclarée dans ActiveX. Elle a sans doute été définie par Microsoft pour permettre aux appli VB de manipuler des images provenant d'objets COM ou de serveur OLE.

    En revanche, tu dois pouvoir l'implémenter toi-même dans une classe dérivée d'un TAutoObject, qui aggrègerait un TBitmap par exemple...

Discussions similaires

  1. Liaison Excel-Application delphi
    Par Humbolt dans le forum Débuter
    Réponses: 5
    Dernier message: 01/09/2010, 16h38
  2. Comment supprimer des liaisons excel/powerpoint via une macro?
    Par toma65 dans le forum VBA PowerPoint
    Réponses: 18
    Dernier message: 27/06/2007, 15h32
  3. Mise à jour des liaisons Excel.
    Par franckh99 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 26/12/2005, 11h51
  4. [VBA/Excel] Formule via macro
    Par UNi[FR] dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 18/10/2005, 15h11
  5. Erreur d'import Excel -> Delphi
    Par Homer dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 05/07/2004, 10h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo