AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Webbrowser Text markieren verhindern
Thema durchsuchen
Ansicht
Themen-Optionen

Webbrowser Text markieren verhindern

Ein Thema von Salomon · begonnen am 31. Mär 2005 · letzter Beitrag vom 9. Mai 2006
Antwort Antwort
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#1

Webbrowser Text markieren verhindern

  Alt 31. Mär 2005, 13:53
Hallo,
ich benutze in meinem Programm den IE, den ich über ActiveX importiert habe (Delphi 5)um Informationstexte anzuzeigen. Allerdings stört es mich das man denn Text markieren kann, da
es dann immer so aussieht als könnte man den Text bearbeiten.

Habt ihr eine Idee wie man das verhindern kann?

Mit dem folgenden Code kann man den gesammten text makieren. Evtl. kann man ja den zu markierenden Bereich auf null setzen und das dann in einem Event des Browser unterbringen...

Delphi-Quellcode:
  TextRange: OleVariant;
begin
   TextRange := WebBrowser.OleObject.Document.selection.createRange;
   TextRange.moveToElementText(WebBrowser.OleObject.Document.body);
   TextRange.select;
end;
Thanx
Salomon
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: Webbrowser Text markieren verhindern

  Alt 31. Mär 2005, 14:13
Hallo!

Wuerde es auch helfen, wenn man die Maustasten wuerd den Webbrowser deaktiviert?
Thomas
  Mit Zitat antworten Zitat
PierreB
(Gast)

n/a Beiträge
 
#3

Re: Webbrowser Text markieren verhindern

  Alt 31. Mär 2005, 14:28
Zitat von toms:
Hallo!

Wuerde es auch helfen, wenn man die Maustasten wuerd den Webbrowser deaktiviert?
Aber da es ein Webbrowser ist, wie willst du dann Links, etc. anklicken ?
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: Webbrowser Text markieren verhindern

  Alt 31. Mär 2005, 14:31
Zitat von PierreB:
Zitat von toms:
Hallo!

Wuerde es auch helfen, wenn man die Maustasten wuerd den Webbrowser deaktiviert?
Aber da es ein Webbrowser ist, wie willst du dann Links, etc. anklicken ?
Die Links koennte man per GetElementAtPos ermitteln und entsprechend behandeln.
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Orbmu2k
Orbmu2k

Registriert seit: 29. Nov 2004
Ort: Erfurt
254 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Webbrowser Text markieren verhindern

  Alt 31. Mär 2005, 14:34
gabs da nicht html code für ie

<body onselectstart="return false">Nicht Markierbarer Text</body>
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

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

Re: Webbrowser Text markieren verhindern

  Alt 31. Mär 2005, 14:47
Habe nun ein Beispiel gemacht. Damit wird verhindert, dass Code selektiert werden kann
und das Popupmenu erscheint auch nicht.


Delphi-Quellcode:
uses
  MSHTML;

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
  MausPos: TPoint;
  Element: IHTMLElement;
  Doc: IHTMLDocument2;
begin
  if (Msg.Message = WM_RBUTTONDOWN) or (Msg.Message = WM_LBUTTONDOWN) or
    (Msg.Message = WM_RBUTTONDBLCLK) then
  begin
    if IsChild(Webbrowser1.Handle, Msg.hwnd) then
    begin
      Doc := Webbrowser1.Document as IHTMLDocument2;
      if Assigned(doc) then
      begin
        GetCursorPos(MausPos);
        mauspos := Webbrowser1.ScreenToClient(mauspos);
        Element := GetElementAtPos(doc, MausPos.x, MausPos.y);
        if Assigned(Element) then
        begin
          if element.tagName = 'Athen // evtl. auf weitere Tags ueberpreufen
            Exit;
        end;
      end;
      Handled := True;
    end;
  end;
end;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Salomon
Salomon

Registriert seit: 9. Jun 2002
453 Beiträge
 
#7

Re: Webbrowser Text markieren verhindern

  Alt 31. Mär 2005, 14:59
Wow, sind ja schon einige Anworten

Der HTML Tag onselectstart="return false" gibt im IE unter WinXP mit SP 2 eine Sicherheitswarnung aus, wenn er nicht in einem Frame geladen wird. Wenn man die Seite aber einzeln im Programm lädt gibt es keine Sicherheits Meldung

@toms: Coole Funktion, dass sie mir das PopUp Menü gleich noch mit unterbindet ist natürlich genial. Werd ich wohl verwenden. Danke.
01001000 01100001 01101100 01101100 01101111
01010111 01100101 01101100 01110100 00100001

http://www.it-adviser.net
  Mit Zitat antworten Zitat
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
torud

Registriert seit: 26. Jul 2002
Ort: Sachsen
1.198 Beiträge
 
Delphi XE5 Professional
 
#9

Re: Webbrowser Text markieren verhindern

  Alt 9. Mai 2006, 10:56
Ich habe es gerade bei mir probiert und ich kann nach wie vor alles einfach so markieren. Muss ich die Prozedure vielleicht noch irgendwo dranhängen?
Danke
Tom
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz