ボタン1、ボタン2と二つのボタンが同じformにあります。
その際、どちらのボタンを押しても同じメソッドに飛ぶ処理があります。
そのメソッド内でボタン1が押下されて処理する場合とボタン2が
押下されて処理する内容を変えたいと思っています。
つまり、ボタンがクリックされている状態かの判定ができるかという
質問です。
if Button1.onclick= true then (処理)
if ActiveControl = Button1 then (処理)
if Button1.OnkeyPress=true then (処理)
という処理ではできませんでした。
よろしくお願い致します。
イベントの引数にある
Sender: TObjectをつかってみ。
・フォームにボタンを2つおく
・各ボタンのtagプロパティにあらかじめ番号をセットする
・2つのボタンのOnClickイベントに同じOnClickを設定する
procedure TForm1.ButtonClick(Sender: TObject);
const
A = 0;
B = 1;
begin
case TButton(Sender).Tag of
A:begin
//tag=0のボタンクリック時の処理
showmessage('Aです');
end;
B:begin
//tag=1のボタンクリック時の処理
showmessage('Bです');
end;
end;
end;
Buttonコンポーネントを二つ選択します
イベントハンドラからオンクリックをします(重要)
これでbutton1とbutton2でイベントハンドラを共有させます
if TButton(sender).caption = 'Button1' then
caption := TButton(sender).caption
else
caption := TButton(sender).caption;
これでボタンが区別される筈です
追伸
>majideさん
Tagプロパティの使い方勉強させていただきました。
これまで使ったことが無いプロパティだったので。
Case文で使うと何かと便利そうですね
機会があったら使って見ます
駄文スレすいません。
ちなみにTagとかCaptionに頼らなくても
if Sender = Button1 then
だけで判別可能です。まあ、Caseとか配列と組み合わせるならTagが便利ですけれども。
皆様ありがとうございました。解決いたしました。
ツイート | ![]() |