[Lazarus-es] posicionar fila en grid en determinado registro

Fredy Gonzales fredyg1965 en gmail.com
Lun Abr 26 17:53:14 CEST 2010


Te envio algo que encontre por alli de delphi y lo aplique a lazarus


type
  { TGlobal }
 // Aqui creamos la clase global THackDBGrid
 THackDBGrid = class(TDBGrid);



// Este modulo lo coloque dentro de mi datamodule, asi podia llamarlo desde 
cualquier
//formulario que use data
procedure TGlobal.Refresh_gridrow(dbgrid1: TDBGrid);
var
  rowDelta: Integer;
  row: integer;
  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;
  ds:=Nil
end;


Y lo invoco asi, cuando necesito refrescar algo


procedure Tuliquid2010.dbrwliquidaDblClick(Sender: TObject);
begin
     Application.CreateForm(Tftomaservicios, ftomaservicios);
     with ftomaservicios do
       Begin
         if(ShowModal = mrOK ) Then
           Begin
              global.Refresh_gridrow(dbrwliquida);
          end;
       end;
     FreeAndNil(ftomaservicios);
end;

Espero te sirva saludas.

Fredy Gonzales P.
Lima - Peru



----- Original Message ----- 
From: "José Antonio Cuello" <josea en artextrading.com>
To: "Spanish version of Lazarus List" 
<lazarus-es en lists.lazarus.freepascal.org>
Sent: Monday, April 26, 2010 7:44 AM
Subject: Re: [Lazarus-es] posicionar fila en grid en determinado registro


hola te envio el procedimiento que uso para refrescar los datos de un
grid, espero te sirva. Un saludo.

P.D: DBGrid1 = nombre de tu grid ( esto es por si refresca el Dataset
del grid )

procedure TMantForm.RefreshQry( Sender: TDataSet );
Var
  vBookMark: String;
  vActGrid : Boolean;
begin
  if Sender.Active then
    vBookMark := Sender.Bookmark
  else
    vBookMark := '';

  vActGrid := (Sender = DBGrid1.DataSource.DataSet);
  try
    if vActGrid then DBGrid1.BeginUpdate;
    Sender.Close;
    Sender.Open;
  finally
    if vActGrid then DBGrid1.EndUpdate(true);
  end;

  if vBookMark <> '' then
    try
      Sender.Bookmark := vBookMark;
    except
    end;
end;


El sáb, 24-04-2010 a las 11:46 -0300, Paola Bruccoleri escribió:
> Hola a todos..
> tengo un grid asociado a un tzquery.
> Supongamos que me posiciono en un registro cualquiera, y agrego unos
> datos a otra tabla. Esos datos están relacionados con los del grid.
> Obviamente necesito actualizar el grid para ver el cambio en un
> importe.
> Cuando hago el refresh, me queda seleccionado el primer registro del
> grid, y no donde yo estaba.
>
> ¿Cómo puedo hacer para quedarme en ese registro? colocando algún
> bookmark?
> muchas gracias a todos...
> chauuuuuuuuuu
>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es



_______________________________________________
Lazarus-es mailing list
Lazarus-es en lists.lazarus.freepascal.org
http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es 





More information about the Lazarus-es mailing list