実行時にTFrameを埋め込んで作成し、アプリケーションのメインフォームにドッキングするJordanRusselのToolbar2000ツールバーがあります。このフレームには、他のパネルやさまざまなコントロールを含むペインが埋め込まれています。したがって、構造は次のとおりです。
TTBDock
TTBToolbar
TFrame (align=alNone, Autosize=true)
TPanel 1 (align=alNone, Autosize=true)
TPanel 2 (align=alTop ,Autosize = false)
TPanel 3 (align=alTop ,Autosize = false)
TPanel 4 (align=alTop , Autosize = false)
パネル2、3、4の高さは明示的にサイズ設定され、フレーム(したがってツールバー)は新しいサイズに合わせて自動的にサイズ変更されます。
ツールバーがアプリケーションのメインフォームにドッキングされて初めて表示されるときにツールバーのサイズが間違っていることを除いて、正常に機能します。その時点でツールバーのサイズを強制的に変更すると(たとえば、マウスクリックからTPanelの高さを明示的にサイズ変更することにより)、正しくなります。ルーチンを呼び出してサイズを2回設定し、Update、Application.ProcessMessages、ReAlignを呼び出してみました。メインフォームをペイントしてから、手動でサイズ変更を再度実行する以外は何も機能しないようです。
サイズ変更ルーチンの最後で中断してパネルサイズとフレームサイズを調べると、それらは正しいですが、ツールバーサイズが正しくないため、最初に表示されるときに、フレームが間違ったサイズのツールバーに部分的に表示されます。これは、サイジングルーチンへの別の呼び出しの直後に発生しますが、メインフォームがそれ自体をペイントした後でのみ発生します。
タイマーの期限が切れた後にパネルのサイズを明示的に変更するなど、厄介なことをやっつけてもかまいませんが、問題の原因を解決したいと思います。
なぜこれが起こっている(または起こっていない)のかについてのアイデアはありますか?