Impressão

Delphi

03/11/2004

tenho o seguinte problema.

Gero um spool de impressão através do delphi que ira imprimir um boleto bancário, sem quick report nem outro gerador de relatorios, até ai tudo bem, só que para ele funcionar devo colocar o papel nas propriedades da impressora como personalizado, continua tudo ok até aki. No 98 funciona que é uma beleza mas no xp não tem papel personalizado nas propriedades de impressora, somente A4, A3, A5, Carta....etc... Entao também descobri que tem como criar um tipo de papel entrando em iniciar / configurações / impressoras - dai vai no menu arquivo / Propriedades do Servidor e se cria um papel do tamanho que eu quero, só que eu seto tudo direito o novo tipo q defini e mando imprimir o doc ele ao terminar pula a folha como se fosse um a4, alguem sabe como resolver isto.

A função para alterar o tamanho da página vai abaixo.

procedure AlteraPagina(Comprimento, Larg:Integer);
var
   Device, Driver, Port : array[0..255] of char;
   hDMode : THandle;
   PDMode : PDEVMODE;
   Inf : array[0..309] of char;
   Impres : String;
   Len,Tam : Integer;
   Reg : TRegistry;
begin
   Printer.GetPrinter(Device, Driver, Port, hDMode);
   If hDMode <> 0 then begin
      pDMode := GlobalLock(hDMode);
      If pDMode <> nil then begin
         Impres:=StrPas(pDMode^.dmDeviceName);
         Impres:=´\System\CurrentControlSet\Control\Print\Printers\´+Impres;
         Reg := TRegistry.Create;
         Reg.RootKey := HKEY_LOCAL_MACHINE;
         Reg.OpenKeyReadOnly(Impres);
         Len:=Reg.ReadBinaryData(´Default DevMode´, Inf, Tam);

//ShowMessage(IntToStr(pDMode^.dmOrientation)); 1 = Retrato; 2 = Paisagem

         pDMode^.dmPaperSize := DMPAPER_USER;
         {if Inf[228]=2 then
            Comprimento:=Trunc((Comprimento/2.54)+0.49);}
         pDMode^.dmPaperLength := Comprimento;
//         pDMode^.dmPaperWidth  := 2540;
         pDMode^.dmPaperWidth:= Larg;
         pDMode^.dmFields := pDMode^.dmFields or DM_PAPERSIZE;

         GlobalUnlock(hDMode);
         Reg.CloseKey;
         Reg.Free;
      end;
   end;
end;



Lucianols

Lucianols

Curtidas 0
POSTAR