Hola Lucas.
A ver si de este modo te resulta más sencillo:
Código Delphi
[-]
...
uses Printers;
function LinesDown(ACanvas: TCanvas; const Lineas: Integer): Integer;
begin
ACanvas.TextOut(Printer.PageWidth div 15, Lineas*Printer.PageHeight div 50,'');
Result:= Lineas
end;
procedure PrintLineAt(ACanvas:TCanvas; const X: Integer; var Y: Integer;
const Str: string);
begin
ACanvas.TextOut(ACanvas.TextWidth('O')*X, Y* Printer.PageHeight div 50, Str);
Inc(Y)
end;
procedure PrintLine(ACanvas: TCanvas; const X:Integer; var Y: Integer;
const Str: string);
begin
Acanvas.TextOut(X, Y * Printer.PageHeight div 50, Str);
Inc(Y)
end;
procedure TForm1.Button1Click(Sender: TObject);
var
x, y: Integer;
nLin: Integer;
s: string;
begin
with TPrinter.Create do
try
x := Printer.PageWidth div 15;
y := Printer.PageHeight div 50;
nLin:= 1;
BeginDoc;
Canvas.Font.Name:= 'Times new Roman';
Canvas.Font.Color:= clBlack;
Canvas.Font.Height:= Printer.PageHeight div 60;
PrintLine(Canvas,(Printer.PageWidth-Canvas.TextWidth(s)) div 2, nLin, 'El titulo del documento');
nLin:= LinesDown(Canvas, 3); PrintLine(Canvas, x, nLin, 'Fecha: '+Label10.Caption+' Nº: '+ Label11.Caption);
ClientDataSet.First;
while not ClientDataSet.Eof do
begin
s:= ClientDataSet.FieldByName('Name').AsString +' '+
ClientDataSet.FieldByName('Capital').AsString;
PrintLine(Canvas,Printer.PageWidth div 15, nLin, s);
ClientDataSet.Next;
end;
PrintLineAt(Canvas, 10, nLin, 'Total: '+ Edit3.Text); PrintLine(Canvas, x, nLin,'ETIQUETA1: ' + Edit1.Text + ' ETIQUETA2: ' + Edit2.Text);
EndDoc;
finally
Free;
end;
end;
Saludos.