ボタンをクリックするたびに違う処理を実行するには?

解決


ワルサーP38  2006-04-09 18:23:27  No: 20942  IP: 192.*.*.*

チェックボックスなら
if CheckBox1.Checked then
begin
処理
end
else
begin
処理
end

でできるんですが、buttonの場合はどうなるのでしょうか?

編集 削除
ちらつき防止隊員  2006-04-09 18:35:06  No: 20943  IP: 192.*.*.*

変数なりなりなんなり定義して今までやっていましたが、他に方法あるのかな?
どのように違う処理をしたいのかにもよると思いますが。違う処理をするために条件があるはずですから、分岐できると思います。

編集 削除
ワルサーP38  2006-04-09 18:37:49  No: 20944  IP: 192.*.*.*

ちらつき防止隊員さん、ありがとうございます。
>変数なりなりなんなり定義して今までやっていましたが、他に方法あるのかな?
この方法のヒントを教えてもらえますか?
本当に申し訳ないです・・・(^^;

編集 削除
igy  2006-04-09 20:57:15  No: 20945  IP: 192.*.*.*

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private 宣言 }
    Mode: Integer;    // <=== 追加
  public
    { Public 宣言 }
  end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    Mode := 1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    if Mode = 0 then
    begin
        // Modeが0のときの処理
    end
    else
    begin
        // それ以外のときの処理
    end;
end;


ボタンのTagプロパティを使う方法もあります。

procedure TForm1.FormCreate(Sender: TObject);
begin
    Button1.Tag := 1;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
    if TButton(Sender).Tag = 0 then
    begin
        // Tagが0のときの処理
    end
    else
    begin
        // それ以外のときの処理
    end;
end;

編集 削除
ちらつき防止隊員  2006-04-09 23:47:47  No: 20946  IP: 192.*.*.*

>この方法のヒントを教えてもらえますか?
既にレスがありますね。
ようするに、チェックボックスのCheckedプロパティは  Boolean型の変数で、それがチェックされているか、されていないかで条件分岐するわけですよね?
ボタンはそういったプロパティがないわけですから、なら、適当に変数を定義して・・・、とigyさんが書いてあるとおりなわけです。
ただ、おみくじみたいに、ランダムに処理を違えたければ、Delphiにもランダムな整数だか実数だかを生成する関数かなんかあるでしょう。
関数の名前は知りませーん

編集 削除
deldel  2006-04-10 09:15:17  No: 20947  IP: 192.*.*.*

こんなのもありますよ。

procedure TForm1.Button1Click(Sender: TObject);
const
  bo: Boolean = False;
begin
  bo := not bo;
  if bo then begin
    Windows.Beep($AAA, 100);
  end else begin
    Windows.Beep($FFF, 100);
  end;
end;

編集 削除
ぴのこ  2006-04-10 12:10:38  No: 20948  IP: 192.*.*.*

アラマンチュー!

ボタン2つ使って
Visibleで切り替えて表示する方法もあるよのさ!

procedure TForm1.Button1Click(Sender: TObject);
begin
  <<  1の処理  >>
  Visible := false;
  Button2.Visible := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  <<  2の処理  >>
  Visible := false;
  Button1.Visible := true;
end;

編集 削除
仮面サイダー  2006-04-10 16:52:48  No: 20949  IP: 192.*.*.*

ヘンシ〜ン!
SetWindowLong(CheckBox1.Handle, GWL_STYLE, GetWindowLong(CheckBox1.Handle, GWL_STYLE) or BS_PUSHLIKE);

編集 削除
ワルサー  2006-04-14 19:45:58  No: 20950  IP: 192.*.*.*

こんなにたくさんのサンプルを出していただいてありがとうございます!
私も微力ながら、このBBSの質問に答えるようになろうとおもいます!
本当にありがとうございました。感謝です

編集 削除