Delphi では、選択が負/逆の場合に 5 秒ごとにテキストを更新するメモでSelStart
andを保持するのに問題があります。SelLength
負/逆選択とは、どこかで選択を開始し、Shift キーを押しながら左矢印キーを数回押したことを意味します。
コード:
var
caret: TPoint;
sel_start, sel_length: Integer;
begin
sel_start := Memo1.SelStart; // = 5
sel_length := Memo1.SelLength; // = 10
caret := Memo1.CaretPos; // caret.x = 15
//'adi and bl' selected
caret.x := sel_start;
Memo1.Lines.Clear;
Memo1.Lines.Add('laditadi and blah blah');
Memo1.SelStart := sel_start;
Memo1.SelLength := sel_length;
Memo1.CaretPos := caret;
end;
問題は、SelLength を設定すると実際にキャレットが移動するように見えることです。そして、設定後にキャレットを設定SelLength
するとになりSelLength := 0;
ます。テキストは常に変化するため、TMemo.SelText
/ TMemo.SetSelText
before と after は使用できません。
キャレットの位置を保持する方法が見つかりません...手がかりはありますか?