Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0103: SSTab, zur Laufzeit Registrierkarte und Steuerelemente zufügen

 von 

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:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [2,84 KB]

'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-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

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 ?????