Onglet dans SSTab ne se sélecttionne pas (Tab = 1)

Signaler
Messages postés
122
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
11 novembre 2020
-
Messages postés
122
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
11 novembre 2020
-
Bonjour,

Mon problème est très simple à expliquer. J'ai dans une form un contrôle SStab avec 2 onglets. Lorsque je lance le programme, je force l'activation du 2ème onglet : Onglets.Tab = 1.
Mais c'est toujours le premier qui est activé. L'explication en image :


La partie haute est le code, la basse la fenêtre à l'exécution. Comme vous pouvez le voir, je force Tab = 1 et c'est le premier onglet qui reste affiché (Tab = 0).

Comment faire pour que l'onglet activé via Tab = soit le bon ?

Merci d'avance

Notpa

8 réponses

Messages postés
15078
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 novembre 2020
458
Bonjour

as tu essayé dans un évènement qui vient après Load.
En VB6, je ne me souviens plus si c'était Shown, Activate ou...
De mémoire, Activate existe mais se déclenche à chaque fois que le formulaire prend le focus.
Il faut donc avoir une variable, par exemple un booléen, que tu testes pour savoir si ça s'active par ce que c'est le démarrage du logiciel ou pas
Messages postés
122
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
11 novembre 2020
1
Hello Whishùeril !
J'ai testé ceci :
Private Sub Form_Activate()
onglets.Tab = 1
End Sub

Private Sub Form_GotFocus()
onglets.Tab = 1
End Sub

Private Sub Form_Initialize()
onglets.Tab = 1
End Sub


Pareil. Toujours l'onglet 0 ! Seul l'Initialize est activé.

Je ne comprends pas trop ta suggestion de variable type booléen. Peux-tu développer ?

Merci !
Messages postés
122
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
11 novembre 2020
1
Autre test : au démarrage de la form principale j'appelle une autre form qui fait juste frm_prim.Onglets.Tabs = 1 puis se termine. Pareil : Tab =0.
Messages postés
15078
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
12 novembre 2020
458
Je peux développer, mais ça ne te servira pas cette fois puisqu'avec les autres évènements ça ne fonctionnent pas.

Dans un de mes projets VB6, j'avais besoin de faire une action (je ne sais plus laquelle) dans un évènement après le load (je ne sais plus lequel non plus)
Mais dans ce langages tous les évènements après le load sont susceptibles d'être déclenchés ultérieurement (par exemple GotFocus, le sera à nouveau si tu changes de fenêtre et que tu y reviens), et cette action ne devait arriver qu'une fois (comme toi)

Donc dans le load je mettais ma variable à true.
Et dans l'autre évènement, si elle valait true je faisais l'action et je la repassais à false.

En .Net, il y a un évènement qui ne se produit qu'une fois, tout à la fin du chargement (Shown p'tet bien) et c'est typiquement là qu'on choisit un onglet, une valeur de combobox etc.... D'où mon idée.

Messages postés
2262
Date d'inscription
samedi 11 janvier 2014
Statut
Contributeur
Dernière intervention
11 novembre 2020
115
Salut Whis

Tu dis : En .Net, il y a un évènement qui ne se produit qu'une fois, tout à la fin du chargement (Shown p'tet bien) et c'est typiquement là qu'on choisit un onglet, une valeur de combobox etc.... D'où mon idée.

C'est exact
Le Form_Load charge la feuille
Le Form_Shown l'affiche sur l' écran

En Vb 6 il y a Form_Show si mes souvenirs sont bons qui est l'équivalent du Form_Shown VB Net
Messages postés
122
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
11 novembre 2020
1
Bonjour !

J'ai créé un tout petit projet avec une forme et un sstab qui a 3 onglets. Là, ça marche : si je code au lancement sstab1.tab = 1, j'affiche bien le 2ème onglet. Si tab = 2, j'ai le 3ème alors que 0 me montre le premier. Donc, ça marche.

Dans le projet qui coince, j'ai ajouté un autre SStab : même problème : pas moyen de sélectionner via la code l'onglet. J'ai essayé aussi ceci : j'ai créé une forme qui contient une seule instruction : form1.onglets.tab = 1. Dans le load de form1, j'appelle cette autre forme . Pareil : l'onglet 1 n'est pas sélectionné.

Pourquoi ça marche ailleurs mais pas dans ce projet ???

That's the question...
Messages postés
193
Date d'inscription
mardi 4 juillet 2017
Statut
Membre
Dernière intervention
10 novembre 2020
5
Mets le en fin de procédure Form_load...
Messages postés
122
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
11 novembre 2020
1
Hello !

Il y est déjà. Pas mieux.

Dans la forme initiale, il y a 2 onglets, avec chacun une grille qui est remplie à partir d'une base Access. Je force l'onglet 1 (le deuxième), remplis la grille, qui s'affiche une fois finie, puis passe à l'onglet 0 (le premier) qui voit sa propre grille se remplir. Là, je sors. Même si Onglets.tab = 0 est codé, il reste sur le 1.

Si en mode développement je sélectionne l'onglet 1, il est bien affiché au load, mais quand la force Tab=0, les onglets restent sur le 1.
Messages postés
122
Date d'inscription
dimanche 13 janvier 2019
Statut
Membre
Dernière intervention
11 novembre 2020
1
Hello !

Les 2 premières instructions dans le Load sont :

frm_prim.Show
onglets.Tab = 1

Mais c'est toujours l'onglet 0 qui s'affiche.