2

VB 6の私のWindowsアプリケーションには、非常に多くのコントロールを含むフォームがあります。また、クライアントの環境での画面サイズが小さい場合、ほとんどのコントロールは表示されません。私がやりたいのは、ユーザーがすべてのコントロールをスクロールできるように、ユーザーに垂直および水平のスクロールバーを提供することです。これを実装する方法について何か考えを持っている人はいますか?

PSスクロール値を表示するためのラベルのみを示す例を提供しないでください:)

4

2 に答える 2

4

1つの方法は、WindowsAPI呼び出しを使用してフォームのスクロールバーをオンにすることです。これは、ScrollBarコントロールを使用する場合とは異なります。フォーム自体のスクロールバーをオンにすると、たとえば、スクロールバーがタブの順序に干渉するのを防ぐことができます。

これを行う方法を説明する良いページと、ヘルパークラスを次に示します。

http://www.vbaccelerator.com/home/VB/Code/Libraries/Subclassing/Adding_Scroll_Bars_To_Forms__P​​ictureBoxes_and_UserControls/article.asp

于 2012-12-11T17:12:03.913 に答える
4

Davidの答えは好きですが、スクロールバーを使用してこれを実行する場合は、まず、すべてのコントロールをそれらに適合するフレームに配置する必要があります。「たくさんのコントロールの地獄」ではなく、1つのコントロールを動かしたい。次に、スクロールバーをフォームに配置し、Form_Resizeイベントに、フォームでスクロールバーのサイズを変更するコードを追加します。スクロールバーのサイズを変更した後、 MaxSmallChange、およびLargeChangeプロパティを設定するためにいくつかの計算を行う必要があります。Minプロパティを表示しているので、変更されないことがわかります。デザイナーで設定するだけです。この例では、私が怠惰すぎて垂直スクロールバーも含めることができないため、水平スクロールバーのみを使用しています。最後に、スクロールバーのChangeイベントにコードを追加して、フレームを移動します。

Private Sub Form_Resize()

    HScroll1.Move 0, Me.ScaleHeight - HScroll1.Height, Me.ScaleWidth
    HScroll1.Min = 0
    HScroll1.Max = Frame1.Width - Me.ScaleWidth
    HScroll1.SmallChange = HScroll1.Max / 100
    HScroll1.LargeChange = HScroll1.Max / 10

End Sub

Private Sub HScroll1_Change()

    Frame1.Left = -HScroll1.Value
    DoEvents ' this is not strictly necessary, but smooths the scolling some

End Sub

エラー処理コードも必要です。私は怠惰なサンプルコーダーです。

于 2012-12-11T17:49:08.680 に答える