Ver Mensaje Individual
  #6  
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 escapes

Debe haber mejor manera,yo lo solucione de esta forma

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;
Responder Con Cita