Rubrik: Controls · Sonstiges | VB-Versionen: VB5, VB6 | 10.01.03 |
Inhalt von SSTAB zur Laufzeit modifizieren Dieses Beispiel zeigt, wie sich Steuerelemente innerhalb des SSTab-Control zur Laufzeit verschieben lassen. | ||
Autor: Reinhard Wolf | Bewertung: | Views: 13.549 |
www.wolf-it-service.de | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | Beispielprojekt auf CD |
Das folgende Beispiel verschiebt eine Textbox innerhalb des SSTab-Controls von einem Register auf ein anderes. Das geht natürlich auch mit jedem anderen Control. Knackpunkt der ganzen Geschichte ist die Tatsache, dass zunächst das zu bewegende Control einem anderen Container zugewiesen wird (in unserem Beispiel der Form selbst).
Dann wird im TabbedDialog das gewünschte Register gesetzt und die Containereigenschaft des zu bewegenden Controls auf das TabbedDialog zurückgesetzt.
Im nachfolgenden Beipiel enthält die Form ein SSTab1 mit 3 Registerkarten. Die mittlere Registerkarte enthält eine Textbox Text1. Weiterhin gibt es noch drei Schaltflächen Command1 bis Command3, über die man die TextBox auf die einzelnen Register "umplatzieren" kann.
Startet man die Anwendung kann man sich durch Klicken auf die Registerlaschen überzeugen, dass nur Tab2 die Textbox enthält. Ein Klick auf Command1 setzt die Textbox nach Tab1, Command2 nach Tab2 und Command3 nach Tab3.
Die Form1 enthält hierzu folgenden Quellcode:
Option Explicit ' Hier merken wir uns die Registerkarte, ' die das Control aktuell enthält Private AktTab As Integer Private Sub Form_Load() ' Beim Laden befindet sich die TextBox ' auf dem 2. Register, als SSTab1.Tab = 1 AktTab = 1 End Sub Private Sub Command1_Click() ' TextBox auf die 1. Registerkarte "umplatzieren" SSTab_MoveControl Text1, 0 End Sub Private Sub Command2_Click() ' TextBox auf die 2. Registerkarte "umplatzieren" SSTab_MoveControl Text1, 1 End Sub Private Sub Command3_Click() ' TextBox auf die 3. Registerkarte "umplatzieren" SSTab_MoveControl Text1, 2 End Sub
' Control innerhalb des SSTab-Controls "umplatzieren" Private Sub SSTab_MoveControl(oControl As Control, _ ByVal nTab As Integer) Dim nTabCur As Integer With oControl ' aktuelle Registerkarte "merken" nTabCur = SSTab1.Tab ' Registerkarte öffnen, auf der das Control ' bisher angezeigt wird SSTab1.Tab = AktTab ' Control unsichtbar machen und der Form zuweisen .Visible = False Set .Container = Me ' Zielregisterkarte öffnen und in "AktTab merken" SSTab1.Tab = nTab AktTab = nTab ' Control dem Registerblatt zuordnen Set .Container = SSTab1 ' ursprüngliche Registerkarte wieder öffnen SSTab1.Tab = nTabCur ' TextBox wieder sichtbar machen .Visible = True End With End Sub
Vorteilhaft hat sich diese Methode auch beim Laden von Controls zur Laufzeit erwiesen, um ein neues Control auf die entsprechende Registerkarte zu setzen.