Ver Mensaje Individual
  #1  
Antiguo 05-08-2006
neasoporte neasoporte is offline
Registrado
 
Registrado: nov 2005
Ubicación: Corrientes Argentina
Posts: 7
Reputación: 0
neasoporte Va por buen camino
enviar codigo de escape embebido en qreport

Yo lo hago de esta manera,pego labeles en la linea a destacar en impresion.
alli al momento de imprimir el report lo exporto como archivo de texto,luego
lo imprimo desde el dos...

Código Delphi [-]
procedure TFprimostrador.btnpresuClick(Sender: TObject);
var
aexport:tqrasciiexportfilter;
chkdos:bool;
begin
imprimeok:='S';
chkdos:=fcfgprinter.chkprndos.Checked;
case chkdos of
 False:begin
  pnlopcprn.Visible:=false;
   if imprimeok='S' then
    begin
      fprnpresu.exptot.Expression:='sum(qprev.subtotal)';
     fprnpresu.qrppresu.Print;
    end else
      MessageDlg('Problemas de Comunicacion Con Impresora..Verifique', mtInformation,[mbOk], 0);
      gridprev.SetFocus;
 end else
 begin
  pnlopcprn.Visible:=false;
   if imprimeok='S' then
    begin
      try
       fprnpresu2.exptot.Expression:='sum(qprev.subtotal)';
       fprnpresu2.k1.Caption:=chr(14);
       fprnpresu2.k2.Caption:=chr(20);
       fprnpresu2.k3.Caption:=chr(15);
       fprnpresu2.k4.Caption:=chr(14);
       fprnpresu2.k5.Caption:=chr(20);
       aexport:=tqrasciiexportfilter.create('c:\preventa\presu.txt');
       fprnpresu2.qrppresu2.ExportToFilter(aexport);
       ShellExecute(handle,'open','Command.com','Command.com /c type c:\preventa\presu.txt>lpt1','',sw_normal);
       aexport.Finish;
      finally
        if not printer.Printing then
          begin
           saltos:=fcfgprinter.edtsaltos.IntValue;
           paracorte;
          end;
      end;
    end else
      MessageDlg('Problemas de Comunicacion Con Impresora..Verifique', mtInformation,[mbOk], 0);
      gridprev.SetFocus;
  end;
end;
end;

procedure TFprimostrador.mandocode(s: string);
var
 Handle, hDeviceMode: THandle;
 N: DWORD;
 DocInfo1: TDocInfo1;
 Device, Driver, Port: array[0..255] of char;
 PrinterName: string;
 buf:array[0..255] of char;
 lbuf:integer;
begin
 Printer.GetPrinter(Device, Driver, Port, hDeviceMode);
 PrinterName := Format('%s', [Device]);
 if not OpenPrinter(PChar(PrinterName), Handle, nil) then
  //RaiseLastWin32Error;
  imprimeok:='N';
 try
  with DocInfo1 do
  begin
   pDocName := 'Control';
   pOutputFile := nil;
   pDataType := 'RAW';
  end;
  StartDocPrinter(Handle, 1, @DocInfo1);
  try
   lbuf:=length(s);
   copymemory(@buf,Pchar(s),lbuf);
   if not WritePrinter(Handle, @buf, lbuf, N) then
    //RaiseLastWin32Error;
    imprimeok:='N';
  finally
   EndDocPrinter(Handle);
  end;
 finally
  ClosePrinter(Handle);
 end;
end;
 
procedure TFprimostrador.paracorte;
var
inisalto:integer;
begin
  for inisalto:=1 to saltos do
   begin
   s:=#27+#10;
   mandocode(s);
   end;
end;

Última edición por dec fecha: 05-08-2006 a las 07:56:22.
Responder Con Cita