• ベストアンサー

Delphi初心者 ボタン操作について質問です

こんばんは。初心者です。プログラミングでたくさんわからないところがあります。 教えてくださるととても嬉しいです。 1.複数のMemo(TMemo)コンポーネント間でカーソル入力をTButtonの操作で 移動させるにはどのようなプログラムをかけばよいでしょうか。 2.同じくTButtonの操作でカーソルを設定した位置に文字列を入力するには どのようなプログラムを書けばよいでしょうか。 どなたかお返事いただけるのを心からお待ちしています。 できれば上記のような疑問を調べられる参考書・参考サイトも 教えてくださるとさらに嬉しいです。よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.4

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;

iogimi
質問者

お礼

ありがとうございます。 TSpeedButtonというコンポーネントはまだ手を付けていませんでした。とても役に立ちそうです。 参考にいたします。

その他の回答 (3)

  • kihonkana
  • ベストアンサー率42% (9/21)
回答No.3

あとは、Delphi Memo 使い方で検索すれば見つかると思います。 たとえば、0行目に'AAA'を入力するには Memo1.Lines[0] := 'AAA'; 追加するには Memo1.Lines.Add( 'ABCあいう' ); // 1行づつ文字列をセット とか。

iogimi
質問者

お礼

ありがとうございます。 既に使っている文ではありますがとても重宝するものです。

  • kihonkana
  • ベストアンサー率42% (9/21)
回答No.2

SetFocusを使えば、入力するコンポーネントを移動できるみたいです。 procedure TForm1.Button1Click(Sender: TObject); begin Memo2.SetFocus; end; procedure TForm1.Button2Click(Sender: TObject); begin Memo1.SetFocus; end;

iogimi
質問者

お礼

ありがとうございます。 試した文ではあるのですが、if文等他の要素と絡むとややこしくなるようで他の方法に逃げてしまいました。

  • kihonkana
  • ベストアンサー率42% (9/21)
回答No.1

詳しくは知らないのですが.. 1.2はパス。詳しい人が教えてくれるでしょう。 掲示板はこれが一番だと思います。 http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng.cgi (でも、私はつかれるのでやめました) 初心者用のサイトはこれかな http://kakinotane.s7.xrea.com/delphi/d2/toc.html 参考書は私はXE用のを持ってますけど、お使いのDelphiのバージョンによって違うので、それを書いた方がいいのかな。 すぐに回答がほしいということですので。 あまり参考にならないかもしれませんけど。

iogimi
質問者

お礼

すぐにお返事ありがとうございます。 回答は早くにいただければもちろん助かるのですが、 プログラムできるまで(自分でも努力していますが、リファレンスなど見つからず) お返事続けていただければと思っています。 バージョン書き忘れました。Delphi7です。

iogimi
質問者

補足

バージョン書き忘れました。Delphi7です。 よろしくお願いいたします。

関連するQ&A

専門家に質問してみよう