VB 5/6-Tipp 0103: SSTab, zur Laufzeit Registrierkarte und Steuerelemente zufügen
von ActiveVB
Beschreibung
Die Kartenanzahl beim SSTab muß zur Entwurfszeit nicht unbedingt bekannt sein. Es können ohne großen Aufwand neue Karten zur Laufzeit erstellt werden. Dieser Tip zeigt weiterhin, wie diese neu erstellten Karten mit ebenfalls zur Laufzeit geladenen Steuerelementen wie Listboxen bestückt werden können.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: keine | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- ' Die Komponente 'Microsoft Tabbed Dialog Control 6.0 (TABCTL32.OCX)' wird benötigt. '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Listen-Steuerelement "List1" (Index von 0 bis 0) ' Steuerelement: Register "SSTab1" Option Explicit Private Sub Command1_Click() Dim X%, PosNr%, TabNr% 'Kopien der existierenden Listbox erstellen For X = 1 To 23 Load List1(X) Next X 'Drei neue Tabs erstellen SSTab1.Tabs = SSTab1.Tabs + 3 'Den drei neuen Tabs einen Titel geben For X = 3 To 5 SSTab1.TabCaption(X) = "Extra Tab " & X Next X 'Listboxen umsetzen, positionieren und Inhalt geben For X = 0 To 23 PosNr = X Mod 4 TabNr = Int(X / 4) 'aktuellen Tab setzen SSTab1.Tab = TabNr 'Listbox der Registrierkarte zuweisen Set List1(X).Container = SSTab1 'positionieren List1(X).Top = 900 List1(X).Left = 300 + 1400 * PosNr 'Wert zuweisen List1(X).AddItem "ListBox " & CStr(X) List1(X).AddItem "Karten Nummer " & CStr(TabNr) List1(X).Visible = True Next X End Sub Private Sub Form_Unload(Cancel As Integer) Dim X% For X = 1 To List1.UBound Unload List1(X) Next X End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB5 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
VB6 | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() | ![]() |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 4 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von Lars am 13.03.2009 um 13:41
Hallo,
bei mir funktioniert das ganze nur dann, wenn ich den Code NICHT in Form_Load ausführe. Also habe ich noch einen Timer eingebaut, z.B. so:
Private Sub Form_Load()
Timer1.Interval = 100
Timer1.Enabled = True
End Sub
Private Sub Timer1_Timer()
Timer1.Enabled = False
SSTab1.Tab = 2
Set MyObj = Me.Controls.Add("OCX.MyCtrl", "MyName")
MyObj.Move 120, 480, 10305, 6700
MyObj.Visible = True
Set MyObj.Container = SSTab1
SSTab1.Tab = 0
...
Kommentar von Harry Hennig am 23.07.2007 um 13:28
Reduzieren der Register
noch o.g.Schema habe ich zur Laufzeit Tabs hinzugefügt. ok
nun will ich Tabs reduzieren von 4 auf 1. (habe alle Steuerelement entladen und .Tabs von 4 auf .Tabs=1 gesetzt), es kommt aber die Fehlermeldung "380" Ungültiger Eigenschaftswert.
Warum und weshalb?
Danke
Kommentar von Elli am 28.09.2005 um 15:57
Hallo ActiveVB-Team,
beim Ausprobieren des Tipps "Tipp 0103: SSTab, zur Laufzeit Registrierkarte und Steuerelemente zufügen" trat der Fehler auf, dass die ListBoxen des ersten Tabs nicht stimmten bzw. durch ListBoxen zu hoher Nummer überschrieben waren.
Nach einigem Suchen kam heraus, dass der aktuelle Tab gesetzt werden muss, bevor eine Kopie der existierenden ListBox erstellt wird.
Im Anschluss schicke ich einen Verbesserungsvorschlag der bei mir gut funktioniert hat. Die "äußeren Umstände" (ListBox...) sind die gleichen, wie beim Tipp.
Zur Info: Ich arbeite an einem PC mit Windows 2000 und VB6.
Mit freundlichen Grüßen,
Elli
----------------------------------------------------------
Option Explicit
Private Sub Form_Load()
Dim X%
'Drei neue Tabs erstellen
SSTab1.Tabs = SSTab1.Tabs + 3
'Den drei neuen Tabs einen Titel geben
For X = 3 To 5
SSTab1.TabCaption(X) = "Extra Tab " & X
Next X
End Sub
Private Sub Command1_Click()
Dim X%, PosNr%, TabNr%
'Listboxen umsetzen, positionieren und Inhalt geben
For X = 0 To 23
PosNr = X Mod 4
TabNr = Int(X / 4)
'aktuellen Tab setzen
SSTab1.Tab = TabNr
'Kopie der existierenden Listbox erstellen
If X <> 0 Then
Load List1(X)
End If
'Listbox der Registrierkarte zuweisen
Set List1(X).Container = SSTab1
'positionieren
List1(X).Top = 900
List1(X).Left = 300 + 1400 * PosNr
'Wert zuweisen
List1(X).AddItem "ListBox " & CStr(X)
List1(X).AddItem "Karten Nummer " & CStr(TabNr)
List1(X).Visible = True
Next X
End Sub
Private Sub Form_Unload(Cancel As Integer)
Dim X%
For X = 1 To List1.UBound
Unload List1(X)
Next X
End Sub
Kommentar von Thorsten Dziallas am 31.01.2001 um 14:06
Wie kann ich in einem SStab die Farben der einzelnen Tabs einstellen ?????