IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Onglets dynamiques


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 16
    Par défaut Onglets dynamiques
    Bonjour,

    Je suis en train de développer un programme en vb6.

    Je dois créer une interface proposant plusieurs onglets (SSTAB) dont le nombre varie en fonction du nombre de catégories de produits existant dans la base. Jusque la, ca marche.

    Dans chaque onglet, on doit trouver un bouton pour chaque produit correspondant à la catégorie concernée. Chose faite également à l'aide d'un bouton avec index et de la commande load...

    Là ou ca se gâte, c'est que tous mes boutons apparaissent dans le premier onglet. Je ne sais pas comment attribuer mon bouton à l'onglet numéro 2, 3 ...


    Quelqu'un aurait-il la solution à mon problème ?

    Merci d'avance !

  2. #2
    Membre confirmé Avatar de muzele
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Par défaut
    Lors de la conception de ton logiciel, il faudrait que le bouton soit inséré sur l'onglet actif!
    donc premierement activer l'onglet puis ensuite insérer le bouton !

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 16
    Par défaut re onglet dynamique
    D'abord, merci pour la rapidité de réponse !

    Par contre, ca ne marche toujours pas ! c'est bien ce que j'ai fait. Je passe avant à l'onglet suivant avec la commande cat_prod.tab= i (i etant le nulméro de l'onglet voulu et cat_prod le sstab). En mode pas à pas, j'ai vu qure i avait la bonne valeur....

    Il y aurait-il une autre manip ?

    Merci

  4. #4
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Tu peux nous montrer ton code d'ajout d'onglet et de bouton stp ? Ca nous évitera de partir de 0

  5. #5
    Membre confirmé Avatar de muzele
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Congo-Kinshasa

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Par défaut
    Bien dit Monbateau!
    c'est par là qu'il faudrait commencer ! quelques lignes de code ne font de mal à personne !
    Edit:
    J'ai pas l'habitude de lire du code sous format txt. pourrais tu please mettre ton code entre les balises "Code" en cliquant sur le #

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 16
    Par défaut code ajout bouton
    Donc le topo : j'ai un SSTAB (cat_prod)avec un nombre d'onglet dynamique en fonction du nombre de catégories de produits.

    Dans chaque onglet, j'ai un bouton (bprod) par produit de cette catégorie, affichés à raison de 3 boutons par ligne. Je récupère mes produits et catégories sur une base ACCESS. La partie traitement des données est bonne.


    Pour l'ajout de bouton mon code est le suivant (de tete, je n'ai pas accès au pc concerné pour l'instant...)


    //requète SQL pour la liste des catégories
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    categorie.movefirst
    j=0
    do
    cat_prod.tab=j
    //Requète SQL pour les produits de la catégorie
    produit.movefirst
    i=0
    do
    load bprod(i)
    bprod(i).caption=produit.fields("nom_prod")
    bprod(i).visible=true
    bprod.move (1+ i mod 3)*450, (1+ i\3)*500
    i=i+1
    produit.movenext
    loop until produit.EOF
    j=j+1
    categorie.movenext
    loop until categorie=EOF

    Et donc il me crée bien les boutons, mais uniquement dans le premier onglet. (au début je ne voyais pas ceux de la 2° catégorie, mais en saisissant plus de produits dans la1° catégorie que dans la secondes, je vois les boutons supplémentaires, donc il execute bien mon code...)


    Voila voila ! Si quelqu'un peut éclairer ma lanterne, ca serait fort sympatique...

  7. #7
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    Il me semble qu'il faut donner le focus à l'onglet sur lequel tu souhaite créer le bouton avant de le créer, non ?

    ps: pourrais-tu mettre les balises code (c'est le "#") autour de ton code, merci
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Citation Envoyé par glaudioman Voir le message
    Je dois créer une interface proposant plusieurs onglets (SSTAB) dont le nombre varie en fonction du nombre de catégories de produits existant dans la base. Jusque la, ca marche.
    J'espére pour toi le nombre de catégories ne va pas beaucoup augmenter pour toi, car si tu en crées un à chaque fois, ton interface va devenir ingérable et illisible

    Starec

  9. #9
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Cela devrait aidé.
    Sur un Form, 3 CommandButton, le Command2 index=0, un SSTab
    Tous les contrôles avec leurs propriétés par default, le placement et divers est fait dans Form_Load
    le Command2 index=0 doit être posé sur la Form
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    Option Explicit
    Private Sub Form_Load()
    'configuration des côntroles
    SSTab1.Move 150, 630, 7755, 3195
    Command1.Move 180, 90, 1395, 375
    Command1.Caption = "Ajout d'onglet"
    Command2(0).Move 1650, 90, 1305, 375
    Command2(0).Caption = "Bt. modéle"
    Command2(0).Enabled = False
    Command3.Move 3030, 90, 2355, 375
    Command3.Caption = "Ajout de Bt. sur l'onglet actif"
    End Sub
     
    Private Sub Command1_Click()
    SSTab1.Tabs = SSTab1.Tabs + 1
    SSTab1.Tab = SSTab1.Tabs - 1
    SSTab1.Caption = "essais " & CStr(SSTab1.Tabs - 1)
    Load Command2(Command2.Count)
    Set Command2(Command2.Count - 1).Container = SSTab1   ' .Container, si DEREMER sa fonctionne pas
    Command2(Command2.Count - 1).Top = 630
    Command2(Command2.Count - 1).Left = 480
    Command2(Command2.Count - 1).Caption = "bouton " & CStr(Command2.Count - 1)
    Command2(Command2.Count - 1).Visible = True
    Command2(Command2.Count - 1).Tag = SSTab1.Tab
    Command2(Command2.Count - 1).Enabled = True
    End Sub
     
    Private Sub Command3_Click()
    Dim T As Integer
    Dim NbrBtOnglet As Integer
    NbrBtOnglet = 0
    'recherche du nombre de bouton posé sur l'onglet actif
    For T = 1 To Command2.Count - 1
     If Command2(T).Tag = SSTab1.Tab Then
      NbrBtOnglet = NbrBtOnglet + 1
     End If
    Next T
     
    Load Command2(Command2.Count)
    Set Command2(Command2.Count - 1).Container = SSTab1
    Command2(Command2.Count - 1).Top = (NbrBtOnglet * Command2(Command2.Count - 1).Height) + 645
    Command2(Command2.Count - 1).Left = 480
    Command2(Command2.Count - 1).Caption = "bouton " & CStr(Command2.Count - 1)
    Command2(Command2.Count - 1).Visible = True
    Command2(Command2.Count - 1).Tag = SSTab1.Tab
    Command2(Command2.Count - 1).Enabled = True
    End Sub
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  10. #10
    Membre émérite Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Par défaut
    merci ProgElecT de confirmer ce dont j'étais loin d'être sur le bouton est donc créé sur l'onglet actif
    La connaissance seule ne suffit pas. La vraie compréhension vient de la mise en expérience.
    Règles|FAQ|Tuto

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 16
    Par défaut ca ne marche toujours pas !
    Rebonjour!

    J'ai donc testé le code proposé qui marche parfaitement sur un nouveau programme, mais pour dieu sais quelle raison, dans mon cas, il reste bloqué sur le premier onglet.

    Je vous met donc ci dessous l'objet du délit...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    Set confiserie = DBEngine.Workspaces(0).OpenDatabase("conf.mdb")
    Set prod = confiserie.OpenRecordset("select distinct type from produit", dbOpenDynaset)
    If prod.RecordCount = 0 Then
    nb = MsgBox("acun produit enregistré dans la base")
    Else
    SSTab1.Tabs = prod.RecordCount
    prod.MoveFirst
    i = 0
    Do
    SSTab1.Tab = i
    SSTab1.Caption = prod.Fields("type")
    i = i + 1
    prod.MoveNext
    Loop Until prod.EOF
    prod.MoveFirst
    p = 0
    i = 1
    Do
    Set produits = confiserie.OpenRecordset("select * from produit where type='" & prod.Fields("type") & "' order by libelle", dbOpenDynaset)
    If produits.RecordCount <> 0 Then
    produits.MoveFirst
    k = 0
    Do
    Load bprod(i)
    SSTab1.Tab = p
    Set bprod(i).Container = SSTab1
    bprod(i).Top = ((k \ 3) * (bprod(i).Height + 200)) + 645
    bprod(i).Left = ((k Mod 3) * (bprod(i).Width + 200)) + 150
    bprod(i).Caption = Replace(produits.Fields("libelle"), "&", "&&")
    bprod(i).Visible = True
    bprod(i).Tag = SSTab1.Tab
    bprod(i).Enabled = True
    produits.MoveNext
    i = i + 1
    k = k + 1
    Loop Until produits.EOF
    End If
    prod.MoveNext
    p = p + 1
    Loop Until prod.EOF
    End If
    Si quelqu'un voit d'où le problème peut venir, ca me serait d'un grand secours !

    En tout cas merci pour votre rapidité et précision de réponse !

  12. #12
    Membre Expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Par défaut
    Ben si tu mettais un point d'arret sur ta ligne
    (ou un espion pour p) je pense que tu te rendrais compte du problème par toi même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. insertion d'onglets dynamiquement
    Par bit_o dans le forum GTK+ avec C & C++
    Réponses: 4
    Dernier message: 01/02/2007, 00h08
  2. TWebBrowser et onglets dynamiques
    Par krokmitaine dans le forum Delphi
    Réponses: 1
    Dernier message: 29/09/2006, 11h23
  3. Réponses: 2
    Dernier message: 14/07/2006, 14h24
  4. JTabbedPane avec onglets dynamique
    Par oOoOuuhmAn dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 18/03/2006, 16h23
  5. Onglet dynamique
    Par OjBarbare dans le forum MFC
    Réponses: 2
    Dernier message: 11/12/2005, 21h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo