TWebBrowser, как установить позицию каретки в конец поля ввода (текста) в IE8 - PullRequest
4 голосов
/ 26 января 2012

У меня есть приложение, которое загружает веб-страницу через 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 Ответ

6 голосов
/ 26 января 2012

Вы должны использовать IHTMLTxtRange

var Tr: IHTMLTxtRange;

Tr := (El as IHTMLInputElement).createTextRange;
Tr.collapse(true);
Tr.moveEnd('character', Length(NewValue));
Tr.moveStart('character', Length(NewValue));
Tr.select();   
...