2

私は 2007 から XE6 に移行しており、自分自身とサード パーティの両方が作成したいくつかのユーザー定義コンポーネントがあります。

Delphi 2007 にコンポーネントをインストールする場合、コンポーネントをライブラリに追加するだけで、同じ名前の DCR が自動的に検出されて dpk ファイルにロードされ、イメージがパレットにロードされました。

Delphi XE6 では、イメージ ファイルが自動的に読み込まれません。代わりに、すべてのユーザー定義コンポーネントで同じデフォルト イメージが取得されます。

DCR ファイルをプロジェクト ソースに手動で追加する方法について説明しているトピックを探して見つけましたが、機能しないか、信頼性がありません。

まず、bpl を再インストールすると、(すべてのコンポーネントをロードした) サンプル パレットは、インストールしたばかりのすべてのコンポーネントを削除し、何も表示しません。

Delphi をシャットダウンして再起動すると、コンポーネントがパレットに表示されますが、ランダムにいくつかのイメージがデフォルト イメージのままです。

bpl を再インストールするたびに、異なる画像に正しい画像があり、他の画像にデフォルトの画像があるたびに、異なる結果が得られます。どれが表示されないかはかなりランダムに表示されます。

何が起こっているのか手がかりはありますか?

4

1 に答える 1

0

この問題の回避策を見つけたと思います。

SynEdit がロードされていて、アイコンをパレットに配置しても問題がないことに気付いたので、dpk をロードしてどのように動作するかを確認しました。

各コンポーネントが個別のファイルとしてライブラリに追加されると、問題が発生するようです。

重要なのは、たとえば MyLibReg.pas などのファイルを 1 つだけ作成し、各コンポーネント ファイルをユニットの "Uses" セクションに追加することです。Register プロシージャを作成し、Register プロシージャですべてのコンポーネントを一度に登録します。各ファイルを調べて、個々の登録手順を見つけ、クラス名をコピーして MyLibReg.pas の登録手順に貼り付け、それらの手順をそれらのファイルに REM アウトする必要があります。

次に、イメージ エディタをロードして、MyLibReg.dcr という名前の新しい dcr ファイルを作成します。

次のビットは少し面倒です。すべてのユーザー コンポーネントからすべての dcr ファイルをイメージ エディターにロードし、イメージをコピーして MyLibReg.dcr に貼り付けます。すべてのビットマップ名を手動で作成し、イメージを貼り付ける必要があります。

dcr を MyLibReg.pas と同じディレクトリに保存します。

XE6 では、Component/Install Component を選択し、「Install Into new package」を選択します。ユニット ファイル名で MyLibReg.Pas に移動し、続行してパッケージをビルド/インストールします。

出来上がり、すべての正しいアイコンが表示されます。

XE6 は、bpl ごとに 1 つの dcr ファイルでしか確実に動作しないようです。

于 2014-05-20T12:32:33.277 に答える