ボタンの押下判定

解決


deldel3号  2009-04-30 20:55:10  No: 34220

ボタン1、ボタン2と二つのボタンが同じformにあります。
その際、どちらのボタンを押しても同じメソッドに飛ぶ処理があります。
そのメソッド内でボタン1が押下されて処理する場合とボタン2が
押下されて処理する内容を変えたいと思っています。
つまり、ボタンがクリックされている状態かの判定ができるかという
質問です。

if Button1.onclick= true then (処理)
if ActiveControl = Button1 then (処理)
if Button1.OnkeyPress=true then (処理)

という処理ではできませんでした。
  
よろしくお願い致します。


せんだ  2009-04-30 21:36:52  No: 34221

イベントの引数にある
Sender: TObjectをつかってみ。


majide  2009-04-30 23:58:52  No: 34222

・フォームにボタンを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;


Delphi大好き  2009-05-01 08:31:03  No: 34223

Buttonコンポーネントを二つ選択します
イベントハンドラからオンクリックをします(重要)
これでbutton1とbutton2でイベントハンドラを共有させます

  if  TButton(sender).caption = 'Button1' then
    caption := TButton(sender).caption 
  else
    caption := TButton(sender).caption;

これでボタンが区別される筈です


Delphi大好き  2009-05-01 21:50:26  No: 34224

追伸
>majideさん

Tagプロパティの使い方勉強させていただきました。
これまで使ったことが無いプロパティだったので。

Case文で使うと何かと便利そうですね
機会があったら使って見ます

駄文スレすいません。


DA  2009-05-01 22:38:28  No: 34225

ちなみにTagとかCaptionに頼らなくても
if Sender = Button1 then
だけで判別可能です。まあ、Caseとか配列と組み合わせるならTagが便利ですけれども。


deldel3号  2009-05-02 03:53:36  No: 34226

皆様ありがとうございました。解決いたしました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加