Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi tWebrowser Text schreiben - löschen (https://www.delphipraxis.net/72192-twebrowser-text-schreiben-loeschen.html)

hibbert 26. Jun 2006 21:43


tWebrowser Text schreiben - löschen
 
Hi,
ich benutze den tWebrowser gerade in meinem aktuellen Projekt. Nun benutze ich folgendes, um etwas in den Browser zu schreiben:
Delphi-Quellcode:
procedure schreibe(ausgabe:string;del:boolean);
begin
 form1.webbrowser1.OleObject.Document.write(ausgabe);

 if del then
 // text löschen
end;
So nun möchte ich gerne den Text wieder löschen, den ich eingeschrieben, also alles was ich geschrieben habe. Ist dies Möglich?
Ich verwende noch zusätzlich einige HTML zeichen, um den Text zu formatieren.

Kann mir jemand weiterhelfen?

thx hibbert

chaosben 27. Jun 2006 05:26

Re: tWebrowser Text schreiben - löschen
 
Hi hibbert!

Hier ein kleiner Ausschnitt aus einem Programm, wo ich den Webbrowser im EditMode als Editor nutze.
Delphi-Quellcode:
procedure Tform_ITEditor.tbtn_HRClick(Sender: TObject);
var
  Line : IHTMLHRElement;
  SelObject : IHTMLControlRange;
  SelText : IHTMLTxtRange;
  Node : IHTMLDOMNode;
begin
  Line:=Fdoc.createElement('hr') as IHTMLHRElement; //FDoc:=WebBrowser1.Document as IHTMLDocument2;
  //Jetzt müssen wir erstmal die Stelle bestimmten, wo wir mit dem Cursor stehen
  if (FDoc.selection.type_='Control') then //aktuelle Auswahl ist ein Control
  begin
    SelObject:=FDoc.Selection.createRange as IHTMLControlRange;
    Node:=SelObject.item(0) as IHTMLDOMNode; // ... und daraus einen Knoten machen
  end
  else //aktuelle Auswahl ist ein Stück Text oder nichts
  begin
    SelText:=FDoc.Selection.createRange as IHTMLTxtRange;
    if SelText.parentElement=nil then //Es gibt keine Auswahl ...
      Node:=FDoc.Body as IHTMLDOMNode //.. also fügen wir es in den Body ein
    else
      Node:=SelText.ParentElement as IHTMLDomNode;
  end;

  Node.appendChild(Line as IHTMLDomNode);

end;

Dieser Code fügt eine horizontale Linie ein. Entscheidend ist die letzte Anweisung, die ein IHTMLDomNode zurückliefert. Wenn du du dir diesen Knoten "merkst" (Variable) kannst du ihn nachher ganz einfach wieder löschen. (Node.parent.removeChild ...)

hibbert 27. Jun 2006 12:05

Re: tWebrowser Text schreiben - löschen
 
Hi,
wenn ich nun aber recht viel in den Webbrowser schreibe, dann muss ich mir auch recht viel merken. Da ich aber nicht irgendwas bestimmtes löschen möchte, sondern alles brauch ich mir ja eigentlich nichts zu merken, oder?

Aber ich kann ja mal ein wenig damit rumexperimentieren...

Jedenfalls danke erstmal.

hibbert

chaosben 27. Jun 2006 14:32

Re: tWebrowser Text schreiben - löschen
 
natürlich kannst du alles in ein <div> schreiben und dann das ganze div löschen

hibbert 27. Jun 2006 14:36

Re: tWebrowser Text schreiben - löschen
 
Hi,
mhh wäre ne idee, wie würde ich denn ein <div> löschen? Ich habe mir zwar dein beispiel da oben mal angeschaut, aber habe irgendwie nichts gefunden, was mich da weitergebracht hat.

hibbert

chaosben 27. Jun 2006 17:59

Re: tWebrowser Text schreiben - löschen
 
Aus dem Kopf würde ich es so machen:

Delphi-Quellcode:
procedure Tform_ITEditor.tbtn_HRClick(Sender: TObject);
var
  Div: IHTMLDivElement;
  SelObject : IHTMLControlRange;
  SelText : IHTMLTxtRange;
  Node : IHTMLDOMNode;
begin
  Div:=Fdoc.createElement('div') as IHTMLHRElement; //FDoc:=WebBrowser1.Document as IHTMLDocument2;
  //hier dem Div noch ein wenig inhalt geben

  //Das folgenden ist nur im Edit-Mode nötig (ansonsten: Node:=FDoc.Body as IHTMLDOMNode )
  //Jetzt müssen wir erstmal die Stelle bestimmten, wo wir mit dem Cursor stehen
  if (FDoc.selection.type_='Control') then //aktuelle Auswahl ist ein Control
  begin
    SelObject:=FDoc.Selection.createRange as IHTMLControlRange;
    Node:=SelObject.item(0) as IHTMLDOMNode; // ... und daraus einen Knoten machen
  end
  else //aktuelle Auswahl ist ein Stück Text oder nichts
  begin
    SelText:=FDoc.Selection.createRange as IHTMLTxtRange;
    if SelText.parentElement=nil then //Es gibt keine Auswahl ...
      Node:=FDoc.Body as IHTMLDOMNode //.. also fügen wir es in den Body ein
    else
      Node:=SelText.ParentElement as IHTMLDomNode;
  end;

  Node.appendChild(Div as IHTMLDomNode);

end;
Ach ja, div ist ja reserviert ... also lieber einen besseren Namen wählen ;)

marabu 27. Jun 2006 18:21

Re: tWebrowser Text schreiben - löschen
 
Übrigens - eine unverschämt einfache Methode zum (Re-)Initialisieren des WebBrowsers ist der Aufruf der Methode Navigate('about:blank').

Grüße vom marabu

hibbert 27. Jun 2006 18:32

Re: tWebrowser Text schreiben - löschen
 
Hi,
wenn ich aber nach about:blank navigiere, dann gehen irgendwie meine Formatierungen verlohren:
Delphi-Quellcode:
  webbrowser1.Navigate('about:blank');
  if fileexists(extractfilepath(application.ExeName)+'data\welcome.htm') then
  webbrowser1.navigate(extractfilepath(application.ExeName)+'data\welcome.htm');
  webbrowser1.OleObject.Document.write('<body bgcolor="#d0d0d0" text="#212163" link="blue" vlink="blue" alink="blue">');
deswegen werde ich doch die
Zitat:

Zitat von marabu
[...]unverschämt[...]

- Variante versuchen.

hibbert


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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-2025 by Thomas Breitkreuz