Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

AJOUT DYNAMIQUE D'ONGLETS ET AUTRES COMPOSANTS


Information sur la source

Catégorie :Formulaire Niveau : Débutant Date de création : 24/10/2003 Date de mise à jour : 25/04/2004 12:05:55 Vu / téléchargé: 7 271 / 15 517

Note :
8 / 10 - par 3 personnes
8,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (11)
Ajouter un commentaire et/ou une note

Description

Cliquez pour voir la capture en taille normale
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

  • '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
'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
 

Fichier Zip

Pour les "Membres Club", vous pouvez télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip

Commentaires et avis

signaler à un administrateur
Commentaire de ThunderPsycho le 26/10/2003 02:44:57

Simple et efficace ;o) 9/10

signaler à un administrateur
Commentaire de kabeydia le 26/10/2003 12:48:57

Mici :)

signaler à un administrateur
Commentaire de turkill le 19/11/2003 12:42:30

Cool et pour ajouter des checkbox ? J'ai crée un checkbox j'ai ajouté du code comme pour le text2 que tu as fait et ca marche po :( plz help

signaler à un administrateur
Commentaire de turkill le 19/11/2003 13:01:54

C'est bon ca marche pour ce qui est des checkbox mais comment faire en sorte qu'ils évitent d'écraser les checkbox ou textbox l'un par dessus l'autre s'il y a plusieurs demandes de checkbox ??? merci => turkill2@hotmail.com

signaler à un administrateur
Commentaire de kabeydia le 19/11/2003 19:30:56

Tu peux faire un décalage avec les propriétés .left et .top

signaler à un administrateur
Commentaire de Valombre le 19/02/2004 11:19:56

Je me suis inspiré de ce code afin de créer et placer dynamiquement des frame sur une autre... sauf que sur les frames que j'ajoute, il est censé il y avoir des boutons qui n'apparaissent pas :(

Je force l'affichage avec Command(id).Visible = true et Command(id).zorder 0
Mais en mode debuggage j'ai constaté que Visible reste a false

Quelqu'un a une explication?

signaler à un administrateur
Commentaire de jotrash le 21/02/2004 10:48:04

Moi je n'arrive pas a utiliser ce code pour pouvoir remplacer les textbox par des picturebox
Comment cela se fait-il ?
svp A l'aide

signaler à un administrateur
Commentaire de riderbmx le 23/04/2004 15:09:45

j'ai le meme probleme avec les labels.

pourquoi?

signaler à un administrateur
Commentaire de jotrash le 24/04/2004 11:35:07

si tu veux jy suis parvenu pr mes textbox je peux tenvoyer une source pas mal tu peux me mailer sur codes source ou me prendre sur msn

signaler à un administrateur
Commentaire de kabeydia le 24/04/2004 16:17:37

Vala, une petite amélioration du code en fonction des commentaires est maintenant disponible :)

signaler à un administrateur
Commentaire de midida le 06/11/2007 13:34:28

Moi je n'arrive pas à rajouter le composant "Microsoft Windows Common Controls 6.0 (SP4)"
je sais pas c'est quoi le problème

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Octobre 2008
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,125 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.