TMainMenu を含む Delphi フォームを使用しています。特定の状況では、このフォームを別のフォーム内で親にしてクライアントに合わせて表示したいと考えています。これは正常に機能しますが、親フォームのメイン メニューは表示されません。この SO の質問に、「子ウィンドウにはメニューを表示できません」というコメントがあります。この動作をオーバーライドして TMainMenu を表示するためにできることはありますか?
余談ですが、これに気付いたのは、以前にこの原則を使用したことがある場所で、Developer Express メニュー コンポーネントを使用しており、子フォームで表示するのが非常に楽しいからです。
後で編集: 以下の TLama のコードを使用すると、これは機能します (ただし、子メニューはテーマ化されていません。私は非常に単純です): これは機能します:
procedure TForm65.FormShow(Sender: TObject);
begin
Winapi.Windows.SetParent(ChildForm.Handle, Handle); // <<<<<<<<
ChildForm.BorderStyle := bsNone;
ChildForm.Align := alClient;
ChildForm.Show;
end;
このコードは機能しません。なんで?
procedure TForm65.FormShow(Sender: TObject);
begin
ChildForm.Parent := Self; // <<<<<<<<<
ChildForm.BorderStyle := bsNone;
ChildForm.Align := alClient;
ChildForm.Show;
end;