A prendre avec précaution :
Je fais une modification dans mon DBGrid par une requete quelconque. Le DBGrid ne se reinitialisera pas, je fais :
Le probleme est que si une ligne est sélectionnée par l'utilisateur, automatiquement ca sera la premiere ligne qui va etre sélectionnée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ADOTable.Active:=false; ADOTable.Active:=true;
Voici ce que j'ai trouvé sur le net et qui marche :
Le DBGrid va se reinitialisé et se positionnera de nouveau sur la ligne sélectionnée :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, .............. ; type THackDBGrid = class (TDBGrid); // A RAJOUTER type TForm1 = class(TForm) .................. procedure TForm1 .Button1Click(Sender: TObject); var row, rowDelta, recNo:Integer; ds:TDataSet; begin ds := THackDBGrid(DBGrid1).DataSource.DataSet; rowDelta := -1 + THackDBGrid(DBGrid1).Row; row := ds.RecNo; ds.Refresh; with ds do begin DisableControls; RecNo := row; MoveBy(-rowDelta) ; MoveBy(rowDelta) ; EnableControls; end ; end;
Partager