• ベストアンサー

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

  • DelphiのTMemoのテキスト末尾の改行削除

    Delphiで付箋ソフトを作ろうとしています。 それで、Memoコンポーネント(TMemo)に入力されたテキストの末尾に改行があったら、それを削除したいのですが、改行があるかどうかを検知することすらできません。 Memo1.Lines.Strings[Memo1.Lines.Count-1] が最後の行の文字列の内容になるはずなのですが、末尾に改行があってもなくても、これ↑には同じ文字列(末尾に改行なし)が入っています。でも、表示上は異なっているんです。 どなたか、わかる方いらっしゃいましたら教えてください。

  • 初心者の質問なのですが。

    お世話になります。 WindowsXPを使用しているのですが、 ・excelなどで作成したデータを他の形式のファイルへエクスポートする。 ・エクスポートしたファイルをファイルサーバへ移動させる。 などといった複数の操作をワンクリックで済ませるような簡単なプログラムを作ってみたいと思うのですが、 (1)どのプログラミングを勉強したらよいでしょうか? (2)またプログラミングの勉強を始めるには、何から勉強したらよいでしょうか?参考書籍、URLなどありましたら教えてください。 分かりにくい質問ですが宜しくお願いします。

  • jTextAreaのカーソル操作について

    二つのスレッドがjTextAreaへのテキスト書き込みを行うJavaアプリケーションを作っています。そこで、jTextArea内でのカーソルの移動をプログラム側で制御したいのですが、カーソル移動の方法がわかりません。A、Bのスレッドがあるとして、Aはキーボードからの入力を表示する。ここでは入力位置にカーソルがあるので問題ありませんが、Bのスレッドがテキストをappend()した場合、append()されたテキストの文末にカーソルを移動したいのです。現状ではカーソルはキーボード入力された文末に留まったままになり、矢印キーでappend()されたテキスト分移動させなくてはなりません。これではさすがに操作性が悪すぎますし、かっこ悪いですよね。どなたかカーソルの操作方法をご存知でしたら教えていただけないでしょうか。よろしくお願いします。

    • ベストアンサー
    • Java
  • プログラミング初心者です・・・

    プログラミング初心者です。独学なのですが、参考書に載っている簡単なプログラムを、自分で入力して正しく書けているか確かめるためにメモ帳に書いたのですが使い方がわかりません・・・ 実際に実行するにはメモ帳じゃなくて、他に何か方法があると思うのですが、教えて頂けないでしょうか? すみませんが、よろしくお願いします。

  • Delphiでグリッドのある列を指定するとカーソルを移動できるようにしたい

    はじめまして。 よろしくお願いいたします。 グリッドにシーケンス番号と内容が列として表示される状態です。 12番の内容を見たいと思って、 12番→表示ボタンと押すと 選択カーソルが12番目を探し出してカーソルを移動させるように したいのですが、どういった方法でやればよろしいでしょうか? コンポーネントの機能でありそうなのですが、 分からないのでよろしくお願いいたします。

  • 編集機能を持つテキストエディタの作成を!!!

    この四つの作成プログラムをを教えて下さい。'i'が入力されるとカーソルの位置に指定した文字列を挿入する。'd'が入力されるとカーソルの位置から指定された文字数だけ削除する。'c'が入力されるとカーソルの位置から指定された文字数だけカーソルを移動する。'q'が入力されると内容をファイルにセーブして編集を終了する。ただし、編集対象は一行文の文字列とし、カーソルは'*'で表示する。誰か私を助けて下さいサッパリわかりません。

  • Word のVBAについて初心者なのですが、質問があります。

    Word のVBAについて初心者なのですが、質問があります。 ワード文書内の表について、カーソルのある位置の行番号や列番号を取得する方法は Informationを使用して取得することができるのはわかったのですが、 文書内にある、複数の表について、行番号や列番号のように、 カーソル位置の表番号って取得することができるのでしょうか? 文書内の複数の表の総数をActiveDocument.Tables.Countで数えることができるらしい というのはネットで調べてわかったのですが、現在選択されている(カーソル位置)表が 文章内の何番目の表なのかというのができるのかどうか・・・・。 きっとInformationのように一つのコードではなくて、いろいろ組み合わせて 数えるのではないかと推測しているのですが・・・・。 すみません、誰かわかる方がいらっしゃいましたら教えてください。

  • プログラミングについて(※初心者です)

     プログラミングに少し興味をもったので、なにかしら取り組んでみようと思いましたが早々と行き詰っています。プログラミングそのものというより、それ以前の操作の仕方でとまってしまってます。  プログラミングをするには、プログラムを書くもの(メモ帳でもいいみたいですね)と実行するもの(コンパイラというものですか?)が必要だということで、「Microsoft Visual C++2008 Express Edition」を早速インストールしてみましたが・・・  「ファイル→新規作成→プロジェクト」と進むと、なにやら色々と選択する必要があるようですね(プロジェクトの種類とテンプレート)。  何かプログラムを自分で書いて、それを実行させようとするにはここからどのように進めればいいのでしょうか?

  • 無人リモートデスクトップ上でマウスを自動操作

    リモートデスクトップ上のカーソルをプログラムで自動的にマウスを操作したいのですが、 リモートデスクトップからログアウト又は管理画面外にカーソルが出るとカーソルが消えてしまい、 プログラムは動作していてもカーソル見えず移動も出来ません。 どのようにすれば無人のリモートデスクトップのカーソルを操作出来るようになるでしょうか?

  • ボタンのみにフォーカスを合わせたい。

    ボタンのみにフォーカスを合わせたい。 フォーム上に動的に作成したボタンをキー入力だけで操作したいのですが、方向キーを使ってカーソルを移動させるとどのボタンにもフォーカスが合わなくなります。 →キーを押してカーソルを移動させていくと端のボタンの上で→キーを押すとどこかへいってしまいます。 ■ □ □  □ ■ □ □ □ ■ □ □ □ よろしくお願いします。

専門家に質問してみよう