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