9

何年にもわたる Delphi 開発の後、現在、アプリケーション全体で数百のフォームを共有しています。コンパイルの範囲は Delphi 7 から XE までなので、1 つのフォームを任意の IDE で開くことができます。Delphi 7 以降のよく知られた Explicitxxx プロパティの追加には、以前のコンパイラが処理できないプロパティをフォームが誤って取得することを回避するための解決策があります (例: Andreas の DDevExtensions )。フォームの変更は一切ありません。限目。

もちろん、読み取り専用フラグを使用することもできます。バージョン管理システムは、そのような変更が行われたことを確認するための追加の手段を提供します。私が本当に欲しいのは、フォームのユニットに配置できる {$LockDFM} スイッチ、またはフォーム レイアウトを表示するときのコンテキスト メニュー オプションです。

これを達成するためのきちんとした方法を考えられる人はいますか?

ありがとう

4

4 に答える 4

8

私が考えることができる唯一のもの(あなたが言及した読み取り専用/ VCSオプション以外)は、編集メニューのLock Controlsオプションです。これにより、コントロールの移動を防止するフラグが設定されます。試したことがないので、実際にどれだけ効果があるかはわかりません。私はそれがそこにあることを知っています。

于 2011-03-30T13:32:37.557 に答える
3

ヘロ

Delphiにはそのようなものはないと確信しています。私もこの問題の解決策を探していました。

ただし、できることが 1 つあります。それは、OTA (Open Tools API) を使用して独自の Delphi アドオンを作成できることです。何かが保存されようとしているときに通知できるクラスがいくつかあることを私は知っています。このイベントをインターセプトして、保存するかどうかを決定できます (この場合、DFM の場合)。

ところで、そのようなコンポーネントを実行する計画がある場合は教えてください。:)

編集:

役立つコードを見つけました。http://www.gexperts.org/otafaq.htmlから抽出

  TMyFormNotifier = class(TNotifierObject, IOTANotifier, IOTAFormNotifier)
  protected
     procedure FormActivated;
     procedure FormSaving;
     procedure ComponentRenamed(ComponentHandle: TOTAHandle; const OldName, NewName: string);
  end;
于 2011-03-31T03:02:39.103 に答える
1

設計時には、[編集] → [コントロールのロック] があります。

LE: これは、フォーム上のコントロールのサイズ変更/位置変更専用です。ObjectInspector に関しては、そこに設定された値を「ロック」できるものがあるかどうかはわかりません (したがって、開発者はそれらを変更できません)。

于 2011-03-30T13:37:52.303 に答える
1

基本的に、いいえ。IMO が .dfm に含めるべきではなかった f'ing (私のフランス語を許してください) の明示的なサイズと位置のプロパティは別として、フォームを表示するだけで内容を変更するサードパーティ コンポーネントがいくつかあります。Fx TMS コンポーネントは、以前のバージョンのコンポーネントから何も変更していなくても、バージョン番号を更新します。

于 2014-11-30T12:59:31.907 に答える