Einzelnen Beitrag anzeigen

Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#8

Re: Webbrowser Text markieren verhindern

  Alt 31. Mär 2005, 17:25
Habe gemerkt, dass man mit Strg+A das Dokument immer noch markieren kann.
Diese Funktion deaktiviert nun das Popupmenue, Strg+A, markieren mit der Maus.

Delphi-Quellcode:
function GetElementAtPos(Doc: IHTMLDocument2; x, y: Integer): IHTMLElement;
begin
  Result := nil;
  Result := Doc.elementFromPoint(x, y);
end;

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);
var
  ShiftState: TShiftState;
var
  MousePos: TPoint;
  Element: IHTMLElement;
  Doc: IHTMLDocument2;
begin
  // only handle Webbrowser messages
  if IsChild(Webbrowser1.Handle, Msg.hwnd) then
  begin
    // Convert keyboard message data to TShiftState
    ShiftState := KeyDataToShiftState(Msg.lParam);
    // ctrl + A
    if (ShiftState = [ssCtrl]) and (Msg.message = WM_KEYDOWN) and
      (Msg.wParam = ord('A')) then
    begin
      // event subsequent processing of the message
      Handled := True;
      Exit;
    end;
    // right-, left-, double click
    if (Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_LBUTTONDOWN) or
      (Msg.Message = WM_RBUTTONDBLCLK) then
    begin
      Doc := Webbrowser1.Document as IHTMLDocument2;
      if Assigned(doc) then
      begin
        GetCursorPos(MousePos);
        MousePos := Webbrowser1.ScreenToClient(MousePos);
        // get the element under the mouse
        Element := GetElementAtPos(doc, MousePos.x, MousePos.y);
        if Assigned(Element) then
        begin
          // if a link
          if element.tagName = 'Athen
            Exit;
        end;
      end;
      // if not a link, don't process the message
      Handled := True;
    end;
  end;
end;
Thomas
  Mit Zitat antworten Zitat