RetourForum Delphi
Nouveau compte - Se connecter - Perdu votre mot de passe?Recherche: Utilisateur - Message

Index > Forum général > impression sur une imprimante précise sur un bac précisNouveau post - Répondre
Darks
membre
866 messages
Message impression sur une imprimante précise sur un bac précis message: éditerle 23/01/09 à 16h02

salut,
je voudrai imprimer sur une imprimante qui n'est pas forcement celle par defaut et sur un bac différent selon les cas.

d'ailleur j'ai aussi le soucis de devoir lancer une impression qui ferai 3 exemplaires sur 1 bac + 1 ex sur 1 autre bac et encore 1 ex sur un 3ieme bac Sourire en biais   (oui pas cool, si seulement il imprimer tjrs en blanc)

danc ca c'est la théorie, en pratique c'est sur quickreport, dc gestion par QRPrinter je suppose.


 

code



var
    Device, Driver, Port: array[0..512] of Char;
    DevMode: THandle;
    PDM: PDeviceMode;
begin
  Printer.GetPrinter(Device, Driver, Port, DevMode);
  PDM := GlobalLock(DevMode);

  case TypImpr of
    1..4 : PDM^.dmdefaultsource := DMBIN_MIDDLE;
    5    : PDM^.dmdefaultsource := DMBIN_LOWER;
    6    : PDM^.dmdefaultsource := DMBIN_MANUAL;
    else  PDM^.dmdefaultsource := DMBIN_CASSETTE;
  end;

  Printer.SetPrinter(device, driver, port, devmode);




pour l'instant j'ai essayer ca, cela prend en compte les bon bac, sur l'imprimante par defaut, mais par contre des que j'arrive sous quickreport (apercu ou impression direct), il a repris le bac par defaut.

Je suis un peu perdu, si certain utilise des tables ou fichier pour gerer leurs param d'impressions, je suis preneur.
car le je seche Triste

JROD
membre
3852 messages
Surpris Re: impression sur une imprimante précise sur un bac précis message: éditerle 26/01/09 à 22h40

salut,

tu as regardé là ? : http://alphomega.developpez.com/imprimer/?page=page_2

Darks
membre
866 messages
Message Re: impression sur une imprimante précise sur un bac précis message: éditerle 27/01/09 à 08h52

salut, oui j'avais regarder pas mal d'ex un peu partout, et ca marche a peu pres

 

code


procedure TFM_QR_Dev.SetBac(QR : TQuickRep; Bac : word);
var
    Device, Driver, Port: array[0..512] of Char;
    DevMode: THandle;
    PDM: PDeviceMode;
begin
  // Choix Imprimante
  Printer.PrinterIndex := printer.Printers.IndexOf(NomImpr);

  // Donne les Paramètres par défaut de l'imprimante
  Printer.GetPrinter(Device, Driver, Port, DevMode);
  PDM := GlobalLock(DevMode);

  // choix bac
  case Bac of
    1  : PDM^.dmdefaultsource := DMBIN_MIDDLE;      // En Tete
    2  : PDM^.dmdefaultsource := DMBIN_LOWER;      // Bleu
    3  : PDM^.dmdefaultsource := DMBIN_MANUAL;      // Rose
    else PDM^.dmdefaultsource := DMBIN_CASSETTE;    // Blanc
  end;

  // Nombre Copie pour Entete
  if Bac = 1 then
    if TypImpr = 1 then PDM^.dmCopies := 3 else
      if TypImpr = 2 then PDM^.dmCopies := 2 else PDM^.dmCopies := 1;

  // Affectation Imprimante
  Printer.SetPrinter(device, driver, port, devmode);

{UNLOCK de l'imprimante}
  GlobalUnlock(DevMode);

  // Affectation Imprimante du QR
  with QR.PrinterSettings do
  begin
    if PrinterIndex <> printer.printerIndex then PrinterIndex := printer.printerIndex;
    UseCustomBinCode := true;
    case Bac of
      1  : CustomBinCode := DMBIN_MIDDLE;        // En Tête A4
      2  : CustomBinCode := DMBIN_LOWER;        // Bleu    A4
      3  : CustomBinCode := DMBIN_MANUAL;        // Rose    A4
      else CustomBinCode := DMBIN_CASSETTE;      // Blanc  A4
    end;
  end;

  // juste pour verifier
//  QR.QRPrinter.PrintSetup;
end;



en fait ca marche meme parfaitement, mon nouveau soucis, est que je voudrai pouvoir imprimer sur papier entete et ensuite sur un rose (bac different) en lancant la meme impression, mais à priori à la fin de la procedure Quickrep.print; il libére un objet necessaire, ce qui fait que si je met dans le afterprint, l'instruction QuickRep.print;, il me mets une erreur.


dc en bref, comment reimprimer un etat aussitot ?

JROD
membre
3852 messages
Triste Re: impression sur une imprimante précise sur un bac précis message: éditerle 27/01/09 à 19h02

Et en utilisant utilisant ces fonctions :

    printers.Printer.BeginDoc;
    Application.ProcessMessages;// p'têt ?
    printers.Printer.NewPage;
    printers.Printer.EndDoc;

Darks
membre
866 messages
Message Re: impression sur une imprimante précise sur un bac précis message: éditerle 28/01/09 à 08h11

salut, je pense pas, car en fait l'erreur vient du fait que dans la procedure print, il libére l'objet QRPrinter.

dc derriere, sur le afterprint si je refait print, il n'a plus l'objet QRPrinter, dc il plante.
Sourire en biais

Index > Forum général > impression sur une imprimante précise sur un bac précisNouveau post - Répondre
 page 1 sur 1