Bonjour les gens,

Toujours dans mon impression de tickets sous FMX ...
J'ai résolu la majeure partie des problèmes rencontrés mais je coince sur un dernier : la hauteur du papier.
Bêtement, je pensais que la hauteur était "infinie" vue la longueur du rouleau ....
Mais, comme j'utilise le canvas pour imprimer, j'ai une largeur de 512 que je maitrise et une hauteur de .... 2104
Problème, si mon ticket comporte beaucoup de lignes, j'en ai qu'un morceau à l'arrivée.
Etant pour l'instant sous Windows uniquement, j'ai tenté le code suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
  procedure SetupPrinter(PaperWidth, PaperLength, PaperSize: Integer);
  var
    ADevice, ADriver, APort: array [0 .. 255] of char;
    DevMode: THandle;
    PtrDevMode: PDevMode;
    PDev: TPrinterDevice;
  begin
    PDev := Printer.ActivePrinter;
    TPrinterWin(Printer).GetPrinter(ADevice, ADriver, APort, DevMode);
    if DevMode <> 0 then
    begin
      PtrDevMode := GlobalLock(DevMode);
      with PtrDevMode^ do
      begin
        //strcopy(dmDevicename, ADevice);
        StrCopy(dmDevicename, ADevice);
        dmFields      := dmFields or DM_PAPERWIDTH or DM_PAPERLENGTH or DM_PAPERSIZE;
        dmPaperWidth  := PaperWidth;
        dmPaperLength := PaperLength;
        dmPaperSize   := PaperSize; // for custom
      end;
      GlobalUnlock(DevMode);
      Printer.ActivePrinter := PDev;
    end;
  end;
Mais ça ne fonctionne pas . Mon canvas a toujours la même hauteur.


Z'auriez une idée pour changer ça ?

Précision: Je ne peux pas imprimer en mode texte parce que je dois imprime aussi des code-barres et des logos.