Edit1のOnExitイベントについてです。
Edit1からカーソルが抜けてなおかつButton1が押されなかった場合
という処理はどう書けばいいのでしょうか?
ボタンをクリックしたかどうかを記憶するフラグを用意し、
TForm1 = class(TForm)
private
{ Private 宣言 }
flg: Boolean; // <==これ
public
{ Public 宣言 }
end;
フォームのOnCreateイベントで、
flg := false;
のように初期化し、
ボタンのOnClickイベントで、
flg := true;
を追加しておき、
そのフラグの値で、ボタンをクリックしたかどうか判断するのは
どうですか?
訂正です。
先ほど挙げた方法だと、
ボタンをクリックしてEdit1のOnExitイベントが発生した場合
ボタンのOnClickイベントで
flg := true;
になる前に、Edit1のOnExitイベントが発生してしまうので、
>そのフラグの値で、ボタンをクリックしたかどうか判断するのは
>どうですか?
というのは、無理みたいですね。
こういうことかな?
フォームにEdit2個とボタンを置いて・・・
TForm1 = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
ActiveControl,
LastActiveControl :TWinControl;
procedure OnChangeActiveControl(aSender: TObject);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Screen.OnActiveControlChange := OnChangeActiveControl;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if LastActiveControl <> Edit1 then begin
Button1.Caption := 'OK';
end
else begin
Button1.Caption := 'False!!';
end;
end;
procedure TForm1.OnChangeActiveControl(aSender: TObject);
begin
LastActiveControl := ActiveControl;
ActiveControl := Screen.ActiveControl;
end;
ツイート | ![]() |