TWebBrowser, как установить позицию каретки в конец поля ввода (текста) в IE8
У меня есть приложение, которое загружает веб-страницу через TWebBrowser, и на этой странице у меня есть некоторые HTML-вводы. Я хочу изменить значение ввода и установить позицию каретки до конца.
Вот что у меня на данный момент:
procedure SetInputValue(Document : IHTMLDocument2; const ElementId, NewValue : String);
var Doc : IHTMLDocument3;
El : IHTMLElement;
begin
Doc := Document as IHTMLDocument3;
if Assigned(Doc) then
begin
El := Doc.getElementById(ElementId);
if Assigned(El) then
begin
if El.tagName = 'INPUT' then
(El as IHTMLInputElement).Value := NewValue;
(El as IHTMLInputElement).select;
end;
end;
end;
Этот фрагмент кода устанавливает входное значение и выделяет текстовую часть. Мне известно об интерфейсе IHTMLInputTextElement2, но он доступен только из IE9
1 ответ
Решение
Вы должны использовать IHTMLTxtRange
var Tr: IHTMLTxtRange;
Tr := (El as IHTMLInputElement).createTextRange;
Tr.collapse(true);
Tr.moveEnd('character', Length(NewValue));
Tr.moveStart('character', Length(NewValue));
Tr.select();