SSTab évènement sur onglet [Résolu]

tapageur99 19 Messages postés dimanche 19 mars 2006Date d'inscription 24 février 2009 Dernière intervention - 5 déc. 2008 à 20:37 - Dernière réponse : tapageur99 19 Messages postés dimanche 19 mars 2006Date d'inscription 24 février 2009 Dernière intervention
- 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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 8 déc. 2008 à 20:31
3
Merci
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)

Merci cs_Jack 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 80 internautes ce mois-ci

Commenter la réponse de cs_Jack
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 7 déc. 2008 à 05:01
0
Merci
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)
Commenter la réponse de cs_Jack
tapageur99 19 Messages postés dimanche 19 mars 2006Date d'inscription 24 février 2009 Dernière intervention - 7 déc. 2008 à 16:08
0
Merci
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
Commenter la réponse de tapageur99
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 8 déc. 2008 à 01:07
0
Merci
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)
Commenter la réponse de cs_Jack
tapageur99 19 Messages postés dimanche 19 mars 2006Date d'inscription 24 février 2009 Dernière intervention - 8 déc. 2008 à 14:46
0
Merci
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
Commenter la réponse de tapageur99
tapageur99 19 Messages postés dimanche 19 mars 2006Date d'inscription 24 février 2009 Dernière intervention - 9 déc. 2008 à 14:23
0
Merci
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
Commenter la réponse de tapageur99

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.