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