Probleme avec la scrollbar d'une DBGRID

Fermé
Steeve - 15 juin 2004 à 14:52
 steeve - 18 juin 2004 à 10:14
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.

1 réponse

Amoureux3 Messages postés 940 Date d'inscription vendredi 9 avril 2004 Statut Membre Dernière intervention 5 mai 2007 9
18 juin 2004 à 01:39
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.
0
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.
0