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 ...)