OVH Cloud OVH Cloud

À Yannick MVP - 2 datagrid-scroll

18 réponses
Avatar
Annie L.
Votre exemple fonctionne très bien et c'est ce qu'il me fallait!
Mais, il y a un petit problème :

J'ai déjà 2 datagrid sur mon formulaire et ils ont leurs propres
'TableStyle' et leur 'data source'. Comment appliquer votre exemple! J'ai
essayé différentes méthodes avec votre exemples et cela ne fonctionne pas du
tout!
Il me manque sûrement un petit quelque chose!

Je suis débutante depuis peu et ce n'est pas facile!!!

Merci de votre aide précieuse!

8 réponses

1 2
Avatar
Zoury
Salut Annie! :O)

Bonjour!!!
Wow! super!



hehe! heureux de constater ton enthousiasme! :OP


mais je ne saisie pas le "scrollModes". Présentement j'ai 2
nouvelles propriétés 'HorizScrollValue' et 'VertScrollValue' qui ont comme
valeur "0". Si je change ces propriétés soit à "1" ou "2", j'obtient un
message me disant que la valeur saisie n'est pas correcte.



Exact. Les scrollbars du Grid ne sont initialisées pas au moment de
l'execution de IntializeComponent() donc théoriquement leur valeur ne
peut-être différente de 0.
Si tu ne veux plus voir ces propriété apparaître dans la fenêtre de
propriété et si tu ne veux plus que le générateur de code leur affecte une
valeur par défaut, ajoute cette ligne au-dessus de chacune des déclarations
de ces propriétés :
'***
<Browsable(False),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
Public Property HorizScrollValue() As Int32
' blabla
End Property
'***
l'attribut Browsable() détermine si la propriété est exposée dans la fenêtre
de propriétés alors que l'attribut DesignerSerializationVisibility()
détermine si le générateur de code sérialise (créer l'affectation de valeur)
dans la méthode InitializeComponent()



En Éxécutant mon application, le 'scroll' du bas n'affecte pas l'autre
datagrid. C'est parfait, mais complexe comme programmation!!!
Mais le 'scroll' vertical ne fonctionne pas. J'aimerais savoir comment
appliquer le 'ScrollModes'.



Avant toute chose, j'ai remarqué une petite défaillance (on m'a dit que
j'étais puriste...) dans ma déclaration de l'enum ScrollModes, elle devrait
déclarer ainsi :
'***
<Flags()> _
Public Enum ScrollModes
NotSet = 0
Horizontal = 1
Vertical = 2
Both = ScrollModes.Horizontal Or ScrollModes.Vertical
End Enum
'***

Le ScrollModes est une énumération portant l'attribut Flag() ce qui fait de
sa valeur un "bitmask".

Tu peux lire le message suivant si tu n'est pas familière avec les bitmasks.
http://groups.google.com/groups?threadm=uwtNY921CHA.1768%40TK2MSFTNGP12


Tu peux donc déterminer laquelle des barres sera lier à l'autre grille de
cette façon :
'***
' aucune des barres n'affectera l'autre grille
LinkableDataGrid1.ScrollMode = ScrollModes.NotSet

' seule la barre vertical affectera l'autre grille
LinkableDataGrid1.ScrollMode = ScrollModes.Vertical

' seule la barre horizontal affectera l'autre grille
LinkableDataGrid1.ScrollMode = ScrollModes.Horizontal

' les deux barres affecteront l'autre grille
LinkableDataGrid1.ScrollMode = ScrollModes.Both
'***


Autre chose que j'ai remarqué hier! Quand je 'scroll' verticalement, cela
fonctionne très bien. Mais je n'arrive pas à pouvoir cliquer sur ma


dernière
ligne et si j'arrive à cliquer sur la fraction de ligne que je vois, il
bousille les coordonnées de ma ligne à cause du 'scroll' du bas qui cache


au
3/4 ma ligne parce que j'ai plusieurs colonnes. Mais si j'ai 3 à 4


colonnes
par exemple, tout est correct car il n'y a pas de 'scroll' dans le bas.



Je n'arrive pas à imiter ce comportement ici.. si tu ne parvient pas à le
règler, essai de me faire un petit exemple (dans un nouveau projet) qui
démontre le problème.. Je pourrai y jeter un oeil plus facilement. Il arrive
même parfois que l'on trouve le bug en codant l'exemple ;O)


--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Annie L.
Autre explication du dernier point:
Mon 1er datagrid contient une seule colonne avec les heures par tranche de
15 minutes. Le 2e datagrid contient les rendez-vous des clients. Chaque
colonne du 2e est un employé.
Donc si dans mon 1er datagrid, la dernière ligne est '17:00', il sera à
égalité avec le scroll horiz. du 2e datagrid. Dans le 2e datagrid, lorsque je
baisse le scroll vert. jusqu'en bas, il remonte toujours d'une ligne vers le
haut m'empêchant de voir et de cliquer sur la dernière ligne. Parfois
j'arrive à voir ma dernièere ligne de peine et de misère, mais les
coordonnées des lignes avec le 1er datagrid est 'bousillées' de 15 minutes.
Il faut remarquer que dans le 2e datagrid, j'ai une colonne masquée qui
contient également les heures par tranche de 15 minutes. Ce sont ces heures
que je choisit et non celles du 1er datagrid.
Comme tu peux le constater, c'est un carnet de rendez-vous que je conçois!
Je remplis mes datagrid avec un dataset 'virtuel' (par du code).
Une solution consisterai à rajouter 2 à 3 periode de 15 minutes
supplémentaires à la fin mais non accessible par l'usager (case grisée). Si
je veux envoyer un bout de code, comment je fais et ça ne sera pas facile,
car mon programme approche les 200,000 lignes!!!! et il roule très bien sur
un autre poste avec beaucoup de difficulté à réaliser cela! Mais l'important,
j'ai réussi! et ce grâce aussi à ce forum et à de multiples volumes!
Essaie de créer plusieurs colonne dans le 2e datagrid de façon à avoir le
scroll horiz. parce que s'il n'y a pas de scroll horiz., tout est parfait!!!!

"Zoury" wrote:

Salut Annie! :O)

> Bonjour!!!
> Wow! super!

hehe! heureux de constater ton enthousiasme! :OP


> mais je ne saisie pas le "scrollModes". Présentement j'ai 2
> nouvelles propriétés 'HorizScrollValue' et 'VertScrollValue' qui ont comme
> valeur "0". Si je change ces propriétés soit à "1" ou "2", j'obtient un
> message me disant que la valeur saisie n'est pas correcte.

Exact. Les scrollbars du Grid ne sont initialisées pas au moment de
l'execution de IntializeComponent() donc théoriquement leur valeur ne
peut-être différente de 0.
Si tu ne veux plus voir ces propriété apparaître dans la fenêtre de
propriété et si tu ne veux plus que le générateur de code leur affecte une
valeur par défaut, ajoute cette ligne au-dessus de chacune des déclarations
de ces propriétés :
'***
<Browsable(False),
DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)> _
Public Property HorizScrollValue() As Int32
' blabla
End Property
'***
l'attribut Browsable() détermine si la propriété est exposée dans la fenêtre
de propriétés alors que l'attribut DesignerSerializationVisibility()
détermine si le générateur de code sérialise (créer l'affectation de valeur)
dans la méthode InitializeComponent()



> En Éxécutant mon application, le 'scroll' du bas n'affecte pas l'autre
> datagrid. C'est parfait, mais complexe comme programmation!!!
> Mais le 'scroll' vertical ne fonctionne pas. J'aimerais savoir comment
> appliquer le 'ScrollModes'.

Avant toute chose, j'ai remarqué une petite défaillance (on m'a dit que
j'étais puriste...) dans ma déclaration de l'enum ScrollModes, elle devrait
déclarer ainsi :
'***
<Flags()> _
Public Enum ScrollModes
NotSet = 0
Horizontal = 1
Vertical = 2
Both = ScrollModes.Horizontal Or ScrollModes.Vertical
End Enum
'***

Le ScrollModes est une énumération portant l'attribut Flag() ce qui fait de
sa valeur un "bitmask".

Tu peux lire le message suivant si tu n'est pas familière avec les bitmasks.
http://groups.google.com/groups?threadm=uwtNY921CHA.1768%40TK2MSFTNGP12


Tu peux donc déterminer laquelle des barres sera lier à l'autre grille de
cette façon :
'***
' aucune des barres n'affectera l'autre grille
LinkableDataGrid1.ScrollMode = ScrollModes.NotSet

' seule la barre vertical affectera l'autre grille
LinkableDataGrid1.ScrollMode = ScrollModes.Vertical

' seule la barre horizontal affectera l'autre grille
LinkableDataGrid1.ScrollMode = ScrollModes.Horizontal

' les deux barres affecteront l'autre grille
LinkableDataGrid1.ScrollMode = ScrollModes.Both
'***


> Autre chose que j'ai remarqué hier! Quand je 'scroll' verticalement, cela
> fonctionne très bien. Mais je n'arrive pas à pouvoir cliquer sur ma
dernière
> ligne et si j'arrive à cliquer sur la fraction de ligne que je vois, il
> bousille les coordonnées de ma ligne à cause du 'scroll' du bas qui cache
au
> 3/4 ma ligne parce que j'ai plusieurs colonnes. Mais si j'ai 3 à 4
colonnes
> par exemple, tout est correct car il n'y a pas de 'scroll' dans le bas.

Je n'arrive pas à imiter ce comportement ici.. si tu ne parvient pas à le
règler, essai de me faire un petit exemple (dans un nouveau projet) qui
démontre le problème.. Je pourrai y jeter un oeil plus facilement. Il arrive
même parfois que l'on trouve le bug en codant l'exemple ;O)


--
Cordialement
Yanick
MVP pour Visual Basic





Avatar
Zoury
> Donc si dans mon 1er datagrid, la dernière ligne est '17:00', il sera à
égalité avec le scroll horiz. du 2e datagrid. Dans le 2e datagrid, lorsque


je
baisse le scroll vert. jusqu'en bas, il remonte toujours d'une ligne vers


le
haut m'empêchant de voir et de cliquer sur la dernière ligne. Parfois
j'arrive à voir ma dernièere ligne de peine et de misère, mais les
coordonnées des lignes avec le 1er datagrid est 'bousillées' de 15


minutes.

ok. avant de chercher trop loin,
est-ce que tes 2 grids ont la exactement la même taille ?
est-ce que tes 2 grids ont la exactement le même nombres de Rows ?
c'est peut-être ça qui cause une désynchronisation


Si
je veux envoyer un bout de code, comment je fais et ça ne sera pas facile,
car mon programme approche les 200,000 lignes!!!!



tu poster un attachement avec ton message sur le forum. La taille doit être
assez petite (zip l'exemple au besoin) afin de ne pas faire pleurer nos
consoeurs et confrères qui ont une connexion internet lente.
c'est pourquoi je te proposait de nous créer une exemple qui ne ferait que
nous démontrer l'essentiel du problème. ;O)
en plus de prendre moins de place, nous (ceux qui tente de t'aider) n'avons
pas à lire et comprendre le reste du code qui est superflu et pouvons nous
concentrer que sur ton problème uniquement.

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Annie L.
Ils ont le même nombre de lignes. Le 1er datagrid a une seule colonne. Le 2e
dépend du nombre d'employés (ex.: 12 employés = 12 colonne). Je vois ma
dernière ligne du 2e datagrid. Je clique dessus et j'affiche un messagebox me
disant quelle est l'heure de ma ligne. Quand je ferme la boîte, il décale le
2e datagrid d'une ligne vers le haut ne concordant plus avec l'autre
datagrid. Si je remonte en haut avec le scroll vertical, il deviennent
corrects tous les deux. Il faudrait remonter en haut complètement après
l'affichage de la boîte de dialogue ou un form. J'ai essayé, mais en vain
(avec du code). Où bien rafraîchir les datagrids. Je pourrais t'envoyer une
image du résultat! Pour ce qui est d'un bout de code, cela va être assez
compliqué!
Je vais y travailler pour essayer de te l'envoyer demain. Car après demain,
je tombe en vacances pour 2 semaines!!!!

P.S. Comment fait-on pour poster un attachement, je n'ai jamais fais cela
dans ce forum!!!


"Zoury" wrote:

> Donc si dans mon 1er datagrid, la dernière ligne est '17:00', il sera à
> égalité avec le scroll horiz. du 2e datagrid. Dans le 2e datagrid, lorsque
je
> baisse le scroll vert. jusqu'en bas, il remonte toujours d'une ligne vers
le
> haut m'empêchant de voir et de cliquer sur la dernière ligne. Parfois
> j'arrive à voir ma dernièere ligne de peine et de misère, mais les
> coordonnées des lignes avec le 1er datagrid est 'bousillées' de 15
minutes.

ok. avant de chercher trop loin,
est-ce que tes 2 grids ont la exactement la même taille ?
est-ce que tes 2 grids ont la exactement le même nombres de Rows ?
c'est peut-être ça qui cause une désynchronisation


> Si
> je veux envoyer un bout de code, comment je fais et ça ne sera pas facile,
> car mon programme approche les 200,000 lignes!!!!

tu poster un attachement avec ton message sur le forum. La taille doit être
assez petite (zip l'exemple au besoin) afin de ne pas faire pleurer nos
consoeurs et confrères qui ont une connexion internet lente.
c'est pourquoi je te proposait de nous créer une exemple qui ne ferait que
nous démontrer l'essentiel du problème. ;O)
en plus de prendre moins de place, nous (ceux qui tente de t'aider) n'avons
pas à lire et comprendre le reste du code qui est superflu et pouvons nous
concentrer que sur ton problème uniquement.

--
Cordialement
Yanick
MVP pour Visual Basic





Avatar
Zoury
> Je vais y travailler pour essayer de te l'envoyer demain. Car après


demain,
je tombe en vacances pour 2 semaines!!!!



dac.
moi aussi je tombe en vacances (ENFIN!!) :O)
j'serai là 2 ou 3 jours seulement durant les fêtes (et je n'ai pas d'ordi
chez moi pour suivre le forum..)



P.S. Comment fait-on pour poster un attachement, je n'ai jamais fais cela
dans ce forum!!!



ça dépend du programme que tu emplois pour lire/poster sur le forum..
ici j'emploi Outlook Express pour consulter les groupes de discussion, alors
me suffit de glisser/déplacer (ou encore cliquer sur Joindre) mes
attachements dans mon message avant de le poster (comme pour un courriel).

--
Cordialement
Yanick
MVP pour Visual Basic
Avatar
Annie L.
J'ai ton adresse de courriel, puis-je te le poster de cette façon?
J'ai mis les différentes procédures pour remplir mes datagrid dans un
fichier texte. peut-être que cela va t'aider maintenant à mieux comprendre.
Je peux l'envoyer immédiatement, je vais me servir d'un autre poste au
bureau pour l'envoyer!

"Zoury" wrote:

> Je vais y travailler pour essayer de te l'envoyer demain. Car après
demain,
> je tombe en vacances pour 2 semaines!!!!

dac.
moi aussi je tombe en vacances (ENFIN!!) :O)
j'serai là 2 ou 3 jours seulement durant les fêtes (et je n'ai pas d'ordi
chez moi pour suivre le forum..)



> P.S. Comment fait-on pour poster un attachement, je n'ai jamais fais cela
> dans ce forum!!!

ça dépend du programme que tu emplois pour lire/poster sur le forum..
ici j'emploi Outlook Express pour consulter les groupes de discussion, alors
me suffit de glisser/déplacer (ou encore cliquer sur Joindre) mes
attachements dans mon message avant de le poster (comme pour un courriel).

--
Cordialement
Yanick
MVP pour Visual Basic





Avatar
Zoury
Salut Annie!

J'ai reçu ton mail hier. J'ai compris ton bug et ferai quelques tests afin
de voir ce qu'on peut faire pour contrer ce problème, mais je n'aurai
peut-être pas de solution d'ici deux semaines étant données les vacances qui
arrive.. :OD

en espérant que çe ne te bloque pas trop dans ton développement. :O/

--
Cordialement
Yanick
MVP pour Visual Basic

"Annie L." a écrit dans le message de
news:
J'ai ton adresse de courriel, puis-je te le poster de cette façon?
J'ai mis les différentes procédures pour remplir mes datagrid dans un
fichier texte. peut-être que cela va t'aider maintenant à mieux


comprendre.
Je peux l'envoyer immédiatement, je vais me servir d'un autre poste au
bureau pour l'envoyer!

"Zoury" wrote:

> > Je vais y travailler pour essayer de te l'envoyer demain. Car après
> demain,
> > je tombe en vacances pour 2 semaines!!!!
>
> dac.
> moi aussi je tombe en vacances (ENFIN!!) :O)
> j'serai là 2 ou 3 jours seulement durant les fêtes (et je n'ai pas


d'ordi
> chez moi pour suivre le forum..)
>
>
>
> > P.S. Comment fait-on pour poster un attachement, je n'ai jamais fais


cela
> > dans ce forum!!!
>
> ça dépend du programme que tu emplois pour lire/poster sur le forum..
> ici j'emploi Outlook Express pour consulter les groupes de discussion,


alors
> me suffit de glisser/déplacer (ou encore cliquer sur Joindre) mes
> attachements dans mon message avant de le poster (comme pour un


courriel).
>
> --
> Cordialement
> Yanick
> MVP pour Visual Basic
>
>
>


Avatar
Annie L.
C'est parfait, je pars pour 2 semaines moi aussi!
Ça ne me bloquera pas trop dans mon développement car j'ai bien d'autres
choses à développer!

Est-ce que vous avez vu le 'bogue' qui se passe!
Je sais qu'on va trouver une solution!

Je vous souhaite de Joyeuses Fêtes et une Heureuse Année 2005!
On se re-communique dans 2 semaines!
Vous pourrez utiliser l'adresse de courriel de retour pour communiquer avec
moi au bureau.
Merci beaucoup pour votre aide! Annie

"Zoury" wrote:

Salut Annie!

J'ai reçu ton mail hier. J'ai compris ton bug et ferai quelques tests afin
de voir ce qu'on peut faire pour contrer ce problème, mais je n'aurai
peut-être pas de solution d'ici deux semaines étant données les vacances qui
arrive.. :OD

en espérant que çe ne te bloque pas trop dans ton développement. :O/

--
Cordialement
Yanick
MVP pour Visual Basic

"Annie L." a écrit dans le message de
news:
> J'ai ton adresse de courriel, puis-je te le poster de cette façon?
> J'ai mis les différentes procédures pour remplir mes datagrid dans un
> fichier texte. peut-être que cela va t'aider maintenant à mieux
comprendre.
> Je peux l'envoyer immédiatement, je vais me servir d'un autre poste au
> bureau pour l'envoyer!
>
> "Zoury" wrote:
>
> > > Je vais y travailler pour essayer de te l'envoyer demain. Car après
> > demain,
> > > je tombe en vacances pour 2 semaines!!!!
> >
> > dac.
> > moi aussi je tombe en vacances (ENFIN!!) :O)
> > j'serai là 2 ou 3 jours seulement durant les fêtes (et je n'ai pas
d'ordi
> > chez moi pour suivre le forum..)
> >
> >
> >
> > > P.S. Comment fait-on pour poster un attachement, je n'ai jamais fais
cela
> > > dans ce forum!!!
> >
> > ça dépend du programme que tu emplois pour lire/poster sur le forum..
> > ici j'emploi Outlook Express pour consulter les groupes de discussion,
alors
> > me suffit de glisser/déplacer (ou encore cliquer sur Joindre) mes
> > attachements dans mon message avant de le poster (comme pour un
courriel).
> >
> > --
> > Cordialement
> > Yanick
> > MVP pour Visual Basic
> >
> >
> >





1 2