Ver Mensaje Individual
  #4  
Antiguo 21-09-2010
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
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
Hola JXJ.

Me resultó interesante hacerlo, aunque dudo de su utilidad...

Lo que hice fué pasar las columnas del DBGrid a tantos edits como tenga la misma, cuando se hace un click sobre una celda.
Con pocas modificaciónes y del mismo modo; podrías pasar las columnas a TStrings, no tán vistoso, pero más simple y efectivo
si sólo buscas pasar los valores a variables.

Pero bueno, fijate si te sirve o al menos te dá una idea de como hacerlo:
Código Delphi [-]
...
type
  TForm1 = class(TForm)
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    IBDataSet1: TIBDataSet;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    procedure FormCreate(Sender: TObject);
    procedure DBGrid1CellClick(Column: TColumn);
  private
  public
  end;

var
  Form1: TForm1;

implementation {$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  i,c: Integer;
begin
  IBDataSet1.Open;   
  c:= DBGrid1.Top + DBGrid1.Height + 8;    // Posición del 1er Edit
  for i:= 0 to DBGrid1.Columns.Count -1 do // Tantos Edits como columnas mostradas
  begin
   with TEdit.Create(Self) do        // Crear Edits
   begin
     Name:= 'Edit'+IntToStr(i);      // Edit1, Edit2,... EditN
     Text:= '';
     Left:= 8;
     Top:=  c;
     Parent:= Self;                  // Mostrarlo
     Inc(c,30);                      // Supongo Heigth 25
   end;
  end;
end;

procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
  i: Integer;
begin
  for i:= 0 to DBGrid1.Columns.Count -1 do
   with TEdit(FindComponent('Edit'+IntToStr(i))) do
   begin
     Text:= DBGrid1.Columns[i].Field.AsString; // Poner dato en Edit
     Width:= Canvas.TextWidth(DBGrid1.Columns[i].Field.AsString+'0'); // Ajustar ancho Edit 
   end;
end;

Nota: No tiene en cuenta el Height del Form respecto a la cantidad de campos, es decir que si tenés 50 campos, vas a tener que modificar algo, o comprar un monitor mas alto...


Saludos.

Última edición por ecfisa fecha: 21-09-2010 a las 08:10:06.
Responder Con Cita