2

設計時に Delphi のデフォルト プロシージャをオーバーライドするにはどうすればよいですか。

設計時に InstanceSize をオーバーライドする必要があります。実行時に FastCode メソッドを使用して実行しました。

FastcodeAddressPatch(FastcodeGetAddress(@SInstanceSize), @TWinControl.RfInstanceSize);

しかし、設計時にそれを行う方法はありますか?

アドバイスをお願いします

4

2 に答える 2

4

「設計時間」は実際には単なる「実行時間」ですが、プログラムのコンテキストではなく、IDEのコンテキストにあります。コードをデザインタイムパッケージに入れて、IDEにロードします。IDEはRegister、パッケージのユニット内のすべてのプロシージャを呼び出します。その時点で、必要なコードを実行できます。

  1. 新しいパッケージプロジェクト(.dpkファイル)を作成します。
  2. 設計時パッケージになるようにプロジェクト設定を設定します。
  3. 新しい空白のユニットを追加します。
  4. 。という名前のインターフェイスセクションにプロシージャを追加しますRegister。大文字のRと残りは小文字でなければなりません。
  5. その手順を必要に応じて実装します(たとえば、FastcodeAddressPatchそこに電話をかけるなど)。
  6. パッケージをコンパイルしてインストールします。

ステップ5であなたがやろうとしているように見えることについては少し警戒していますが、それを自分で解決させます。

于 2010-01-22T02:12:13.707 に答える
1

「設計時」とは、「フォームデザイナでのコンポーネントの動作を変更する」ことを意味する場合、それは実際にやろうとしてはいけないことです。フォームデザイナはIDEの一部であり、BDS.exeで実行されているすべてのDelphiコードです。フォームデザイナでTObjectを変更すると、IDE全体で変更され、悲惨な結果を招く可能性があります。

于 2010-01-22T02:12:32.640 に答える