4

TWebBrowserを介してWebページをロードするアプリケーションがあり、このページにいくつかの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からのみ使用できます。

4

1 に答える 1

6

あなたは使用する必要がありますIHTMLTxtRange

var Tr: IHTMLTxtRange;

Tr := (El as IHTMLInputElement).createTextRange;
Tr.collapse(true);
Tr.moveEnd('character', Length(NewValue));
Tr.moveStart('character', Length(NewValue));
Tr.select();   
于 2012-01-26T16:15:46.980 に答える