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; for i:= 0 to DBGrid1.Columns.Count -1 do begin
with TEdit.Create(Self) do begin
Name:= 'Edit'+IntToStr(i); Text:= '';
Left:= 8;
Top:= c;
Parent:= Self; Inc(c,30); 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; Width:= Canvas.TextWidth(DBGrid1.Columns[i].Field.AsString+'0'); 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.