1

小さなカスタム ダイアログが多数あるアプリケーションを開発しています。

これらのダイアログは、たとえば、選択肢を与えたり、グラフを表示したり、追加のインターフェイスを提供したりします。ほとんどの場合、マークアップ コードはほとんど必要なく、子要素もほとんどありません。

現在、embarcadero'c XE2 RAD Studio の C++ Builder を使用しています。これは VCL で動作し、フォームごとに .dfm ファイル、.h ファイル、および .cpp ファイルを生成します。ここで、生成されたファイルの概要を把握し、複数の小さなダイアログの .dfm ファイルなどをマージしたいと思います。(おそらく.cppと.hも)。ただし、C++-Builder の VCL デザイナも使用したいと考えています。

.dfm ファイルをマージし、IDE のデザイナーを通常どおり動作させる方法はありますか?

それとも、実行時にこれらのダイアログを動的に生成する必要がありますか?

4

2 に答える 2

2

ここで、生成されたファイルの概要を把握し、複数の小さなダイアログの .dfm ファイルなどをマージしたいと思います。(おそらく.cppと.hも)。ただし、C++-Builder の VCL デザイナも使用したいと考えています。

.dfm ファイルをマージし、IDE のデザイナーを通常どおり動作させる方法はありますか?

デザイン時に生成されたイベント ハンドラーの実装を、ある .cpp ファイルから別の .cpp ファイルに移動することは可能ですが (推奨はされません) (ただし、宣言を .h ファイルに移動しないでください)。そのため、1 つの .cpp ファイルにすべてのイベント ハンドラーの実装を含めることが考えられ、アプリは正常に動作します。私は自分のプロジェクトの 1 つで反対のことをしています - 私はTFormそれに多くのイベント ハンドラーを持っているので、それらを機能別にグループ化された個別の .cpp ファイルに移動します (はい、それTFrameを管理するために使用する必要がありますが、私は自由ではありません開発のこの段階でそれを変更します)。

ただし、副次的な効果があります。オブジェクト インスペクタで割り当てられたイベントをダブルクリックしようとすると、ハンドラの実装コードを移動すると、そのハンドラの実装コードを見つけることができなくなります。

ただし、DFM に関しては、設計時に作成されるすべてTFormの 、TFrame、およびTDataModuleクラスには、独自の個別の DFM が必要です。IDE と DFM ストリーミング システムはどちらもそれを想定しています。最終的な実行可能ファイルの DFM リソースはクラス名で識別され、DFM ストリーミング システムは、DFM を単一のルート オブジェクト インスタンスにロードするときに、DFM リソース全体を最初から最後まで読み取ります。また、DFM データ形式は、1 つのリソース ストリームで複数の DFM をサポートしていません。

いいえ、複数の DFM を一緒にマージすることはできません。

それとも、実行時にこれらのダイアログを動的に生成する必要がありますか?

はい。または、ダイアログが個々の DFM リソースを使用できるようにすることもできます。あなたが言うようにダイアログの内容が実際に小さい場合、実行可能ファイルへのオーバーヘッドは最小限に抑えられるはずです。

于 2015-06-10T00:37:31.433 に答える
0

「レガシー」TNotebook コンポーネント (RAD2007 の「Win3.1」ページ) を使用して、1 つのファイルで多数の小さなダイアログをシミュレートできます。タブ ボタンのないページ コントロールのように機能します。コンポーネントに必要な数のページを作成し、フォームのコンストラクターで必要なページをアクティブにします。

于 2015-11-17T08:54:58.220 に答える