Bei der Entwicklung der beiden vorgestellten Projekte – bei denen ein oder mehrere TabStrips (Register) eingesetzt werden – hat es sich bewährt, schon bei den Vorüberlegungen
In den weiteren Absätzen werden die Begriffe TabStrip und Register synonym verwendet. Arbeiten Sie zum ersten Mal mit einem TabStrip, dann müssen Sie wissen, dass einige Eigenschaften im Eigenschaften-Fenster für das markierte Register als Container-Komponente global gelten und andere nur für die ausgewählte Register-Karte. Wenn Sie ein Tab-Strip-Steuerelement in der IDE aus dem Komponenten-Register in der Register-Karte 'Container' auf das Formular ziehen, dann sehen Sie zunächst nur eine Register-Karte mit der Beschriftung 'Tab0' für den Registerkarten-Reiter. Nachdem Sie die erforderliche Anzahl der Register-Karten im Eigenschaften-Fenster festgelegt haben, erhöht sich auch die Anzahl der sichtbaren Registerkarten – wobei die zusätzlichen Registerkarten keine Beschriftung besitzen. Spätestens jetzt sollten Sie das Projekt speichern! Klicken Sie nun auf den ersten Registerkarten-Reiter, dann verschwindet die Beschriftung 'Tab0' für den ersten Registerkarten-Reiter. Da die erste Register-Karte markiert ist (→ Markierung am oberen Rand des Reiters), können Sie nun deren wesentlichen Eigenschaften im Eigenschaften-Fenster festlegen:
Nach der Auswahl weiterer Register-Karten können Sie auch deren Eigenschaften ändern, wobei sich die Werkzeugleiste 'Formular' in folgender Weise ändert, wenn ein Register markiert ist:
Abbildung 12.6.1.1: Werkzeugleiste 'Formular' – Original
Abbildung 12.6.1.2: Änderung der Werkzeugleiste 'Formular' – Navigation und Button
Klicken Sie anschließend auf den rot markierten Button in der → Abbildung 12.6.1.2, können Sie einerseits alle Beschriftungen der Registerkarten-Reiter sehen und die zu bearbeitende Register-Karte auswählen, was sonst auch mit einem Klick auf einen Registerkarten-Reiter im Register gelingt:
Abbildung 12.6.1.3: Menü der Registerkarten-Reiter-Caption
Alternativ nutzen Sie die angebotene Navigation durch die Register-Karten mit den 4 neuen Schaltflächen → Abbildung 12.6.1.2. Starten Sie das Programm, dann sehen Sie ein funktionsfähiges Register:
Abbildung 12.6.1.4: Register
Der nächste Schritt ist die Umsetzung der geplanten Funktionalität durch die Gestaltung der einzelnen Register-Karten.
Die Besonderheit des ersten Projektes liegt darin, dass zur Entwicklungszeit ein Register mit zwei Register-Karten angelegt wird, wobei die Eigenschaften von Register und Register-Karten im Eigenschaften-Fenster und im Quelltext festgelegt worden sind. Zur Laufzeit kann eine weitere Register-Karte in das Register eingefügt werden (Quelltext 1). Diese 3. Register-Karte können Sie dann ein- und ausblenden sowie die Eigenschaften aller drei Register-Karten auslesen.
Quelltext 1:
Public Sub btnCreateNewTab_Click() If TabStrip1.Count = 2 Then ' Eine weitere Register-Karte einfügen Inc TabStrip1.Count ' Wesentliche Eigenschaften der Register-Karte festlegen TabStrip1[2].Caption = "Gambas-Wiki" TabStrip1[2].Picture = Picture["icon:/16/connect"] TabStrip1[2].Enabled = True TabStrip1[2].Visible = True ' 2 Steuer-Elemente in die Register-Karte (Container) einfügen ' 1. Steuer-Element: WebView hWebView = New WebView(TabStrip1) As "hWebView" ' Eigenschaften WebView hWebView.Expand = True ' 2. Steuer-Element: HBox hhboxNavigation = New HBox(TabStrip1) As "hhboxNavigation" ' Eigenschaften HBox hhboxNavigation.Height = 24 hhboxNavigation.Spacing = True ' 2 Steuer-Elemente in die HBox (Container) einfügen ' 1.Steuer-Element: TextBox htxtURL = New TextBox(hhboxNavigation) As "htxtURL" ' Eigenschaften TextBox htxtURL.Height = 24 htxtURL.Background = &HF5FFE6 htxtURL.Expand = True htxtURL.Text = "http://gambaswiki.org/wiki/comp/gb.qt4/tabstrip/findindex" ' 2. Steuer-Element: Button hbtnOpen = New Button(hhboxNavigation) As "hbtnOpen" ' Eigenschaften Button hbtnOpen.Height = 24 hbtnOpen.Width = 32 hbtnOpen.Picture = Picture["icon:/16/right"] ' Register-Karte 'Gambas-Wiki' als aktuelle Register-Karte deklarieren TabStrip1.Index = TabStrip1.Count - 1 htxtURL_Activate() ' Angegebene Webseite → htxtURL.Text anzeigen Endif End ' btnCreateNewTab_Click() Public Sub btnChangeVisibility_Click() If TabStrip1.Count > 2 Then TabStrip1[2].Visible = Not TabStrip1[2].Visible End ' btnChangeVisibility_Click() Public Sub btnGetInformations_Click() Dim i, k As Integer Dim hControl As Control Dim sMessage As String sMessage = "<hr><b><font color='Red'>Register-Eigenschaften</font></b><hr>" For i = 0 To TabStrip1.Count - 1 sMessage &= "<font color='Blue'>Index = " & CStr(i) & "</font>" sMessage &= "<br>Register-Karte-" & CStr(i + 1) & "-Beschriftung = '" sMessage &= TabStrip1[i].Caption & "'" sMessage &= "<br>Register-Karte-" & CStr(i + 1) & " aktiviert? " & String.Chr(10230) sMessage &= IIf(TabStrip1[i].Enabled = "T", " Ja", " Nein") sMessage &= "<br>Register-Karte-" & CStr(i + 1) & " sichtbar? " & String.Chr(10230) sMessage &= IIf(TabStrip1[i].Visible = "T", " Ja", " Nein") sMessage &= "<br>Anzahl der Steuer-Elemente auf der " & CStr(i + 1) sMessage &= ". Register-Karte = " & CStr(TabStrip1[i].Children.Count) k = 1 For Each hControl In TabStrip1[i].Children sMessage &= "<br>" & CStr(k) & ". Steuerelement-Name = '" & hControl.Name & "' " Inc k Next sMessage &= "<br><hr>" Next Message.Info(sMessage) End ' btnGetInformations_Click()
In der folgenden Abbildung sehen Sie die generierte 3. Register-Karte mit einem Auszug aus der Gambas-Dokumentation zur Klasse TabStrip (gb.qt4) in einer WebView:
Abbildung 12.6.1.1.1: Register-Karte 3
Das zweite Projekt besitzt als besonderes Merkmal auf der ersten Register-Karte ein weiteres Register mit zwei Register-Karten:
Abbildung 12.6.1.2.1: Einsatz von zwei Registern
Der nächste Quelltext-Ausschnitt aus der Prozedur Form_Open() bezieht sich auf das Register 1 und der Festlegung der Eigenschaften der Register-Karte 2 sowie der darauf platzierten Komponenten:
' Register1-Karte 1 - Editoren ------------------------------ ' Register 2 in Register1-Karte 1 --------------------------- TabStripEditors.Count = 2 ' Beide Editoren füllen die Register-Karten 2.1 und 2.2 jeweils vollständig aus. TabStripEditors.Arrangement = Arrange.Fill TabStripEditors.Expand = True ' Kann entfallen wegen Arrange.Fill TabStripEditors.Margin = True TabStripEditors.Orientation = Align.Bottom TabStripEditors[0].Text = "TextArea" TabStripEditors[1].Text = "Editor (Syntax-Hervorhebung Gambas)" hboxFileOpen.Spacing = True panSpace1.Expand = True ' Register-Karte 2.1 - TextArea TextArea1.Background = &HF5FFE6 ' Register-Karte 2.2 - Editor (gb.qt4.ext) Editor1.Highlight = Highlight.Gambas ' Syntax-Hervorhebung für die Sprache Gambas Editor1.KeywordsUseUpperCase = True ' Groß-Schreibung aller (Gambas-)Schlüssel-Worte Editor1.Flags[Editor1.ShowLineNumbers] = True ' Anzeige von Zeilennummern Editor1.Flags[Editor1.ShowCurrentLine] = True ' Hervorhebung der aktuellen Zeile Editor1.Flags[Editor1.BlendedLimits] = True ' Trennlinie zwischen den einzelnen Prozeduren ' Anzeige von Register-Karte 2.2 (Editor) TabStripEditors.Index = 1
Ab Gambas 3.8.0 sollten Sie den Editor gegen den TextEditor (gb.form.editor) austauschen.