Edit1にフォーカスがあるときだけボタンをおせるようにするには


 2009-07-09 16:29:56  No: 35105  IP: 192.*.*.*

Edit1にあるときだけButton1のEnabledをTrueにしたいのですが、どこで設定すればいいでしょうか。
Edit1のOnEntreでButton1のEnabledをTrueにしても、他のところにフォーカスを移動させた時にボタンを押すことができました。

何かほかにやり方があるのでしょうか。

編集 削除
HOta  2009-07-09 17:17:09  No: 35106  IP: 192.*.*.*

OnExitでButton1のEnabledをFalseにすれば?

編集 削除
KHE00221  2009-07-09 19:00:33  No: 35107  IP: 192.*.*.*

単純に Exit で False すると Button1 を押す直前に Exit が実行されて
Enabled := False になってしまうのでボタンが押せなくなってしまいます。

なので

procedure TForm1.Button1Exit(Sender: TObject);
begin
    if ActiveControl <> Button1 then
    begin
      Button1.Enabled := False;
    end
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
    if ActiveControl <> Button1 then
    begin
      Button1.Enabled := False;
    end
end;

のようにしてください

編集 削除
moocho  2009-07-09 19:49:43  No: 35108  IP: 192.*.*.*

SpeedButtonとの併用はだめですか?

procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
  if ActiveControl = Edit1 then
     showmessage('Edit1');
end;

編集 削除