0

MainForm と複数の MDIChild Form で構成されるアプリケーションを作成しました。TMS のコンポーネントの AdvDockPanel と AdvToolbar を使用しています。私のメインフォームには、フォームの上部、下部、左側、右側に AdvDockPanels があり、AdvToolbars を表示します。

各 MDIChild フォームには AdvToolbar が含まれており、これらのフォームの作成時に、AdvToolbar.Parent が MainForm の AdvDockPanel に設定されます。最初は、AdvToolbar.Visible は False で、各 MDIChild フォームのアクティブ化時に、visibilty を True に設定しています。

要約すると、MDIChild フォームをアクティブ化すると、AdvToolbar が MainForm.AdvDockPanel に表示され、非アクティブ化すると非表示になります。

これはすべて正常に機能しますが、AdvToolbar を 1 つの AdvDockPanel から別の AdvDockPanel にドラッグしようとすると、アクティブな MDIChild フォームが非表示になり、「OnShow または OnHide で Visible を変更できません」というエラーが発生します。

私はそれをデバッグし、この例外が発生する場所を見つけました。Vcl.Forms にあります。procedure TCustomForm.CMShowingChanged(var Message: TMessage);

したがって、MainForm でアクティブな MDIChild フォームから AdvToolbar を表示する方法があるかどうかを知りたいのですが、MainForm でツールバーをドラッグすることができます。

ありがとう、

  • チャールズ
4

1 に答える 1

1

ツールバーの現在の親がTFloatingWindow(ツールバーをドラッグしたときの親)であるかどうかを確認できます。

procedure TForm25.FormDeactivate(Sender: TObject);
begin
   if not (orgaadvtoolbar1.Parent is TFloatingWindow) then
      OrgaAdvToolBar1.visible:=false;
end;

TAdvToolbarは独自のドラッグフラグFDragingを使用しますが、プロパティではないため、TAdvToolBar.Draggingは機能しません。したがって、TMSソフトウェアのソースコードを変更した場合にのみ変数にアクセスできます。

于 2012-05-22T18:01:41.957 に答える