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


 2009-07-10 01:29:56  No: 35105  IP: [192.*.*.*]

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

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

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

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

編集    削除
KHE00221  2009-07-10 04: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-10 04:49:43  No: 35108  IP: [192.*.*.*]

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

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

編集    削除