Einzelnen Beitrag anzeigen

Benutzerbild von rapante
rapante

Registriert seit: 3. Jun 2009
Ort: OPR
171 Beiträge
 
Delphi XE2 Professional
 
#10

AW: DBGrid Right Click

  Alt 9. Okt 2010, 13:17
Du musst dir die aktuelle Zeile merken und hinterher wieder setzen.

Ich habe sowas mal gebaut gehabt um bei einem Refresh über einen Timer die Ansicht beizubehalten:
Delphi-Quellcode:
procedure TMyForm.RefreshTimerTimer(Sender: TObject);
var
   rowDelta: integer;
   row: integer;
   recNo: integer;
   TempScrollInfo: SCROLLINFO;
begin

 // Position des aktuellen Datensatzes (vertical)
 rowDelta := -1 + MyDBGrid.Row;
 row := MyDBGrid.DataSource.DataSet.RecNo;

 // Position der horizontalen Scrollbar
 TempScrollInfo.cbSize := SizeOf(SCROLLINFO);
 TempScrollInfo.fMask := SIF_POS;
 GetScrollInfo(MyDBGrid.Handle, SB_HORZ, TempScrollInfo );

 MyDBGrid.DataSource.DataSet.DisableControls;
 try
   MyZQuery.Refresh;
   
   // Die Ansicht wiederherstellen (vertical)
   with MyDBGrid.DataSource.DataSet do
   begin
     RecNo := row;
     MoveBy(-rowDelta) ;
     MoveBy(rowDelta) ;
   end;
 finally
   MyDBGrid.DataSource.DataSet.EnableControls;
   //Die horizontale Scrollposition wiederherstellen
   SetScrollInfo(MyDBGrid.Handle, SB_HORZ, TempScrollInfo, true);
 end;
end;
  Mit Zitat antworten Zitat