SSTab évènement sur onglet

Résolu
tapageur99 Messages postés 19 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 24 février 2009 - 5 déc. 2008 à 20:37
tapageur99 Messages postés 19 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 24 février 2009 - 9 déc. 2008 à 14:23
Bonjour,

En Vb6, sur un SSTab, comment provoquer un évènement en cliquant sur un onglet (autre que de lui donner le focus).
Un évènement du genre DataGrid1.Update

Merci  

tapageur

6 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 déc. 2008 à 20:31
Re
On est bien d'accord : Update, c'est pour écrire les modifications dans la DB.
Faire un Update au moment où tu visualises un onglet n'est peut-être pas le meilleur moment, je l'aurais plutôt provoqué au moment où l'onglet quitte la visu, c'est à dire avec le PreviousTab et pas le Tab.

Dans ton explication, tu dis "dès que je clique sur une autre cellule" : tu sous-entends "sans changer de Tab" ?
Dans ce cas, ne te focalise pas sur les Tabs, tu vois bien qu'il n'y a pas de lien.
Tu as dû mettre du code dans le DataGrid du premier onglet que tu n'as pas mis dans les autres
Regarde voir dans les évènements du premier DataGrid, dans OnAddNew, SelChange, Change, AfterColEdit ...
ou encore, recherche partout dans ton code où tu aurais pu faire un RecordSet.AddNew

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
7 déc. 2008 à 05:01
Salut
Pour provoquer un évènement, il faut qu'il existe.
Dans ta page de code, une fois que tu as sélectionné ton ssTab dans la ComboBox située en haut à gauche de la page, regarde dans la ComboBox de droite sur cette même page : Tu verras ici tous les évènements attachés à cet objet.
A toi de mettre du code dedans.
Si tu veux exécuter ce code sans que l'évènement se soit produit, il te suffit de faire 
   Call maSsTab_monEvènement(ici, éventuelle liste de paramètres si la Sub l'éxige)
Exemple classique avec un CommandButton :
   Call monBouton_Click

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
tapageur99 Messages postés 19 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 24 février 2009
7 déc. 2008 à 16:08
Merci de ta réponse Jack,
Mais je crois m'être mal exprimé. Je veux obtenir un évènement différent selon l'onglet (Tab) que j'actualise. Dans SSTab, les onglets ne se comportent pas comme un objet. Il n'y a donc ni méthode, ni procédure qui lui sont associées.

J'ai un DataGrid sur chaque onglet associé à un Adodc différent pour chacun.
Lorsque je change d'onglet, le DataGrid se rempli bien, mais pour le update, il n'y a que celui du premier onglet qui fonctionne étant donné que je dois le commander dans le SSTab et non dans le Tab. J'étais habitué avec Delphi, qui était différent.

Merci encore

tapageur
0
cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
8 déc. 2008 à 01:07
Re
Un ssTab n'est qu'un container qui n'affiche qu'une partie des objets qu'il héberge.
Les objets, comme tes DataGrids, sont donc des objets tous différents.

"Le Update" : Comment procèdes-tu ? C'est un bouton ? Quel code y a t-il derrière ? A quel DataGrid fait-il référence ? (le premier surement)
Le plus simple serait d'indexer les DataGrid et d'utiliser l'index de l'onglet actuellement affiché pour désigner le DataGrid(x) à mettre à jour.

"dans le SSTab et non dans le Tab" : pas clair

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tapageur99 Messages postés 19 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 24 février 2009
8 déc. 2008 à 14:46
Salut et merci

J'ai placé un Datagrid1 et un Adodc1 dans le Tab1, Un Datagrid2 et un Adodc2 dans le Tab2, etc
À l'exécution, lorsque je clique sur un onglet les Datagrid indiquent bien les données des tables respectives.

Dans le SSTab, j'ai essayé ce code

    Private Sub SSTab1_Click(PreviousTab As Integer)
     If SSTab1.Tab = 0 Then
      Adodc1.Recordset.Update
    ElseIf SSTab1.Tab = 1 Then
      Adodc2.Recordset.Update
    ElseIf SSTab1.Tab = 2 Then
      Adodc3.Recordset.Update
    End If

   End Sub

Dans le premier Datagrid, je change une valeur, je clique dans une autre cellule et la valeur se met à jour. Par contre dans les autres Datagrid, je change une valeur et dès que je clique sur une autre cellule la nouvelle valeur disparait (s'efface). Je ne comprend pas ce comportement.

Merci de votre patience, je suis débutant en VB

tapageur
0
tapageur99 Messages postés 19 Date d'inscription dimanche 19 mars 2006 Statut Membre Dernière intervention 24 février 2009
9 déc. 2008 à 14:23
Merci beaucoup Jack pour ta patience et ton aide précieuse.
Je vais pouvoir m'en sortir avec Update et PreviousTab en forçant l'ordre de déroulement des tab.

Tu avais bien raison de me faire fouiller dans mon code pour l'entrée de donnée qui s'effaçait. J"avais tout simplement un Refresh qui était mal placé sauf pour mon premier Tab.

Merci encore

tapageur
0