Cita:
Empezado por ctronx
...como podria Copiar el contenido de un dbgrid y pegarlo en otro lado como por ejemplo excel, podria hacerse de la forma siguiente??
1.-seleccionar las filas del dbgrid (todo el dbgrid)
2.-copiarlas (como edicion copiar ó control-c)
3.-en Excel pegarlas (como edicion pegar ó control-v)
|
Bueno para poder "pegar" el contenido del DBGrid en Excel, debes "mardar" al portapapeles un string con formato determinado; Para separar las líneas un CRLF y para los campos dentro de una fila un TAB. Con eso conseguirás que en Excel se "pegue" correctamente.
Se trata de recorrer las filas seleccionadas (Bookmarks) y crear un string con los datos.
En el botón de copiar coloca el siguiente código:
Código Delphi
[-]
var
i, j: Integer;
s: string;
begin
if (DBGrid1.SelectedRows.Count > 0) then begin
with DBGrid1.DataSource.DataSet do
for i:=0 to (DBGrid1.SelectedRows.Count-1) do begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items[i]));
for j := 0 to FieldCount-1 do begin
if (j>0) then begin
s:=s + #9;
end;
s:=s+Fields[j].AsString;
end;
s:=s + #13#10;
end;
end;
Clipboard.AsText := s;
Añade a la unit la unit
Clipbrd;
El DBGrid debe tener las opciones
dbRowSelect y
dgMultiSelect activadas.