Ajout dynamique d'onglets et autres composants

Description

Etant en train de réaliser un chat, je recherchais, pour les messages privés, à faire des onglets dynamiques.

Or le composants SSTab, qui peut bien gérer cela, ne me plait pas vraiment car il se présente en plusieurs lignes et je n'ai pas trouvé d'astuce pour l'éviter.
Alors j'ai dû me rabattre sur le composant TabStrip et essayer de "dynamiser" tout ça !

Ce code est très basique mais il pourrait aider certains.
Un zip est à disposition pour ceux qui ont la flemme de tout faire :)

----------
Ce code source a été mis à jour de façon à satisfaire les questions indiquées dans les commentaires. J'espère qu'il sera assez suffisant à présent ! ;)

Source / Exemple :


'Tout d'abord, créez un nouveau projet avec pour nom de feuille Form1
'Ensuite, ajoutez le composant "Microsoft Windows Common Controls 6.0 (SP4)"
'Insérez le contrôle d'onglets TapStrip1 dans la feuille
'Puis, insérez les composants suivants avec comme propriété "Index = 1" :
'- Une Frame par dessus l'onglet nommée Frame1
'- Un TextBox hors de la Frame1 (que vous pouvez glisser par dessus après)
'- Une ImageBox hors de la Frame1 (que vous pouvez glisser par dessus aussi !)
'- Un Label hors de la Frame
'- Un CheckBox hors de la frame

'Enfin, copiez-collez ce code:

Public nTop As Integer      'Entier de position verticale des checkboxes

'Bouton d'ajout des composants

Private Sub Command1_Click()

    Dim nIndex As Integer   'Index de l'onglet ajouté
    Dim nIdsel As Integer   'Index de l'onglet sélectionné
    
    'Initialisation de la position du nouveau checkbox
    nTop = nTop + 300
    
    'Index de l'onglet rajouté
    nIndex = TabStrip1.Tabs.Count + 1
    
    'Recherche de l'index de l'onglet sélectionné
    nIdsel = TabStrip1.SelectedItem.Index
    
    'Ajout de l'onglet
    TabStrip1.Tabs.Add
    TabStrip1.Tabs(nIndex).Caption = "Onglet " & nIndex
    
    'Ajout de la frame
    Load Frame1(nIndex)
    Frame1(nIndex).Caption = "Frame " & nIndex
    Frame1(nIndex).Visible = True
    
    'Ajout du textbox dans le nouvel onglet
    Load Text2(nIndex)
    Text2(nIndex).Text = "Text " & nIndex
    Text2(nIndex).Visible = True
    
    'Ajout de picturebox dans le nouvel onglet
    Load Picture1(nIndex)
    Picture1(nIndex).ToolTipText = "Picture " & nIndex
    Picture1(nIndex).Visible = True

    'Sélection de l'onglet rajouté
    TabStrip1.Tabs(nIndex).Selected = True
    
    'Mise au premier plan de la frame et du textbox
    Frame1(nIndex).ZOrder 0
    Text2(nIndex).ZOrder 0
    Picture1(nIndex).ZOrder 0
    
    'Ajout et placement du nouveau checkbox
    Load Check1(nIndex)
    Check1(nIndex).Caption = "Check " & nIndex
    Check1(nIndex).Visible = True
    Check1(nIndex).Top = nTop
    
    'Ajout et placement du nouveau label
    Load Label1(nIndex)
    Label1(nIndex).Caption = "Label " & nIndex
    Label1(nIndex).Visible = True
    Label1(nIndex).Top = nTop

End Sub

'Chargement du formulaire

Private Sub Form_Load()

    'Initialisation de la position des checkboxes
    nTop = Check1(1).Top
    
End Sub

'Click sur les onglets

Private Sub TabStrip1_Click()

    Dim nIdsel As Integer   'Onglet sélectionné
    
    'Affichage des composants correspondants
    nIdsel = TabStrip1.SelectedItem.Index
    Frame1(nIdsel).ZOrder 0
    Text2(nIdsel).ZOrder 0
    Picture1(nIdsel).ZOrder 0

End Sub

Conclusion :


Voilà ! Après, bien sûr ce code et à remanier à sa sauce :)
Pour toute suggestion, n'hésitez pas à laisser vos commentaires !

Kab

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.