- PR -

【Delphi(デルファイ)】コントロール配列のつくりかた

投稿者投稿内容
わしこ
常連さん
会議室デビュー日: 2005/10/18
投稿数: 35
投稿日時: 2006-06-16 11:56
Delphiについて他に質問できそうな所が無かったので、
VBに似ていると言われているようなのでここで質問させてください><

Delphiをインストールしてかれこれ1時間ほど
コントロール配列の作成をしていますができません。

btn1〜3を作成し、Label1に「1」or「2」or「3」を出力、という極単純なことがしたいのです。

http://www.w-frontier.com/delphi/4_calc.htmlを参考に作成しています。

方法↓
btn1〜3を作成する。
[Shift]を押下したままbtn1〜3をクリックして選択する。
ダブルクリックする。

以上の方法でできると書いてありますが、
結果はbtn3をクリックすると「3」と出力されるだけで、
btn1,btn2は音沙汰無しです。

場違いだとは思いますが、
もしDelphiを使用されたことがあるという方がいらっしゃいましたら、ご教授くださいませ。

実行コードは以下===========================================
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
btn1: TButton;
btn2: TButton;
btn3: TButton;
Label1: TLabel;
procedure btn3Click(Sender: TObject);
private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.btn3Click(Sender: TObject);
var s : Char ;
begin
if Sender is TButton then
begin
s := TButton(Sender).Name[4] ;
Label1.Caption := s;
end;
end ;

end.


[ メッセージ編集済み 編集者: わしこ 編集日時 2006-06-16 13:03 ]
未記入
会議室デビュー日: 2006/06/16
投稿数: 3
投稿日時: 2006-06-16 13:24
貼り付けてあったコードでテストしてみましたが、うまく動きました。
もしかしたら、ボタン1と2にクリックイベントをセットしていないのでは?
わしこ
常連さん
会議室デビュー日: 2005/10/18
投稿数: 35
投稿日時: 2006-06-16 13:35
未記入さん、お返事ありがとうございます。。

引用:

もしかしたら、ボタン1と2にクリックイベントをセットしていないのでは?



ボタン1と2のクリックイベントをセットするというのは

procedure TForm1.btn3Click(Sender: TObject);
begin
[略]
end ;

だけじゃなく
procedure TForm1.btn1Click(Sender: TObject); と
procedure TForm1.btn2Click(Sender: TObject); を
追加するという意味ですよね?

そしたらコントロール配列にする意味がなくなってしまうのではないでしょうか?

VBでは、ひとつのコントロールをコピペしたら
必然的にコントロール配列になっていたのですが、
Delphiでは同じ方法をとってもコントロール配列にならないのですね。
未記入
会議室デビュー日: 2006/06/16
投稿数: 3
投稿日時: 2006-06-16 13:45
私がコントロール配列の概念を理解できていないのかもしれませんが、
ボタン1とボタン2のイベントのOnClickに「btn3Click」と入れれば、
ボタン1・2・3すべて「btn3Click」のイベントが実行されると思います。
的外れな回答であったならすいません。
わしこ
常連さん
会議室デビュー日: 2005/10/18
投稿数: 35
投稿日時: 2006-06-16 13:53
未記入さん、レスありがとうございます。

引用:

ボタン1とボタン2のイベントのOnClickに「btn3Click」と入れれば、
ボタン1・2・3すべて「btn3Click」のイベントが実行されると思います。



ボタン1、2を押したときに同時にボタン3を押したいのではなく、
初回の書き込み---------------
btn1〜3を作成し、Label1に「1」or「2」or「3」を出力、という極単純なことがしたいのです。
----------------------------
上の意味は、
ボタン1を押した→「1」と表示
ボタン2を押した→「2」と表示
ボタン3を押した→「3」と表示
という動きにしたいのです。

ボタンxを押した→「x」と表示
という動きを1〜3に適応させればいいので
コントロール配列にしようと思ったわけです。

私の書き込みが悪くお手数おかけしてすみませんがよろしくお願いいたします。
七味唐辛子
ぬし
会議室デビュー日: 2001/12/25
投稿数: 660
投稿日時: 2006-06-16 13:58
[quote]
わしこさんの書き込み (2006-06-16 13:53) より:
未記入さん、レスありがとうございます。

ボタン1、2を押したときに同時にボタン3を押したいのではなく、
初回の書き込み---------------
btn1〜3を作成し、Label1に「1」or「2」or「3」を出力、という極単純なことがしたいのです。

ボタン1、2を押したときにボタン3のイベントが発生するというのが正しいのでは?
ぽてCCP
常連さん
会議室デビュー日: 2006/04/06
投稿数: 30
投稿日時: 2006-06-16 13:59
デルファイは触った事がないんですが、
デルファイだと、配列の変数名が変わるんですか?

配列って、変数名が同じで、添え字によって指定されるものと
思ってたもので。
わしこ
常連さん
会議室デビュー日: 2005/10/18
投稿数: 35
投稿日時: 2006-06-16 14:06
七味唐辛子さん、レスありがとうございます。

引用:

七味唐辛子さんの書き込み (2006-06-16 13:58) より:

ボタン1、2を押したときに同時にボタン3を押したいのではなく、
初回の書き込み---------------
btn1〜3を作成し、Label1に「1」or「2」or「3」を出力、という極単純なことがしたいのです。

ボタン1、2を押したときにボタン3のイベントが発生するというのが正しいのでは?



私の初回の書き込みでは
『ボタン1、2を押したときにボタン3のイベントが発生する』と受け取られても仕方ない、
という意味ですよね?

ご指摘大変ありがとうございます。

確かに説明が不足していて意図する内容の書き込みではありませんが、
『ボタン1、2を押したときにボタン3のイベントが発生する』と書いているようには
どうしても思えないのですが。。。

スキルアップ/キャリアアップ(JOB@IT)