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

Web & réseau Delphi Discussion :

Activer la touche "Entree" dans un TWebBrowser dynamique


Sujet :

Web & réseau Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Activer la touche "Entree" dans un TWebBrowser dynamique
    Bonjour à tous.

    Voilà mon problème : dans un TWebbrowser, la touche entrée est inactif. En plaçant un "ApplicationEvent" sur la form, et en mettant le code suivant dans la propriété "OnMessage", cela fonctionne très bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    private
        { Déclarations privées }
      public
        FOleInPlaceActiveObject: IOleInPlaceActiveObject;
      end;
     
    procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
      var Handled: Boolean);
     
    var
      iOIPAO: IOleInPlaceActiveObject;
      Dispatch: IDispatch;
    begin
      if (WebBrowser1 = nil) then begin
        Handled := False; Exit;
      end;
     
      Handled := (IsDialogMessage(WebBrowser1.Handle, Msg) = True);
     
      if (Handled) and (not WebBrowser1.Busy) then begin
        if FOleInPlaceActiveObject = nil then begin
          Dispatch := WebBrowser1.Application;
          if Dispatch <> nil then begin
            Dispatch.QueryInterface (IOleInPlaceActiveObject, iOIPAO);
            if iOIPAO <> nil then
              FOleInPlaceActiveObject := iOIPAO;
          end;
        end;
        if FOleInPlaceActiveObject <> nil then
        if not (((Msg.message = WM_KEYDOWN) or (Msg.message = WM_KEYUP)) and
          ((Msg.wParam = VK_BACK) or (Msg.wParam = VK_LEFT) or (Msg.wParam = VK_RIGHT)))
          then FOleInPlaceActiveObject.TranslateAccelerator (Msg);
      end;
     
    end;
    J'ai réalisé un navigateur par onglet. Le problème est que dans les Webbrowser crées dynamiquement, la touche entrée est actif, mais lorsque je ferme l'onglet (pagecontrol, TTabsheet), cela provoque un message d'erreur du genre "Project1.exe à causé une défaillance à l'adresse 00x0000" etc...Et tout se bloque ! J'ai cherché, mais ne trouve rien...Si il y a une autre façon d'activer la touche entrée dans un webbrowser créer dynamiquement, je suis preneur ! Sinon, quelques choses changer dans le code ? Merci pour vos réponses...

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2009
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    il suffit de faire un destroy sur ton TWebrowser avant le destroy du TTabSheet

Discussions similaires

  1. Réponses: 9
    Dernier message: 15/09/2004, 22h35

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