2011-06-27 3 views
3

BorderStyleがbsNoneに設定されている場合、AutoScrollがTrueで、一部の子コントロールの位置がClientWidth/ClientHeightの値を超える場合でも、TFormsは通常スクロールバーを表示しません。BorderStyle = bsNoneのときにTFormがスクロールバーを表示する方法を教えてください。

したがって、BorderStyleがbsNoneに設定されていても、スクロールバー(必要な場合)を表示するようにTFormに「強制」する方法やハックはありますか?

答えて

8

TScrollBoxをフォームに配置し、Align = Clientにして、すべてのコントロールをスクロールボックスに配置します。

非常に柔軟性があるので、私はいつもTScrollBoxを使用します。フォームに上揃えのパネルを追加できます(スクロールボックスの外側)、スクロールされていない領域があります。フォーム全体をスクロールさせることは、必ずしも役立つとは限りません。

+0

さらに良い:(子供の)フォームを代わりにフレームの中に入れます。あなたのメインフォームは、TScrollbox(クライアントにアライメントされた)を持つ空のフォームになり、スクロールボックス内に子フォームがロードされます。 –

+0

@ウィム、私はあなたのアドバイスを理解していません。誰が子どものフォームについて話していますか? –

+0

シングルフォームプロジェクトであっても、メインフォームにフレームを使用することは実用的です。フレームは、スクロールボックス、通常のフォーム、またはそれ以外のものの中に置くことができます。これはフォームの再利用を可能にするため、フレームはある時点ではフォームの中に、他の場所はスクロールボックス内の大きなスクリーンの一部として存在する可能性があります。したがって、より柔軟な... –

関連する問題