Ver Mensaje Individual
  #4  
Antiguo 21-01-2008
Avatar de marcoszorrilla
marcoszorrilla marcoszorrilla is offline
Capo
 
Registrado: may 2003
Ubicación: Cantabria - España
Posts: 11.221
Reputación: 10
marcoszorrilla Va por buen camino
Código Delphi [-]
procedure SetPaperSize (intAlto,intAncho : Integer);
{aqui se define el tamaño del papel}
var
   ADevice, ADriver, APort : array [0..255] of Char;
   ADeviceMode : THandle;
   DevMode : PDevMode;
begin
   with Printer do
      begin
         GetPrinter (ADevice, ADriver, APort, ADeviceMode);
         SetPrinter (ADevice, ADriver, APort, 0);
         GetPrinter (ADevice, ADriver, APort, ADeviceMode);
         DevMode := GlobalLock(ADeviceMode);
         if not Assigned(DevMode) then
            ShowMessage('Ha entrado en -> if not Assigned(DevMode) ...')
         else
            begin
               with DevMode^ do
                  begin
                     dmPaperSize:= DMPAPER_User;
                     dmPaperLength := intAlto;
                     dmPaperWidth:= intAncho;
                     dmFields := dmFields or DM_PAPERSIZE or DM_PAPERLength or DM_PAPERWidth;
                  end;
               GlobalUnLock(ADeviceMode);
               SetPrinter(ADevice, ADriver, APort, ADeviceMode);
           end;
      end;
end;

procedure Imprimir_Alb_Fact(n:Integer);
var
Imprime_Pie:Boolean;
Imprimir:Boolean;
begin
Imprime_Pie:=False;
Imprimir   :=True;
//1 Albarán
//2 Factura
DmPan.Cli.IndexName:='';

SetPaperSize(DmPan.ImpresoraLargoPapel.Value, DmPan.ImpresoraAnchoPapel.Value);
Printer.Canvas.Font.Name:=DmPan.ImpresoraLetra.Value;
Printer.Canvas.Font.Size:=DmPan.ImpresoraTallaLetra.Value;

Case n of
1:begin
    if DmPan.AlbaContado.Value = True then
    Imprime_Pie:=True
    else
    Imprime_Pie:=False;

    if DmPan.UsuNivel.Value = '1' then
    begin
      if Application.MessageBox('¿Seguro que desea imprimir el Albarán?','Atención',mb_OkCancel +
      mb_IconQuestion)= idOk then
      Imprimir:=True
      else
      Imprimir:=False;
    end;

  end;
2:Imprime_Pie:=True;
end;

  if imprimir = True then
  begin

   With Printer.canvas do
   begin
    Printer.BeginDoc;

        Imprimir_Cabecera(n);
        Imprimir_Detalle(n);

        if Imprime_Pie = True then
        begin
        Imprimir_Pie(n);
        Imprimir_Total_Final(n);
        end;

    Printer.EndDoc;
   end;
  end;
end;

Con este ejemplo ves como puedes mandarle el tamaño del ticket a la impresora.

Veo que de 90 pasas a 300, no estará esa situación de línea fuera del ticket y por eso no se ve.

Las coordenadas normalmente sumándole 30 logras el cambio de fila, pero de 90 pasar a 300, creo que ya estás fuera del ticket.

Un Saludo.
__________________
Guía de Estilo de los Foros
Cita:
- Ça c'est la caisse. Le mouton que tu veux est dedans.
Responder Con Cita