フォームOnCloseイベントを使用するプロジェクトには、多くのフォームがあります。 しかし、私は実行時に他の "汎用" OnCloseをすべてのフォームに追加する必要があります。 新しいイベントメソッドを置き換えるのではなく、新しいイベントメソッドを追加する方法はありますか?したがって、フォームは両方のOnCloseイベントをトリガーします。Delphi - 既存のフォームにOnCloseを割り当てよう
2
A
答えて
6
イベントには、一度に1つのハンドラだけを割り当てることができます。
「フォーム」のOnClose
イベントに「汎用」ハンドラを割り当ててから、ローカルの作業を行うために各フォームが仮想DoClose()
イベントをオーバーライドするようにすることができます。ジェネリックハンドラを呼び出す準備ができたら、継承されたDoClose()
メソッドを呼び出すことができます。たとえば:
type
TMyForm = class(TForm)
protected
procedure DoClose(var Action: TCloseAction); override;
end;
procedure TMyForm.DoClose(var Action: TCloseAction);
begin
// do something here...
inherited; // <-- call OnClose handler
end;
代替は、実際のイベントハンドラのマルチキャストデリゲートを実装するために、必要に応じて、その後、デリゲートは、他のハンドラを呼び出すことができます。 (コールするDoClose()
を使用して
Multicast events using generics
MultiCast Events - Part 1
MultiCast Events - Part 2
また MultiCast Events - Conclusion
は、あなたが完全にOnClose
イベントを無視し、代わりにObserverパターンを実装することができます:ここではそのトピックには、いくつかのブログがありますオブザーバー)。ここでは、そのトピックには、いくつかのブログされています
Observer Design Pattern in Delphi
関連する問題
- 1. ADO.NET EF:既存のデータベースのないテーブルにモデルを割り当てよう
- 2. vbaの変数に既存のドキュメントを割り当てる
- 3. 既存の列をSASのインデックスに割り当てる?
- 4. 新しいリストインデックスを既存のリストに割り当てる
- 5. 既存のエンティティに親を割り当てます。
- 6. 既存の顧客へのオーダーの割り当て(WooCommerceで)
- 7. 既に割り当てする変数割り当てのiPhone SDK
- 8. 辞書の既存のキーの値をどのように割り当てることができますか?
- 9. Python pandas繰り返しで既存のデータフレームに割り当てる
- 10. Delphi 7 - TImageをTImageの配列に割り当てる
- 11. DLL内のApplication.HandleにApplication.MainForm.Handleを割り当てるDelphi XE2
- 12. パンダのデータフレームの既存の列にリストを割り当てる方法は?
- 13. ARMテンプレート内の既存のサービスプランにWeb Appを割り当てます。
- 14. 既存の列に新しい列を列インデックスで割り当てる
- 15. Delphi FiremonkeyでTSpeedButtonにビットマップを割り当てる方法
- 16. 既に割り当てられていない限り、R変数にデフォルト値を割り当てますか?
- 17. メモリをmalloc()で割り当てよう
- 18. 既に存在するオブジェクトに{}を割り当てるとはどういう意味ですか?
- 19. C - 動的割り当ては既存のデータを上書きしますか?
- 20. Delphi 5でのOleVariantとStringの割り当て
- 21. 既存の構造体へのポインタの配列の割り当てとソート
- 22. Djangoモデル - オブジェクトの代わりにidを割り当てよう
- 23. MVC3のイントラネットユーザープロビジョニング(ロール割り当て)用の既存のコードまたはテンプレート
- 24. どのようにDelphiのすべてのフォームを再保存するには?
- 25. 既に新しい変数名が割り当てられている場合、どのように新しい変数名を割り当てますか? Ruby
- 26. mysql変数の割り当て:どのように割り当て順序を強制するのですか?
- 27. ベクトルによる値の割り当て
- 28. 単一のキーボードショートカットをWebフォームのラジオボタンに割り当てる
- 29. どのようにデータを分割して割り当てるのですか?
- 30. Calloc()が以前に割り当てられたメモリを割り当てようとしています
は、独自のTFormはサブクラスを作成し、火災そのあなた自身の2番目のイベントを追加することを検討してください。すべてのフォームでコードを複製する必要はなく、各フォームで使用されるように継承します。 –
一般的なOnCloseを実行時に割り当てる必要があるのはなぜですか?実行時にコードをアタッチすると、そのコードが設計時に何をプレフォームするか分かりません。私が想像する限り、これはOnCloseのためのクリーンアップコードのまれなケースです。 – DrWael
実際、すべてのフォームに近い確認のダイアログを追加するだけです。しかし、多くのFormsは既にOnCloseイベントを所有しているので、次のような新しいメソッドを割り当てることはできません。Form.OnClose:= ConfirmationDialog();またはそれは既存のメソッドを置き換えます –