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 :

Evènement OnClick sur élément HTML en TWebBrowser


Sujet :

API, COM et SDKs Delphi

Mode arborescent

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé

    Homme Profil pro
    Informaticien retraité
    Inscrit en
    Mars 2010
    Messages
    359
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Informaticien retraité
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2010
    Messages : 359
    Billets dans le blog
    1
    Par défaut Evènement OnClick sur élément HTML en TWebBrowser
    Je suis sous W8.1, avec Delphi 6 Personal Edition.
    Je réalise une grosse DLL en Delphi avec des centaines de fonctions, destinée à étendre les possibilités d'un langage de programmation freeware.

    Dans ce cadre ce ce travail, j'ai créé un ensemble de fonctions permettant de créer dynamiquement un objet TWebBrowser et de l'injecter dans une form du programme application, puis de piloter cet objet. Mais maintenant, je veux y ajouter la possibilité d'intercepter l'évènement OnClick sur n'importe quel élément HTML, et je n'y arrive pas. Pourtant, j'ai réussi à gérer l'évènement WebBrowser_OnNavigateComplete2 du WebBrowser, sans problème. Mais le compilateur refuse de prendre mes lignes. J'ai essayé des dizaines de variantes, j'ai passé des jours à chercher sur le net. Mais au final, pas de solution. Voici le fragment de code qui pose problème:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // installation de l'évènement OnClick sur un élément HTML quelconque
    function WBOnClick():integer; stdcall; export;
    var
      myDoc: IHTMLDocument2;
    begin
      myDoc := WB.Document as IHTMLDocument2;
      // Ligne suivente; erreur:
      // Types incompatibles: 'OleVariant' et 'procedure, untyped pointer or untyped parameter'
      myDoc.onclick := TDummy.DocumentOnClick;    // <== erreur ici !
      //  je n'ai pas non plus réussi à utliliser la méthode AttachEvent...
      result := 0;
    end;
    avec la fonction étant déclarée comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    type
      TDummy = class
        class procedure WebBrowser_OnNavigateComplete2(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant);  // pour WB_Create
        class procedure DocumentOnClick();
      end;
     
    // procédure évènement OnClick d'un élément HTML quelconque
    class procedure TDummy.DocumentOnClick();
    begin
      showmessage('Clic sur élément HTML');
    end;
    En pièce jointe, je mets un fichier test_WB.zip. Ce fichier contient 2 projets Delphi 6 Personal Edition:
    - test_WB.dpr <--- c'est un extrait fonctionnel de ma DLL
    - demo_WB.dbr <--- c'est un programme de démo utilisant les fonctions de la DLL
    Il y a les sources complètes (ce n'est pas grand...), ainsi que les binaires test_WB.dll et demo_WB.exe. C'est donc exécutable directement. Le mode d'emploi est simple: on lance demo_WB.exe. On obtient une fenêtre avec 5 boutons, dont les libellés décrivent la fonction et contiennent un numéro d'ordre. Actuellement, le bouton "4 - créer OnClick" est inactif, car la fonction correspondante de la DLL ne passe justement pas en compilation.

    Je précise que je veux pouvoir établir un évènement OnClick agissant sur l'ensemble des éléments HTML de la page chargée, sans modifier le code HTML de la page et sans recourir au JavaScript, uniquement par les moyens de Delphi 6. Je suis sûr que c'est possible, mais je bute à l'évidence sur un problème de compréhension. Pouvez-vous m'aider ?
    Fichiers attachés Fichiers attachés

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Dojo] Evénement onclick sur un objet drag'n'dropable
    Par tapoutapou dans le forum Bibliothèques & Frameworks
    Réponses: 7
    Dernier message: 04/08/2010, 15h43
  2. Evènement OnClick sur calendrier
    Par psykoleouf dans le forum VBA Access
    Réponses: 2
    Dernier message: 31/05/2007, 16h43
  3. Changement de traitement de onclick sur html par javascript
    Par lodan dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 01/05/2007, 09h18
  4. onclick sur deux éléments superposés et IE6
    Par sovitec dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 27/12/2005, 13h56
  5. [HTML][débutante] Map ou Onclick sur image ? Différent ?
    Par khany dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 08/12/2004, 14h05

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