|
|
|
|
Fenster / Controls
|
|
|
|
|
|
|
|
|
|
|
gsNumInput
Einfaches
Klassenmodul, welches bei einer zugewiesenen Textbox nur noch numerische
Eingaben zulässt. Die Anzahl der zulässigen Dezimalstellen ist frei
wählbar.
Ein kleines Anwendungsbeispiel zeigt die Verwendung des Klassenmoduls.
|
|
|
|
NumInput
Klassenmodul, welches bei einer zugewiesenen Textbox nur noch numerische
Eingaben zulässt. Die Anzahl der zulässigen Stellen vor und nach dem
Dezimaltrennzeichen ist frei einstellbar. Die Eingabe negativer
Zahlenwerte (Minus erlaubt) kann zugelassen oder verhindert werden. Das
in der jeweiligen Systemsteuerung eingestellte Dezimaltrennzeichen wird
autom. erkannt.
|
|
|
|
gsMatrix
100
Steuerelement, das in Matrixanordnung (10 Zeilen * 10 Spalten) 100
Checkboxen zur Verfügung stellt.
|
|
|
|
Form Move
Das _Resize-Ereignis
einer Form lässt zwar erkennen, wenn die Grösse der Form verändert wird,
nicht aber, wenn die Form lediglich verschoben wird.
Durch SubClassing der Form und Auswerten der Fensternachricht WM_Move lässt sich feststellen, ob und wohin eine Form verschoben worden ist.
|
|
|
|
Skalieren
Grösse und
Position von Forms und Controls an unterschiedliche Auflösungen anpassen.
|
|
|
|
Splitter
Erzeugen eines in zwei
Hälften geteilten Fensters mit verschiebbarem Trennsteg.
Das hier vorgestellte Programmbeispiel erzeugt mit Hilfe eines einfach
anzuwendenden Klassenmoduls eine Ansicht ähnlich der des Windows-Explorer. Ein Treeview-Control sowie ein Listview-Control werden durch einen frei verschiebbaren Trennsteg miteinander verbunden.
|
|
|
|
Min Max
VB-Forms
habe keine Eigenschaft, mit deren Hilfe man die minimale bzw. maximale
Fenstergröße festlegen kann. Das Beispielprogramm MinMax schließt diese
Lücke.
|
|
|
|
On
Top
Eigene
Form im Vordergrund vor allen anderen Fenstern halten.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
gsNumInput |
Ein einfaches Klassenmodul macht aus einer normalen Textbox, eine Textbox in
welcher nur noch numerische Eingaben möglich sind. Die dabei max. mögliche
Anzahl an Dezimalstellen kann frei gewählt werden.
Das kleine
Anwendungsbeispiel demonstriert die Verwendung des Klassenmoduls.
Download gsNumInput (gsnuminput.zip 3kB) |
|
|
Eigenschaften:
TextboxControl: Verweis auf die zu kontrollierende Textbox
DemimalesAllowed: Dezimalstellen erlaubt (True) oder nicht
erlaubt (False). Bei False wird auch die Eingabe des
Dezimaltrennzeichens unterdrückt. NumDecimales: Anzahl der zuslässigen Dezimalstellen
Download gsNumInput (gsnuminput.zip 3kB)
|
|
|
|
|
|
|
|
|
|
 |
|
|
|
|
|
|
NumInput |
Ein Klassenmodul macht aus einer normalen Textbox, eine Textbox in welcher
nur noch numerische Eingaben möglich sind.
Die dabei max. mögliche Anzahl an Stellen vor und nach dem
Dezimaltrennzeichen kann frei gewählt werden.
Die Eingabe negativer Werte (-) kann erlaubt oder unterbunden werden.
Das in der jeweiligen Systemsteuerung eingestellte Dezimaltrennzeichen wird
autom. erkannt. Es kann jedoch auch jedes beliebige andere Zeichen als
Dezimaltrenner eingestellt werden.
Das Anwendungsbeispiel
demonstriert die Verwendung des Klassenmoduls.
Download NumInput (numinput.zip 13kB) |
|
|
Eigenschaften:
Textbox: Verweis auf die zu kontrollierende Textbox
DemimalesAllowed: Dezimalstellen erlaubt (True) oder nicht
erlaubt (False). Bei False wird auch die Eingabe des
Dezimaltrennzeichens unterdrückt.
NumPlaces: Anzahl der erlaubten Stellen vor dem Dezimaltrenner .
DecimalPlaces: Anzahl der erlaubten Stellen nach dem
Dezimaltrenner.
NegativeValuesAllowed: Eingabe negativer Zahlenwerte (Minus)
erlaubt (True) oder nicht erlaubt (False).
DecimalSeparator: Gibt das akt. eingestellte Dezimaltrennzeichen
zurück oder setzt ein beliebiges anderes Zeichen als Dezimaltrenner.
Value: Gibt den Zahlenwert des in der Textbox stehenden Strings
zurück (Datentyp: Variant/Decimal).
SystemDecimalSeparator: Gibt das von der Systemsteuerung
vorgegebene Dezimaltrennzeichen zurück.
Download NumInput (numinput.zip 13kB)
|
|
|
|
|
|
|
|
|
|
 |
 |
 |
|
|
|
|
gsMatrix100 |
Mit diesem Steuerelement lassen sich 100 boolesche Werte (True/False) in
einer Matrix von 10 Zeilen und 10 Spalten darstellen.
Eigenschaften:
ActiveCol
ActiveRow
BackColor
BorderStyle
CellCharacter
CellFont
Enabled
Font
ForeColor
GridBorderColor
GridColor
SelBackColor
|
|
|
|
|
Methoden:
GetCellValue
Refresh
Reset
SetCellValue
|
Ereignisse:
Click
DblClick
KeyDown
KeyPress
KeyUp
MouseDown
MouseMove
MouseUp
DataChanged
CellChanged
|
|
|
|
|
|
|
|
|
|
|
 |
 |
 |
|
|
|
|
Form Move
Mouse Wheel
|
Form Move / Mouse
Wheel
Erkennen, wenn die Form bewegt wird.
Auswerten der
Bewegungen des Mausrades.
Dieses Beispielprogramm
demonstriert, wie mit Hilfe des SubClassings die Fensternachrichten
WM_MOUSEWHEEL und WM_MOVE erkannt und ausgewertet werden können.
Download
(mwheel.zip [6 kB])
|
|
|
|
|
|
|
|
|
|
 |
 |
|
|
|
|
Skalieren |
Skalieren
Grösse von Forms
und Steuerelementen an die jeweilige Bildschirmauflösung anpassen
Die am
Bildschirm dargestellte Größe von Forms und den darauf befindlichen
Steuerelementen ist abhängig von der jeweils aktuellen
Bildschirmauflösung.
Dies führt dazu, dass Forms und Steuerelemente kleiner als auf dem
Entwicklungsrechner dargestellt werden, wenn der Zielrechner eine
gegenüber dem Entwicklungsrechner höhere Bildschirmauflösung hat.
Umgekehrt werden Forms und Steuerelemente größer dargestellt, wenn am
Zielrechner gegenüber dem Entwicklungsrechner mit einer niedrigeren
Auflösung gearbeitet wird. Dies kann dazu führen, dass eine Form und
einige der darauf befindlichen Steuerelemente nicht mehr vollständig am
Bildschirm sichtbar sind.
Kann die
verkleinerte Darstellung im ersten Fall evtl. noch toleriert werden, so
wird jedoch kein Benutzer hinnehmen, wenn ein Teil seiner Programmoberfläche nicht mehr sichtbar ist.
Im einfachsten Fall muss das Programm alle Abmessungen von Forms und
Steuerelementen mit einem bestimmten Faktor vergrößern bzw. verkleinern.
Die entsprechende Vorgehensweise zeigt das Beispiel Skalieren.
Skalieren Beschreibung u. VB-Code
|
|
|
|
|
|
|
|
|
|
|
 |
 |
 |
|
|
|
|
Splitter |
Splitter |
|
|
|
|
|
|
Nach
dem Programmstart lässt sich der Trennsteg zwischen den beiden
Steuerelementen frei verschieben.
Bewegen Sie hierzu den Mauszeiger in den Bereich zwischen den beiden
Steuerelementen. Der Mauszeiger ändert sich dabei in einen Doppelpfeil.
Drücken Sie dann die linke Maustaste und ziehen Sie nun den Trennsteg nach
links oder nach rechts.
Wenn Sie die Größe des Fensters verändern, wird die Größe der beiden
Steuerelemente automatisch an die jeweilige Fenstergröße angepasst.
Download
Splitter-Projekt (splitter.zip 10kb) |
|
|
|
|
|
|
|
|
|
|
 |
 |
 |
|
|
|
|
Min Max |
Min
Max
Festlegen der
minimal und maximal einstellbaren Grösse von Formen
In der Form_Resize-Prozedur lassen sich zwar
minimale und maximale Werte für die Höhe und Breite einer Form
erzwingen, dies hat jedoch ein unangenehmes Flimmern am Bildschirm zur Folge,
wenn der Benutzer versucht die Form mit der Maus über
die vorgegebenen Werte hinaus weiter zu verkleinern oder zu vergrössern
Mit Hilfe eines Hooks lassen sich die entsprechenden Fensternachrichten abfangen
und so die minimalen und maximalen Abmessungen der Form ohne unangenehmes
Flimmern beim Verändern der Form begrenzen.
Download
gsMinMax.vbp (gsminmax.zip 6 kB)
|
|
|
|
|
|
|
|
|
|
|
 |
 |
 |
|
|
|
|
On Top |
On Top
Fenster
immer im Vordergrund
Das folgende Programmbeispiel zeigt, wie
mit Hilfe des API-Aufrufes "SetWindowPos" erreicht wird, dass ein Fenster immer
vor allen anderen auf dem Bildschirm gezeigten Fenstern dargestellt wird.
'Im Deklarationsteil eines
Moduls xxx.BAS
Declare Function SetWindowPos Lib "user32" Alias "SetWindowPos"
(ByVal
hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As
Long, ByVal cy As Long, ByVal wFlags As Long) As Long
'(wird die Funktion SetWindowPos im Deklarationsteil eines
Formmoduls deklariert, so muss die Funktion als Private deklariert werden!)
'Private Declare Function SetWindowPos Lib "user32" Alias
"SetWindowPos" (ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal x As
Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
Public Sub AlwaysOnTop(F as Form, OnTop as Boolean)
'F ist die Form, deren Verhalten
(Vordergrund/Normal) bestimmt werden soll
'OnTop = True : Fenster immer im Vordergrund
'OnTop = False: Fenster Normal (nicht im Vordergrund)
Dim Switch as Integer
If OnTop Then
Switch = -1 'im
Vordergrund
Else
Switch = -2 'nicht im
Vordergrund
End If
Call SetWindowPos(F.hwnd, Switch, 0, 0, 0, 0, &H53)
End Sub
'Code in einem Formmodul z.B. abhängig vom Zustand einer Checkbox
AlwaysOnTop Me, CBool(Checkbox1.Value)
'oder
Call AlwaysOnTop (Me, True) 'Fenster
(Me)
im Vordergrund
Call AlwaysOnTop (Me, False) 'Fenster (Me) Normal
'oder
AlwaysOnTop Form1, True 'Fenster im
Vordergrund
AlwaysOnTop Form1, False 'Fenster Normal
|
|
|
|
|
|
|
|
|
|
|
 |
 |
 |
|
|