ボタンをクリックされたかどうか知るには

解決


デルデル  2006-08-24 09:29:08  No: 22979  IP: 192.*.*.*

他の関数内で、あるボタンをクリックされたかどうか知るにはどうすれば良いのでしょう?
procedure TRoiSetForm.RadioGroup1Click(Sender: TObject);
begin
   if Sender = BitBtn1 then (処理)
end;

のような書き方ではBitBtn1は押されていないと判断されてしまいます。
BitBtn1Click内でフラグを作る方法しかないのでしょうか?

編集 削除
ん?  2006-08-24 10:09:47  No: 22980  IP: 192.*.*.*

フラグを使わないけど、めんどくさい...

procedure TForm1.BitBtn1Click(Sender: TObject);
var
  event: TNotifyEvent;
begin
  event:= RadioGroup1.OnClick;
  RadioGroup1.OnClick := nil;

  RadioGroup1.ItemIndex := 1;

  RadioGroup1Click(Sender{or BitBtn1})
  RadioGroup1.OnClick := event;
end;

「マウスダウン中である」という判定は、マウスクリックイベント発生時には消えてるし、
スペースキーやエンターキーでもクリックイベント発生するので、難しいのでは??

呼び出し履歴みたいなもので、簡単に追跡できる方法があれば、自分も教えて欲しいです。

編集 削除
デルデル  2006-08-24 11:35:45  No: 22981  IP: 192.*.*.*

ん?さん、ありがとうございます。
「マウスダウン中である」という判定は難しいのですね。
今回はフラグを使用してみます。

編集 削除
ん?  2006-08-25 11:49:50  No: 22982  IP: 192.*.*.*

遅レスですが、ちょっと思いついただけの一言

マウスダウン中の判定じゃなく、フォーカスを取得できるTButton,TBitBtnであれば、
ActiveControlで判断するのもいいかも。

if ActiveControl = BitBtn1 then (処理)

編集 削除