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...