イベントの再入防止
どこかにTipsとかでありそうなネタだけど。
イベントに入ってきた所で最初にイベントに対してnilを代入する。
処理が終わったらイベントにメソッドを設定し直す。
procedure TForm1.Button1Click(Sender: TObject); begin TControl(Sender).OnClick := Nil; // なにか処理 // TControl(Sender).OnClick := Button1Click; end;
同じような感じで、起動時に一回だけ処理を実行したいとかの場合。
FormのOnCreateだと具合が悪い時は、OnShowイベントかOnActivateイベントを使ってイベントの中でNilを設定する。
procedure TForm1.FormShow(Sender: TObject); begin Self.OnShow := Nil; // 何か処理 end;