Rubrik: Oberfläche · Fenster | VB-Versionen: VB4, VB5, VB6 | 14.05.01 |
Controls einer Form scannen Automatiche Abfrage aller Contols, Erkennen des Typs, ggf Änderung der Eigenschaften. | ||
Autor: Andreas Tobola | Bewertung: | Views: 22.740 |
ohne Homepage | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Die nachfolgende Routine zeigt, wie man alle Steuerelemente eines bestimmten Typs innerhalb einer Form ermitteln kann, um dann z.B. gezielt Eigenschaften zu ändern.
Dim Control As Control For Each Control In Form1.Controls ' Leere Textfelder rot markieren If TypeOf Control Is TextBox Then If Control.Text = "" Then Control.BackColor = RGB(255, 0, 0) Else Control.BackColor = RGB(255, 255, 255) End If End If ' oder alle Label-Steuerelemente "fett" If TypeOf Control Is Label Then Control.FontBold = True End If Next Control
Ein weiteres Beispiel für das Scannen aller Controls einer Form ist das autom. Zuweisen einer bestimmten Schrift. Lassen Sie z.B. den Anwender Ihrer Software individuell einstellen, welche Schrift für die Darstellung der Steuerlemente und der Form selbst verwendet werden soll.
Public Function SetFormFont(F As Form, _ ByVal FontName As String, ByVal FontSize As Integer) _ As Boolean Dim Result As Boolean Dim Control As Control Dim I As Integer ' Prüfen, ob gewünschte Schrift vorhanden ' Hierzu die Fonts-Auflistung "durchlaufen" Result = False For I = 0 To Screen.FontCount If Screen.Fonts(I) = FontName Then Result = True Exit For End If Next I ' OK, Schrift ist vorhanden If Result Then ' Manche Steuerelemente besitzen keine ' Font-Eigenschaft: Deshalb Fehler unterdrücken On Local Error Resume Next For Each Control In F Control.Font.Name = FontName Control.Font.Size = FontSize Next On Local Error GoTo 0 End If SetFormFont = Result End Function
Es lassen sich auch ganz bestimmte Steuerelemnt-Typen von der autom. Schrift-Zuweisung ausschliessen. Hierzu fügen Sie einfach folgenden Code zwischen For Each Control In F ... Next ein:
For Each Control In F ' wenn es sich um KEINE ListBox handelt If Not TypeOf Control Is ListBox Then Control.Font.Name = FontName Control.Font.Size = FontSize End If Next
Der Aufruf der Routine zum autom. Setzen der Schriftart aller Steuerelemente einer Form erfolgt so:
Private Sub Form_Load() ' z.B. wenn Form geladen wird SetFormFont Me, "Tahoma", 8 End Sub