vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   RSS-Feeds  | Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2021
 
zurück
Rubrik: Oberfläche · Fenster   |   VB-Versionen: VB4, VB5, VB605.06.01
Form-Scrollbars bei Bedarf anzeigen

Dieser Tipp zeigt, wie Sie eine Standard-Form bei Bedarf mit Scrollbars ausstatten.

Autor:   Dieter OtterBewertung:     [ Jetzt bewerten ]Views:  27.327 
www.tools4vb.deSystem:  Win9x, WinNT, Win2k, WinXP, Vista, Win7, Win8, Win10 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.

Beispiel für das automatische Anzeigen von Scrollbars bei Bedarf
Genau mit dieser Thematik beschäftigt sich der heutige Tipp. Optimal wäre es doch, wenn die Scrollbars nur dann angezeigt werden, wenn sie auch wirklich zum scrollen benötigt werden. Wie lässt sich so etwas mit einem relativ kleinen Aufwand bewerkstelligen? Genau - Sie plazieren die einzelne Elemente nicht direkt auf der Form, sondern auf eine PictureBox. Die PictureBox hat hierbei immer die maximal benötigte Größe. Wird die Form nun verkleinert, so kann im Resize-Ereignis die Größe der PictureBox im Verhältnis zur Form-Größe abgefragt werden. Wird nun festgestellt, daß die PictureBox größer als die Form selbst ist, werden die benötigten Scrollbars automatisch angezeigt. Die Abfrage erfolgt getrennt nach Höhe und Breite, so daß es natürlich vorkommen kann, daß zwar der vertikale Scrollbalken angezeigt wird, der horizontale aber nicht. Über die Scrollbalken braucht dann nur noch die PictureBox entsprechend nach links bzw. nach oben "verschoben" werden, so daß ein Teil der bisher sichtbaren Elemente "verschwinden" und die bisher nicht sichtbaren Elemente erscheinen.

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.
 

Dieser Tipp wurde bereits 27.327 mal aufgerufen.

Voriger Tipp   |   Zufälliger Tipp   |   Nächster Tipp

Über diesen Tipp im Forum diskutieren
Haben Sie Fragen oder Anregungen zu diesem Tipp, können Sie gerne mit anderen darüber in unserem Forum diskutieren.

Neue Diskussion eröffnen

nach obenzurück


Anzeige

Kauftipp Unser Dauerbrenner!Diesen und auch alle anderen Tipps & Tricks finden Sie auch auf unserer aktuellen vb@rchiv  Vol.6
(einschl. Beispielprojekt!)

Ein absolutes Muss - Geballtes Wissen aus mehr als 8 Jahren vb@rchiv!
- nahezu alle Tipps & Tricks und Workshops mit Beispielprojekten
- Symbol-Galerie mit mehr als 3.200 Icons im modernen Look
Weitere Infos - 4 Entwickler-Vollversionen (u.a. sevFTP für .NET), Online-Update-Funktion u.v.m.
 
   

Druckansicht Druckansicht Copyright ©2000-2021 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel