Zurdo Soft es:
Jorge E. Ferreyra
Periodistas Argentinos 234 - (5900)Villa María
Tel.: 0353 453 8034 - 0353 155 66 7350
Córdoba - Argentina

DbGrid a Texto

Buscando imprimir directo a puerto, sin driver, necesitamos convertir los datos de una DbGrid
a texto para enviarlo a la impresora.
Aqui tenemos una tentativa de rutina que les permita hacerlo y tambien exportarlo a CSV para
abrirlo con Excel.
Pongan en un formulario una DbGrid, conectenla a una base,
un Memo y un botón.

 

procedure DBGridSelectAll(AGrid:TDBGrid);
begin  //de http://delphi.about.com/cs/adptips2004/a/bltip0304_5.htm
   AGrid.SelectedRows.Clear;
   with AGrid.DataSource.DataSet do begin
     DisableControls;
     First;
     try
       while not EOF do begin
         AGrid.SelectedRows.CurrentRowSelected:=True;
         Next;
       end;
     finally
       EnableControls;
     end;
   end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  i, j: Integer;
  s: string;
  Cads:TStrings;
  Anchos:array of Byte;
begin
  SetLength(Anchos,DBGrid1.Columns.Count);
  Cads:=TStringList.Create;
  DBGridSelectAll(DBGrid1);
  j:=Dbgrid1.Canvas.TextWidth('0');
  for i:=0 to DBGrid1.Columns.Count-1 do begin
    Anchos[i]:=(DBGrid1.Columns.Items[i].Width div j)+2;
    if (i>0) then s:=s+';';
    s:=s+DBGrid1.Columns.Items[i].Title.Caption+StringOfChar(' ',Anchos[i]-length(DBGrid1.Columns.Items[i].Title.Caption));
  end;
  Cads.Add(s);
  //s:=StringOfChar('-',Length(s));
  //Cads.Add(s);
  s:= '';
  if DBGrid1.SelectedRows.Count>0 then
    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 s:=s+';';
          if Fields[j].DataType=ftDateTime then
            s:=s+DateToStr(Fields[j].AsDateTime)+
                 StringOfChar(' ',Anchos[j]-Length(DateToStr(Fields[j].AsDateTime)))
          else
            s:=s+Fields[j].AsString+StringOfChar(' ',Anchos[j]-Length(Fields[j].AsString));
        end;
        Cads.Add(s);
        s:= '';
      end;
  DBGrid1.SelectedRows.Clear;
  Memo1.Clear; Memo1.Font.Name:='Courier';
  Memo1.Lines:=Cads;
  Cads.SaveToFile('DbGrid.csv');
end;

Inicio [Internet] [Electrónica] [Programacion]

www.000webhost.com