Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Impresión
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #3  
Antiguo 25-08-2004
luiguiray luiguiray is offline
Registrado
 
Registrado: ago 2004
Posts: 4
Poder: 0
luiguiray Va por buen camino
Gracias, no sabia de la etiqueta, soy nuevo en este foro, pero procurare hacerlo...
bueno, la cosa aqui es que efectivamente al hacer el EndDoc se finaliza el documento. En el resto de la impresión no utilizo el objeto Printer, anexo al final del post parte de las funciones para imprimir el detalle del ticket.

Digamos que lo unico que necesito es que una vez finalizado el documento (finalización del documento llamo únicamente a la terminación de la impresión del logo) es que no avance, o no recorra el papel, para el propósito de que quede contínuo el resto del ticket...
Trataré de imaginar que el ticket está de la siguiente manera...
(Oops, en el preview del post me di cuenta q no sale el ticket como lo dibuje.. me borro los espacios en blanco, tralmente no estaba tan feo )

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
| |
| Go4Value |
| |
| |
| | <--- Este es el espacio que me
| | deja después del EndDoc
| |
| |
| RAZON SOCIAL | <--- Aquí ya empiezo a imprimir
| ... | con la función que anexo
| ... |
| |
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Y digamos que quiero que me quede mas o menos así...

'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
| |
| Go4Value |
| RAZON SOCIAL |
| ... |
| ... |
| |
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

NOTA : Lo de la negrita es la letra que voy a poner de tamaño GRANDE.
Agrego que no puedo imprimir completamente el ticket con el Canvas por cuestiones ya de mantenimiento del proyecto.

Me gustaría saber si es posible hacerlo de la manera que planteo o si hay otra alternativa...

* Código anexo...

Código Delphi [-]
//función para inicialización de impresión
procedure StartPrint(PrtName, DocName, ToFile: string; Copies: integer);
var
  pdi: PDocInfo1;
  pd: TPrinterDefaults;
begin
  DevMode.dmCopies:=Copies;
  DevMode.dmFields:=DM_COPIES;
  pd.pDatatype:='RAW';
  pd.pDevMode:=@DevMode;
  pd.DesiredAccess:=PRINTER_ACCESS_USE;
  if Win32Check(OpenPrinter(PChar(PrtName),ph,@pd)) then
     begin
       new(pdi);
       with pdi^ do
            begin
              pDocName:=PChar(DocName);
              if ToFile='' then
                 pOutputFile:=nil
              else
                 pOutputFile:=PChar(ToFile);
              pDatatype:='RAW';
            end;
       PrJob:=StartDocPrinter(ph,1,pdi);
       if PrJob=0 then
          Win32Check(false);
     end;
end;
 
//Funciones de la misma librería
function ReplaceStr(const S, Srch, Replace: string): string;
var
  I: Integer;
  Source: string;
begin
  Source := S;
  Result := '';
  repeat
    I := Pos(Srch, Source);
    if I > 0 then begin
      Result := Result + Copy(Source, 1, I - 1) + Replace;
      Source := Copy(Source, I + Length(Srch), MaxInt);
    end
    else Result := Result + Source;
  until I <= 0;
end;
function ToDos(const AnsiStr: String):String;
begin
  SetLength(Result, Length(AnsiStr));
  if Length(Result) > 0 then
    AnsiToOem(PChar(AnsiStr), PChar(Result));

  Result:=ReplaceStr(Result,chr(253),chr(15));
end;
function ToWin(str: String):String;
begin
  if str='' then begin
    Result:='';
    System.Exit;
  end;
  OemToAnsi(PChar(str),PChar(str));
  Result:=str;
end;
 
function ToPrnFrm(FrmStr: string; const Args: array of const): boolean;
begin
  Result:=ToPrnLn(Format(FrmStr,Args));
end;
 
function ToPrnFrmC(FrmStr: string; const Args: array of const): boolean;
begin
  Result:=ToPrnLn(ToDos(Format(FrmStr,Args)));
end;
 
function ToPrnLn(S: string): boolean;
begin Result:=ToPrn(S+#13#10); end;
 
function ToPrn(S: string): boolean;
var cp: dword;
begin
  Win32Check(WritePrinter(ph,PChar(S),length(S),cp));
  Result:=true;
end;
 
procedure EndPrint;
begin
  Win32Check(EndDocPrinter(ph));
end;

Aunque realmente las funciones listadas arriba no influyen en que se salte los renglones. El problema es después del EndDoc. . Obviamente no me cierro a utilizar únicamente las funciones del Canvas. Alguien sabe algo más? o que puedo hacer en este caso?

Dejo mi msn por si algún@ bondados@ desea conversar la situación...
[email protected]
Muchas Gracias...
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 04:07:05.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi