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