10

Delphiフォームで、あるビジュアルコンポーネントを別のコンポーネントに置き換えたいと思います。例:PanelコンポーネントをサードパーティパッケージのElPanelに置き換えたい。

最初のコンポーネントのすべての同一のプロパティとイベントを新しいコンポーネントに転送し、最初のコンポーネントに属するすべてのコンポーネント(ツールバー、メモ、ステータスバーなど)を新しいコンポーネントに配置したいと思います。正確に最初のもののどこにあったか。

新しいコンポーネントをフォームに追加し、すべてのプロパティ、イベント、およびコンポーネントを1つずつ細心の注意を払って転送する以外に、これを行うための最良/最も簡単な方法はありますか?

4

7 に答える 7

12

私は次のようにそれを行います:

  1. フォームを右クリックして、(テキストとして表示)を選択します。
  2. Ctrl + Fを押して、TPanelなどのコンポーネントクラス名を検索し、TElPanelに置き換えます。
  3. フォームに戻る(フォームとして表示)
  4. インターフェイスセクションで、TPanelをTElPanelに置き換えます。

GExpertsを使用する多くのコンポーネントがある場合は、より実行可能なソリューションになります。

于 2008-10-27T12:53:07.830 に答える
10

GExpertsを使用することも、手動で行うこともできます。

手動で行うには、メモ帳で .dfm を開き、すべてのクラス名を置き換えます。(たとえば TPanel を TElPanel に置き換えます)。すべての変更を行ったら、.pas ファイルをメモ帳で開き、同じことを行います。

uses 句に必要なユニットを必ず追加してください。

次に、IDE でフォームを開き、不一致のイベントや不明なプロパティの問題をクリーンアップします。

于 2008-10-27T02:31:29.020 に答える
6

私が思い出すと、優れた無料のGExpertsプラグインがこれを行います。フォームを右クリックして、[コンポーネントの交換]を選択します。http://www.gexperts.org

于 2008-10-27T01:21:10.207 に答える
2

私見ですが、Replace コンポーネント GExpert の大きな欠点は、ソース コード内のコンポーネントの順序が変更されることです。これはあまり VCS フレンドリーではありません。:-)

于 2008-11-11T09:01:53.623 に答える
1

コンテナ内に他のコンポーネントがある場合、GExpertsでこの置換を行うと、いくつかの醜い例外が発生し、IDEで予期しない動作が発生する可能性があります。
したがって、最善の解決策は、必要な場所(IDEの内部または外部)で.dfmファイルを編集し、変更するコンポーネントのタイプを手動で置き換えることです。多分それはいくつかの例外も引き起こすでしょう、しかしIDEはそれらを管理します。
IDE内で行う場合、.dfmをすぐに保存すると、デザインビューに切り替えた後、IDEは、タッチしたコンポーネントに関連する変数のタイプを変更するように要求し、自由に実行できるようにします。

于 2008-10-30T02:34:32.977 に答える
1

テキストとバイナリの dfm 形式の間で変換するには、Delphi の bin\ ディレクトリにある convert.exe ツールを使用します。– ティム・ナイプ (10 月 28 日 4:15)

少なくとも BDS 2006 では、フォーム デザイナのコンテキスト メニューを使用することもできます。これは最後のメニュー項目です (ドイツ語の IDE では「Text-DFM」)。

于 2008-11-11T09:05:52.880 に答える
0

私のプロジェクトでは、数十個のフォームをあるコンポーネント セットから別のコンポーネント セットに変換する必要がありました。コンポーネントとそのプロパティを変換し、必要なすべてのマッピングを行う小さな perl スクリプトを作成しました。スクリプトは簡単で汚いソリューションですが、高度に構成可能です。プロジェクト ディレクトリ内のすべての dfm および pas ファイルをスキャンし、ObjectBeginFound、PropertyFound、ObjectEndFound プロシージャ/イベントで提供する必要があるルールに従って dfm コンポーネント定義を変換します。

DFM ファイルはテキスト モードである必要があります。Delphi 5 ファイルでテスト済み。新しいバージョンと互換性があるかどうかはわかりません。見つけたら投稿をお願いします。

使用法: perl.exe cxdfm.pl > logfile.txt

ダウンロードリンク http://dl.dropbox.com/u/15887789/cxdfm.pl

于 2011-02-08T10:32:19.463 に答える