![]() |
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:
So nun möchte ich gerne den Text wieder löschen, den ich eingeschrieben, also alles was ich geschrieben habe. Ist dies Möglich?
procedure schreibe(ausgabe:string;del:boolean);
begin form1.webbrowser1.OleObject.Document.write(ausgabe); if del then // text löschen end; Ich verwende noch zusätzlich einige HTML zeichen, um den Text zu formatieren. Kann mir jemand weiterhelfen? thx hibbert |
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 ...) |
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 |
Re: tWebrowser Text schreiben - löschen
natürlich kannst du alles in ein <div> schreiben und dann das ganze div löschen
|
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 |
Re: tWebrowser Text schreiben - löschen
Aus dem Kopf würde ich es so machen:
Delphi-Quellcode:
Ach ja, div ist ja reserviert ... also lieber einen besseren Namen wählen ;)
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; |
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 |
Re: tWebrowser Text schreiben - löschen
Hi,
wenn ich aber nach about:blank navigiere, dann gehen irgendwie meine Formatierungen verlohren:
Delphi-Quellcode:
deswegen werde ich doch die
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">'); Zitat:
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