Rubrik: Oberfläche · Fenster | VB-Versionen: VB4, VB5, VB6 | 05.06.01 |
Form-Scrollbars bei Bedarf anzeigen Dieser Tipp zeigt, wie Sie eine Standard-Form bei Bedarf mit Scrollbars ausstatten. | ||
Autor: Dieter Otter | Bewertung: | Views: 29.723 |
www.tools4vb.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Multiline-Textboxen, Richtextboxen oder auch MDI-Forms haben alle etwas gemeinsam. Bei Bedarf können hier Scrollbalken angezeigt werden. Die Standard-Forms besitzen eine solche Eigenschaft nicht, was oftmals ägerlich ist - und zwar immer dann, wenn die Form durch den Anwender verkleinert wird, und so nicht mehr alle Objekte im sichtbaren Bereich der Form angezeigt werden können.
Voraussetzungen:
Wie bereits erwähnt dürfen die einzelnen Elemente nicht auf die Form direkt plaziert werden. Fügen Sie als erstes eine PictureBox ein. Die Größe der PictureBox sollte hierbei so groß gewählt werden, daß alle benötigten Elemente darauf Platz finden. Als weitere zusätzliche Elemente wird eine horizontale Scrollbar und eine vertikale Scrollbar benötigt. Zu guter letzt benötigen wir noch eine zweite PictureBox, welche die Breite der vertikalen Scrollbar und die Höhe der horizontalen Scrollbar hat. Die Scrollbars werden automatisch per Programmcode positioniert, ebenso die zweite PictureBox.
Der gesamte Code, der zum automatischen Ein-/Ausblenden der Scrollbars benötigt wird, befindet sich im Resize-Ereignis der Form.
' ScrollBalken bei Bedarf anzeigen Private Sub Form_Resize() Dim hVis As Boolean Dim vHis As Boolean If Me.WindowState <> 1 Then ' nur wenn Form nicht minimiert ist ' wenn die Form kleiner als die PictureBox ist ' entsprechend vertik. bzw. horiz. ScrollBars anzeigen VScroll1.Visible = (Picture1.Height > Me.ScaleHeight) HScroll1.Visible = (Picture1.Width > Me.ScaleWidth) Picture2.BorderStyle = 0 Picture2.Visible = HScroll1.Visible Or VScroll1.Visible ' Breite des horizontalen Scrollbalkens HScroll1.Width = Me.ScaleWidth ' Höhe des vertikalen Scrollbalkens VScroll1.Height = Me.ScaleHeight ' Scrollbalken positionieren HScroll1.Left = 0 HScroll1.Top = Me.ScaleHeight - HScroll1.Height VScroll1.Left = Me.ScaleWidth - VScroll1.Width VScroll1.Top = 0 Picture2.Left = Me.ScaleWidth - VScroll1.Width Picture2.Top = Me.ScaleHeight - HScroll1.Height HScroll1.Width = Picture2.Left VScroll1.Height = Picture2.Top ' Min/Max-Eigenschaften aktualisieren VScroll1.Max = (Picture1.Height - Me.ScaleHeight) + _ HScroll1.Height HScroll1.Max = (Picture1.Width - Me.ScaleWidth) + _ VScroll1.Width End If End Sub
Routinen, die das Scrollen der PictureBox übernehmen
Private Sub HScroll1_Change() Picture1.Left = -HScroll1.Value End Sub Private Sub HScroll1_Scroll() Picture1.Left = -HScroll1.Value End Sub Private Sub VScroll1_Change() Picture1.Top = -VScroll1.Value End Sub Private Sub VScroll1_Scroll() Picture1.Top = -VScroll1.Value End Sub
Am besten Sie schauen sich das kleine Beispielsprojekt an und probieren es einmal aus.