アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんは。初心者です。プログラミングでたくさんわからないところがあります。
教えてくださるととても嬉しいです。

1.複数のMemo(TMemo)コンポーネント間でカーソル入力をTButtonの操作で
移動させるにはどのようなプログラムをかけばよいでしょうか。

2.同じくTButtonの操作でカーソルを設定した位置に文字列を入力するには
どのようなプログラムを書けばよいでしょうか。

どなたかお返事いただけるのを心からお待ちしています。
できれば上記のような疑問を調べられる参考書・参考サイトも
教えてくださるとさらに嬉しいです。よろしくお願いいたします。

A 回答 (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;
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/05/18 21:59

あとは、Delphi Memo 使い方で検索すれば見つかると思います。


たとえば、0行目に'AAA'を入力するには
Memo1.Lines[0] := 'AAA';

追加するには
Memo1.Lines.Add( 'ABCあいう' ); // 1行づつ文字列をセット
とか。
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/05/18 22:02

SetFocusを使えば、入力するコンポーネントを移動できるみたいです。



procedure TForm1.Button1Click(Sender: TObject);
begin
Memo2.SetFocus;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Memo1.SetFocus;
end;
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/05/18 22:04

詳しくは知らないのですが..


1.2はパス。詳しい人が教えてくれるでしょう。

掲示板はこれが一番だと思います。
http://hpcgi3.nifty.com/e-papy/DelphiBBS/wwwlng. …
(でも、私はつかれるのでやめました)

初心者用のサイトはこれかな
http://kakinotane.s7.xrea.com/delphi/d2/toc.html

参考書は私はXE用のを持ってますけど、お使いのDelphiのバージョンによって違うので、それを書いた方がいいのかな。

すぐに回答がほしいということですので。
あまり参考にならないかもしれませんけど。

この回答への補足

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

補足日時:2014/05/15 20:01
    • good
    • 0
この回答へのお礼

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

お礼日時:2014/05/15 20:01

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!