Buscar

Procedimento para atualizar os dados da GRID sem perder a posicao ROW

Código

{As vezes precisamos atualizar os registros da grid automaticamente mas precisamos deixar a GRID da mesma forma que estava antes da atualização. Com a ajuda do Rafael Flores implementei o seguinte procedimento.

Crie a classe THackDBGrid quye será derivada do tipo da grid que você vai utilizar. No meu caso foi a grid do infopower.

Neste procedimento abaixo, não importa onde o ponteiro do registro e a grid estejam, eles sempre voltarão a posição anterior.
}


type
  THackDBGrid = class(TwwDBGrid)
end;

type
  TForm1 = class(TForm)

  Cds_Agenda: TClientDataSet;
  Gdb_Agenda: TwwDBGrid;
  private
    { Private declarations }
  public
    { Public declarations }
  end;




procedure TForm1.Gdb_AgendaIButtonClick(Sender: TObject);
var
  rowDelta: Integer;
  row: integer;
  rowCount: Integer;
  rowCenter: Integer;
  recNo: integer;
  ds : TDataSet;

begin
  inherited;
  try
    // Armazena a posição antes do refresh
    Cds_Agenda.DisableControls;
    ds := THackDBGrid(Gdb_Agenda).DataSource.DataSet;
    //rowDelta := -1 + THackDBGrid(Gdb_Agenda).Row;
    rowDelta := THackDBGrid(Gdb_Agenda).Row -1;
    rowCount := THackDBGrid(Gdb_Agenda).RowCount -1;
    rowCenter := rowCount div 2;
    row := ds.RecNo;

    // Atualiza os dados da agenda
    PreencheAgenda;

    with ds do
    begin
      RecNo := row;
      if rowDelta < rowCenter then
      begin
        rowDelta := rowCount - (rowDelta+1);
        MoveBy(rowDelta);
        MoveBy(-rowDelta);
      end
      else
      begin
        MoveBy(-rowDelta) ;
        MoveBy(rowDelta) ;
      end;
    end;

    Gdb_Agenda.SetFocus;

  finally
    Cds_Agenda.EnableControls;
  end;
end;
 

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Object pascal
Adicionada dia: 07/01/10
Por: Cleyferson Dorileo
Visualizada: 9270 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009