Announcement

Collapse
No announcement yet.

TWebrowser as IHTMLDocument2...Problem mit der Entertaste

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TWebrowser as IHTMLDocument2...Problem mit der Entertaste

    Hallo

    ich habe den TWebbrowser als IHTMLDocument2 gecastet.
    und gehe ich in den Designmodus..
    (WebBrowser1.Document as IHTMLDocument2).designMode := 'On';
    Nun kann ich den Text quasi WYSIWYG bearbeiten...
    Ich kann aber nicht mit der Entertaste in die nächste Zeile wechseln...
    Was mache ich falsch? bzw. was muss ich noch machen damit das hinhaut?

  • #2
    Hallo

    ich hab jetzt fast ne Lösung hier im Forum gefunden.
    unter Verwendung dieses Messagehandlers akzeptiert der Webbrowser
    schon mal die Entertaste.
    Allerdings werden immer bei Enter 2 Zeilen gesetzt bzw. es wird das
    < p > < /p > Tag verwendet.
    Ich brauche aber am Ende ein < br>.

    procedure TForm1.MyMessageHandler(var Msg: TMsg; var Handled: Boolean);
    var
    iOIPAO: IOleInPlaceActiveObject;
    Dispatch: IDispatch;
    begin
    { exit if we don't get back a webbrowser object }
    if WebBrowser = nil then
    begin
    Handled := False;
    Exit;
    end;
    Handled:=(IsDialogMessage(WebBrowser.Handle, Msg) = True);
    if (Handled) and (not WebBrowser.Busy) then
    begin
    if FOleInPlaceActiveObject = nil then
    begin
    Dispatch := WebBrowser.Application;
    if Dispatch <> nil then
    begin
    Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
    if iOIPAO <> nil then
    FOleInPlaceActiveObject := iOIPAO;
    end;
    end;
    if FOleInPlaceActiveObject <> nil then
    if ((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
    //nothing - do not pass on Backspace, Left or Right arrows
    else
    FOleInPlaceActiveObject.TranslateAccelerator(Msg);
    end;
    end

    Comment


    • #3
      mmh..Mist.. hier noch mal der Messagehandler mit pre

      <pre>
      procedure TForm1.MyMessageHandler(var Msg: TMsg; var Handled: Boolean);
      var
      iOIPAO: IOleInPlaceActiveObject;
      Dispatch: IDispatch;
      begin
      { exit if we don't get back a webbrowser object }
      if WebBrowser = nil then
      begin
      Handled := False;
      Exit;
      end;
      Handled:=(IsDialogMessage(WebBrowser.Handle, Msg) = True);
      if (Handled) and (not WebBrowser.Busy) then
      begin
      if FOleInPlaceActiveObject = nil then
      begin
      Dispatch := WebBrowser.Application;
      if Dispatch <> nil then
      begin
      Dispatch.QueryInterface(IOleInPlaceActiveObject, iOIPAO);
      if iOIPAO <> nil then
      FOleInPlaceActiveObject := iOIPAO;
      end;
      end;
      if FOleInPlaceActiveObject <> nil then
      if ((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
      //nothing - do not pass on Backspace, Left or Right arrows
      else
      FOleInPlaceActiveObject.TranslateAccelerator(Msg);
      end;
      end;
      </pre&gt

      Comment

      Working...
      X