Ver Mensaje Individual
  #1  
Antiguo 26-11-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 38
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
[Truco] TDBGrid(Columna, Fila)

Hola.

He visto que varios han preguntado por la posibilidad de posicionarse en determinadas columnas y filas de un TDBGrid e hice un código
con algunos trucos 'sucios' para lograrlo.

No lo ví en la sección trucos así que decidí ponerlo aquí por si le sirve a alguien:
Código Delphi [-]
type
  TDBGridExt = Class(TDBGrid);
  TForm1 = class(TForm)
    ...
    DBGrid1: TDBGrid;
    ...
  private
    function DBgridColFil(ACol,AFil: integer; GE: TDBGridExt): string;
  public
  end;
...
implementation
...
function TForm1.DBgridColFil(ACol, AFil: integer; GE: TDBGridExt): string;
begin
  Result:= '';
  GE.DataSource.DataSet.MoveBy(1 - GE.Row); //  DataSet en fila 1 del DBGrid
  // Verifocar validez de ACol y AFil
  if (AFil > 0)and(ACol > 0)and(AFil < GE.RowCount)and(ACol < GE.ColCount) then
  begin
    GE.DataSource.DataSet.MoveBy(Afil-1); // Posicionarse en  AFil
    GE.Refresh;
    GE.FocusCell(ACol,AFil,True);         // Foco en la celda
    GE.SetFocus;
    Result:= GE.SelectedField.AsString;
  end
  else
    raise Exception.Create('Selección fuera de rango');
end;

Ejeplo de uso:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
begin
  Caption:= DBGridColFil(2, 3, TDBGridExt(DBGrid1));
end;

Si Algún moderador cree que vale la pena, subo el código con un ejemplo funcional donde me indiquen.

Un saludo.
Responder Con Cita