1.複数のMemo(TMemo)コンポーネント間でカーソル入力をTButtonの操作で
移動させるにはどのようなプログラムをかけばよいでしょうか。
Focusedで今現在どこにフォーカスがあるかを判断してから、SetFocusで移動するMemoを指定すればいい。
ただし、TButtonを使うとクリックしたときそこにフォーカスが移ってしまうので、TButtonではなくTSpeendButtonを使用してください。
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if Memo1.Focused then
Memo2.SetFocus
else if Memo2.Focused then
Memo3.SetFocus
else
Memo1.SetFocus;
end;
2.同じくTButtonの操作でカーソルを設定した位置に文字列を入力するには
どのようなプログラムを書けばよいでしょうか。
これもTSpeendButtonのほうがいいです。
カーソルの位置はSelStartで調べられます。
Memo1に'ABCD'の4文字を追加する場合は、
procedure TForm1.SpeedButton2Click(Sender: TObject);
var
n: Integer;
begin
n := Memo1.SelStart;
Memo1.Text := Copy(Memo1.Text, 1, n) + 'ABCD' + Copy(Memo1.Text, n + 1, Length(Memo1.Text));
Memo1.SelStart := n + 4;
end;
お礼
ありがとうございます。 TSpeedButtonというコンポーネントはまだ手を付けていませんでした。とても役に立ちそうです。 参考にいたします。