Benutzer-Werkzeuge

Webseiten-Werkzeuge


k16:k16.8:start

16.8 ButtonBox

Die Komponente ButtonBox (gb.qt4) ist eine Verbund-Komponente. Sie enthält eine TextBox und einen kleinen Button an der (rechten) Seite. Wenn Sie die Eigenschaft ButtonBox.Editor.Mask setzen, können Sie die Maske der internen MaskBox administrieren, um den vollen Funktionsumfang zu nutzen. Einsatzfelder für eine ButtonBox kennen Sie bereits aus anderen Zusammenhängen wie der Projektauswahl im Startfenster zur Gambas-IDE (→ Kapitel 16.6 Text-Boxen).

Ausgewählte Eigenschaften werden in der folgenden Tabelle aufgeführt und beschrieben:

EigenschaftTypDefaultBeschreibung
.Button BooleanTrueLegt fest, ob ein Button angezeigt wird oder gibt dessen Anzeigestatus zurück. Ohne Button verhält sich die ButtonBox wie eine TextBox.
.PicturePictureDas Bild auf dem Button wird zurückgegeben oder gesetzt.
.TextStringNullSetzt den anzuzeigenden Text in der ButtonBox oder gibt diesen Text zurück.
.EditorMaskBox-Gibt die interne MaskBox der ButtonBox zurück. Es können alle Masken von MaskBox.Mask (gb.form) genutzt werden!
.ReadOnlyBooleanFalseGibt an, ob der User den Text in der ButtonBox ändern kann oder nicht.

Tabelle 16.8.1: Übersicht Eigenschaften der ButtonBox

16.8.1 Beispiel 1 – ButtonBox

Um sichere Pfadeingaben zu gewährleisten ist die Verwendung einer ButtonBox ideal. Einerseits können mit ButtonBox.ReadOnly = True im Dialog nur valide Pfadangaben ausgewählt werden und andererseits steht der ausgewählte Pfad in der .Text-Eigenschaft als Zeichenkette zur weiteren Verwendung im Programm zur Verfügung. Eine Maske wird im ersten Beispiel nicht eingesetzt. Als Bild auf dem Button wird ein Icon aus dem Bestand von Gambas verwendet:

ButtonBox

Abbildung 16.8.1.1: ButtonBox

Nach einem Klick auf den internen Button in der ButtonBox öffnet sich ein Dialog:

Dialog

Abbildung 16.8.1.2: Verzeichnis-Auswahl-Dialog

Nach der Auswahl werden alle Komponenten im ausgewählten Projekt-Verzeichnis angezeigt.

Auswahl

Abbildung 16.8.1.3: Anzeige des Verzeichnispfades in der ButtonBox

Abschließend können Sie noch ein Archiv von allen Komponenten-Dateien des ausgewählten Gambas3-Projektes anlegen. Das vollständige Projekt finden Sie im Downloadbereich. Hier wird nur ein Quelltext-Ausschnitt angezeigt:

' Gambas class file
 
Public Sub Form_Open()
  FMain.Center
  FMain.Resizable = True
  ButtonBoxProject.Picture = Picture["icon:/16/open"]
  ButtonBoxProject.ReadOnly = True
  btnList.Enabled = False
  btnMakeArchive.Enabled = False
End ' Form_Open()
 
Public Sub ButtonBoxProject_Click() ' Diese Prozedur wird nach einem Klick auf das Icon in der ButtonBox generiert
  If Dialog.SelectDirectory() Then Return
  ButtonBoxProject.Text = Dialog.Path
  btnList.Enabled = True
End ' ButtonBoxProject_Click()

16.8.2 Beispiel 2 – ButtonBox mit Eingabe-Maske

Um zum Beispiel nur Datumsangaben als Eingabe zuzulassen, könnte nach einem Klick auf den Button ein DateChooser-Dialog angezeigt werden, um ein Datum auswählen zu lassen. Sie werden jetzt sagen, dass es dafür die DateBox-Klasse gibt. Aber diese ist nur eine veränderte ButtonBox, wie Sie nach einem Blick in die Gambas-Quelltexte unter comp/src/gb.form/.src/Date/DateBox.class bestätigt finden. Eine sehr kleine Klasse, die eigentlich nur eine ButtonBox enthält, deren Maske auf Datums- und Zeitangaben setzt und einen Dialog mit DateChooser öffnet. Im 2. Beispiel wird dieser Ansatz für eine Auswahl eines Datums umgesetzt. Da der Vorgabe einer Maske nicht automatisch eine Prüfung des eingegebenen Datums folgt, sind Sie gefordert nur valide Daten aus einer sicheren Eingabe zuzulassen:

B1

Abbildung 16.8.2.1: ButtonBox mit Maske (Datum)

B2

Abbildung 16.8.2.2: ButtonBox mit Fehlermeldung bei eingegebenem Datum

Sicherer ist die Auswahl eines (validen) Datums im Datum-Auswahl-Dialog. Er öffnet sich nach einem Klick auf den kleinen Datum-Button:

B3

Abbildung 16.8.2.3: Datum-Auswahl-Dialog

B4

Abbildung 16.8.2.4: Anzeige des ausgewählten Datums

Der Quelltext wird vollständig angegeben:

' Gambas class file
 
Public dDatum As Date
 
Public Sub Form_Open()
  Me.Center()
  Me.Resizable = False
  UpdateMask()
End ' Form_Open()
 
Public Sub btnboxDate_Click()
 
  FDateChooser.ShowModal
  btnboxDate.Text = Format(dDatum, gb.ShortDate)
  btnboxDate_Activate()
 
End ' btnboxDate_Click()
 
'********************************************************************************************
 
Private Sub UpdateMask()
  Dim sMaske As String
 
  sMaske = Format(Date(1111, 11, 11), gb.ShortDate)
  btnboxDate.Editor.Mask = Replace(sMaske, "1", "0")
 
End ' UpdateMask()
 
Public Sub btnboxDate_Activate()
  Label1.Text = ""
 
  If Not IsDate(btnboxDate.Text) Then
     Label1.Text = String.Chr(187) & " Die Eingabe " & btnboxDate.Text & " ist kein Datum!"
  Else
     Label1.Text = String.Chr(187) & " Das Datum " & btnboxDate.Text & " ist o.k."
  Endif ' Not IsDate(bbDate.Text) ?
 
End ' btnboxDate_Activate()
 
Public Sub btnboxDate_Change()
  Label1.Text = ""
End ' btnboxDate_Change()

Bedeutsam ist der Inhalt der Prozedur UpdateMask(). Nur Einsen werden als gb.ShortDate formatiert. Das beachtet die aktuellen Spracheinstellungen, so dass in Deutschland dd.mm.yyyy erscheint. Es können keine Nullen sein, da ein solches Null-Datum keine Ausgabe erzeugen würde! Da nun das Format korrekt ist, werden die Einsen für die korrekte Syntax der MaskBox mit Nullen ersetzt, wobei 0 für eine beliebige Ziffer steht → Kapitel 16.7 MaskBox (MaskBox.Mask) und es werden nur Datumsangaben in der ButtonBox akzeptiert.

Quetext von FDateChooser.class:

' Gambas class file
 
Public Sub Form_Open()
 
  With Me
    .Center()
    .Resizable = False
    .Arrangement = Arrange.Vertical
    .Margin = True
    .Spacing = True
  End With
 
  DateChooser1.Expand = True
  DateChooser1.Mode = DateChooser1.DateOnly ' Nur Datum-Auswahl 
 
End ' Form_Show()
 
Public Sub DateChooser1_Activate()
   FMain.dDatum = DateChooser1.Value ' Speicherung des Datums in einer (globalen) Variable
   Me.Close()
End ' DateChooser1_Activate()

Download

Wir verwenden Cookies, um unser Internetangebot optimal zu gestalten. Durch weitere Nutzung dieser Webseite stimmen Sie der Verwendung von Cookies zu. Informationen zu Cookies erhalten Sie in unserer Datenschutzerklärung
k16/k16.8/start.txt · Zuletzt geändert: 20.06.2016 (Externe Bearbeitung)

Seiten-Werkzeuge