Behauptet doch die Visual Basic-Hilfe, dass die BorderStyle-Eigenschaft eines Forms zur Laufzeit nur lesbar sei. Irgendwie scheint dies aber nicht zu stimmen. Denn wenn Sie versuchen, der BorderStyle-Eigenschaft zur Laufzeit einen neuen Wert zuzuweisen, wird zumindest kein Laufzeitfehler ausgelöst. Allerdings scheint die Zuweisung ohne Wirkung zu bleiben. Der Zufall hat es an den Tag gebracht: Weisen Sie nun der Caption-Eigenschaft einen Wert zu, erfolgt nun doch die Reaktion auf die Änderung der BorderStyle-Eigenschaft. Leider ist die Innenfläche des Forms noch nicht ganz angepasst - eine minimale Größenänderung, die sogleich wieder rückgängig gemacht wird, sorgt anschließend für den letzten optischen Schliff.
Public Sub FormBorderStyle(Form As Form, _
ByVal BorderStyle As FormBorderStyleConstants)
Dim nWidth As Single
Select Case BorderStyle
Case vbBSNone To vbSizableToolWindow
If Form Is Nothing Then
Err.Raise 5
Else
If TypeOf Form Is MDIForm Then
Err.Raise 5
Else
With Form
If .WindowState = vbNormal Then
.BorderStyle = BorderStyle
.Caption = .Caption
nWidth = .Width
.Width = nWidth - Screen.TwipsPerPixelX
.Width = nWidth
Else
Err.Raise 384
End If
End With
End If
End If
Case Else
Err.Raise 5
End Select
End Sub
Die Änderung des Rahmenstils macht natürlich wenig Sinn bei maximierten oder minimierten Forms, ebenso wenig bei MDI-Forms. Diese Fälle bleiben daher ausgenommen. Und wie üblich hat BorderStyle = 0 keine Wirkung, wenn das Form ein Menü (egal, ob sichtbar oder verborgen) enthält.
|