AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi Problem mit Selection im tWebbrowser

Problem mit Selection im tWebbrowser

Ein Thema von c.wuensch · begonnen am 30. Mär 2005 · letzter Beitrag vom 21. Apr 2005
 
c.wuensch

Registriert seit: 19. Dez 2004
Ort: Münster
96 Beiträge
 
#1

Problem mit Selection im tWebbrowser

  Alt 30. Mär 2005, 22:02
Hi,

ich bin dabei, mit Delphi und dem tWebbrowser einen einfachen WYSIWYG-Editor zu erstellen. Als Besonderheit (weil ich das häufiger benötige) soll dieser auch das Kopieren / Verschieben von ganzen Bereichen (entweder mit <div> oder mit <table>) ermöglichen, wenn sich nur der Cursor in einem solchen Bereich befindet.

Dazu habe ich mir folgendes überlegt:

Die Erkennung eines solchen Bereichs soll dadurch erfolgen, dass er sich nur eine Ebene unter <body> befindet. (Allerdings könnte auch ein besonderer Kommentar zur Kennzeichnung der Bereiche verwendet werden).

Also zum Beispiel:

XML-Code:
<html>
  <head>
    ...
  </head>

  <body>
    <div>
      

Dies ist der erste Bereich</p>
      <table><tr><td>Zelle 1</td><td>Zelle 2</td></tr></table>
      

Dies ist noch immer der erste Bereich</p>
    </div>

    <table>
      <tr><td>2. Bereich</td></tr>
    </table>
  </body>
</html>
Wenn sich der Cursor irgendwo im 1. Bereich befindet, soll der ganze HTML-Code von <div> bis </div> zurückgegeben werden, wenn er sich im 2. Bereich befindet, alles von <table> bis </table>.

Zur Selektierung eines Bereiches habe ich folgende Prozedur geschrieben:

Delphi-Quellcode:
procedure TMainForm.Button1Click(Sender: TObject);
var
  selectionObj: IHTMLSelectionObject;
  selectionRange: IHtmlTxtRange;
  bodyElement: IHtmlElement;
begin
  selectionObj := IHTMLDocument2(Webbrowser.Document).Selection;
  selectionRange := IHtmlTxtRange(selectionObj.CreateRange);
  bodyElement := IHtmlElement(IHTMLDocument2(Webbrowser.Document).body);

  while selectionRange.parentElement <> bodyElement do begin
    selectionRange.movetoelementtext(selectionRange.parentElement);
    showmessage(selectionRange.htmlText);
  end;
end;
Leider läuft diese Schleife immer weiter, ohne die Markierung zu erweitern.

Was könnte ich denn da falsch machen???

(Gerne sind auch alternative Lösungsvorschläge für das beschriebene Problem willkommen)
  Mit Zitat antworten Zitat
 

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 11:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz