Probleme avec la scrollbar d'une DBGRID
Steeve
-
steeve -
steeve -
Bonjour a tous
Je souhaite vous demander un votre aide, afin de résoudre un problème auquel je suis confronter en DELPHI 6
J'ai une DBGrid lié a une table et lorsque je clicque dessus je fais apparaitre une form pour faire des modifications sur la ligne sélectionnée.
Par contre, je voudrai revenir sur la ligne dès que les modifications son faites.
Pour cela je récupère avec un pointeur la ligne séléctionnée dans la table
PositionGrille := DM.IBQuery2.getbookmark;
et aprés les modification je reviens sur la ligne avec un
DM.IBQuery2.GotoBookmark(PositionGrille);
Cependant la ligne est mise au milieu de la grille (à lécran), or je souhaiterai garder la position initiale.C'est à dire que si la ligne est en troisiéme à l'ecran au départ, elle reste en troisieme et non qu'elle parte au milieu.
Si quelqu'un a une solution, ca serai génial car cela fait un moment que je suis sur ce problème et personne n a encore pu m aider
Merci d avance de votre aide.
Je souhaite vous demander un votre aide, afin de résoudre un problème auquel je suis confronter en DELPHI 6
J'ai une DBGrid lié a une table et lorsque je clicque dessus je fais apparaitre une form pour faire des modifications sur la ligne sélectionnée.
Par contre, je voudrai revenir sur la ligne dès que les modifications son faites.
Pour cela je récupère avec un pointeur la ligne séléctionnée dans la table
PositionGrille := DM.IBQuery2.getbookmark;
et aprés les modification je reviens sur la ligne avec un
DM.IBQuery2.GotoBookmark(PositionGrille);
Cependant la ligne est mise au milieu de la grille (à lécran), or je souhaiterai garder la position initiale.C'est à dire que si la ligne est en troisiéme à l'ecran au départ, elle reste en troisieme et non qu'elle parte au milieu.
Si quelqu'un a une solution, ca serai génial car cela fait un moment que je suis sur ce problème et personne n a encore pu m aider
Merci d avance de votre aide.
1 réponse
-
Procedure TForm1.DBGrid1onClick(Sender : TSender); Var n : Integer; Begin . . // before call n := Table1.RecNo; // préserver le n° de l'enregistrement active Form2.ShowModal; // after call Table1.Refresh; // rafraichissement de l'enregistrement modifié Table1.First; // position sur le 1er enregistrement Table1.MoveBy(N); // glisser jusqu'a l'enregistrement initial Activecontrol := DBGrid1; End;
* en cet exemple j'utilise aucune fonction dans le genre de :
getbookmark; ou GotoBookmark;
* si les modifications sont des ajouts (Append), il est necessairement utile de préserver l'index au lieu du numéro de l'enregistrement qui a recu le 'Click', car cet enregistrement peut décaler a cause de l'ajout.
* elle est un petit peut classique cette astuce..
bonne chance.-
salut je te remercie de ton aide, mais cela ne résoud rien. Dorénavant aprés mon enregistrement je retrouve ma ligne en bas de ma grille. Mais je n'ai pas pu faire le refresh car cela me cause une erreur : Delphi me dit que je ne peut pas faire cela (durant l'execution) . Mais cela viens peut etre du fait que pour modifier une ligne je ne me sert pas de append mais je fais un update et ensuite je signale que la modif est définitive avec IBTransaction1.commit. De plus je ne peut pas trop modifier cela car c'est un programme d'une société qui utilise toujours cette méthode je doit adapter le programme en faisant un minimum de modif.
je te remercie d'avance tout ce qui ont une autre idée.
-