C++ ビルダーで Windows データベース アプリケーションを作りたいです。アイデアは、上部に6つのアイコンの静的メニューを配置することです(これはすべての画面で一定である必要があります)。画面の残りの部分は、選択したメニュー項目に関するすべてのユーザー操作とデータをホストします. 私は SDI アプリで少し経験がありますが、私が知る限り、アプリケーション全体を単一の画面/フォームにする方法はありません。これを MDI アプリのように構築する必要がありますか、それとも固定アイコン ベースのメニューを上部に維持し、残りの画面データをさまざまなメニュー項目ごとに変更する他の方法はありますか? ユーザーがアプリケーションをナビゲートしている間、フォームが重ならない単一のウィンドウになりたくありません。
2 に答える
0
MDI アプリケーションは間違いなく可能ですが、異なるフォーム間の相互作用は少し面倒な場合があります。タブ付きページは、すべてが同じ TForm クラス内にあるため、扱いが簡単です。個々のタブの外観を変更したい場合は、「PageControlDrawTab」をオーバーロードできます。イベント ハンドラを追加し、タブ自体のキャンバスへのハンドルを取得するだけで、自由に描画できます。以下の例を参照してください。
void __fastcall TMainForm::PageControlDrawTab(TCustomTabControl *Control,
int TabIndex, const TRect &Rect, bool Active)
{
/* OnDraw handler to change the appearance of the Tabs.
Change it to blue text on white background.
*/
String s;
TRect r;
TTabControl * tTab = (TTabControl *)Control; // Get a pointer to the tab itself
s = tTab->Tabs->Strings[TabIndex]; // Retrieve the text of this tab
Control->Canvas->Brush->Color = clWhite; // Use the Canvas to draw
Control->Canvas->Font->Color = clBlue; // .. whatever you like
Control->Canvas->FillRect(Rect);
Control->Canvas->TextRect(Rect,Rect.Left+4,Rect.Top+2,s);
}
于 2013-06-17T18:52:15.387 に答える
0
おそらく、MDI 形式で行う必要があります。フォーム間でメニューを共有する方法がわかりません。ただし、使用できる他のオプションは、ページ コントロールを使用し、他のすべての「フォーム」をタブに配置して、メニューが常に同じになるようにすることです。メニュー項目は、ユーザーが別のタブにいるときに必要に応じて異なる応答をすることができます。または、どのタブにいても同じことを行うことができます。申し訳ありませんが、これは回答の形式です。まだコメントする権利がありません。
于 2013-06-17T02:19:06.240 に答える