Форум: "Начинающим";
Текущий архив: 2018.06.10;
Скачать: [xml.tar.bz2];
ВнизTWebBrowser , в режиме редактирования, заменить текст выделения Найти похожие ветки
← →
ford © (2016-05-23 13:10) [0]Доброго времени суток!
Помогите решить проблеммку. Есть TWebBrowser в режиме редактирования, пользователь выделяет часть текста, далее нажимает кнопочку, программка обрабатывает этот текст и заменяет выделение этим обработанным текстом.
Вот код:
procedure UpperSelection(Sender:TObject);
var r:IHTMLTxtRange;
st:String;
begin
r:=(fHTML.selection.createRange as IHTMLTxtRange);
if r.text="" Then
Begin
r.expand("word");
r.select;
if r.text="" Then
Begin
r.expand("charater");
r.Select;
end;
end;
st:= r.text;
st:=AnsiUppercase(st);
r.text:=st;
end;
Все замечательно, НО, если в выделенном фрагменте присутствуют тэги, то приst:= r.text;
st:=AnsiUppercase(st);
r.text:=st;
они естественно пропадают.
Пробовал использовать свойство HTMLText, и метод PasteHTML.
Но если я выделяю часть абзаца с завершающим тэгом</P>
, то свойство HTMLText, содержит текст выделения с автоматически установленным тэгом<P>
, соответственно если фрагмент содержит начало абзаца, то автоматом добавляется тэг завершения абзаца</P>
. В добавок, после PasteHTML, выделение снимается, хотя конечно хотелось, чтобы выделение осталось.
Подскажите, как изменить текст выделения, при этом чтобы разметка осталась на месте, а так же само выделение не сбрасывалось?
← →
ВладОшин © (2016-07-02 21:26) [1]даже так можно.. Спасибо! )
накидал пример как обойти
var
s,s2: string;
SelectionO: IHTMLSelectionObject;
TxtRangeO: IHTMLTxtRange;
begin
document := WB1.Document as IHTMLDocument2;
if Assigned(document) then
begin
SelectionO := document.selection as IHTMLSelectionObject;
TxtRangeO := SelectionO.createRange as IHTMLTxtRange;
Print(TxtRangeO.htmlText); // print = memo1.lines.add
// TxtRangeO.execCommand("BackColor", False, clRed); // забавно)
s := AnsiUpperCase(TxtRangeO.htmlText);
s2 := AnsiUpperCase(TxtRangeO.text);
Print(s);
TxtRangeO.pasteHTML(s);
TxtRangeO.moveStart("character", -Length(s2));
TxtRangeO.moveEnd("character",0);
TxtRangeO.select();
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2018.06.10;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.001 c