Option Imprimante avec deux Bacs

kacola Messages postés 30 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 - 20 mai 2007 à 19:19
kacola Messages postés 30 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 10 janvier 2008 - 26 mai 2007 à 11:54
Bonjour,
J'ai une imprimante Canon MP780 avec deux bacs ( "cassette" - "Chargeur automatique").
J'ai besoin d'automatiser l'impression et donc entrer différents paramètres
- A5
- Chargeur automatique
- Paysage, etc..

J'ai trouvé pour tout sauf le chargeur automatique !.
Quelqu'un peut-il m'aider ?

Merci.
Kacola.

3 réponses

cs_Kenavo Messages postés 702 Date d'inscription vendredi 21 mars 2003 Statut Membre Dernière intervention 1 octobre 2009 5
23 mai 2007 à 08:40
Salut,

Effectivement cette partie n'est pas implémentée dans l'unité Printers.
Je me suis créé une autre unité (MyPrinters) en copiant Printers et en rajoutant le type, la propriété et les fonctions suivantes :
(C'est adapté à mon imprimante, mais le principe doit rester bon)

// Nouveau type
TPrinterSource = (psTiroir1, psTiroir2, psTiroir3, psManuel, psEnveloppe, psChargeur);

// Nouvelle propriété publique de l'objet TPrinter
...
    property Source: TPrinterSource read GetSource write SetSource;
...

// Les fonctions : leur squelette est inspiré des autres fonctions comme l'orientation par exemple

function TPrinter.GetSource: TPrinterSource;
begin
  GetPrinterIndex;
  if DeviceMode = 0 then RaiseError(SInvalidPrinterOp);
  case DevMode^.dmDefaultSource of
    DMBIN_FIRST: Result := psTiroir1;
    DMBIN_LOWER: Result := psTiroir2;
    DMBIN_MIDDLE: Result := psTiroir3;
    DMBIN_MANUAL: Result := psManuel;
    DMBIN_ENVELOPE: Result := psEnveloppe;
    DMBIN_CASSETTE: Result := psChargeur;






  else Result := psTiroir1;
  end;
end;

procedure TPrinter.SetSource(Value: TPrinterSource);
const
  Sources: array [TPrinterSource] of Integer = (
  DMBIN_FIRST,
  DMBIN_LOWER,
  DMBIN_MIDDLE,
  DMBIN_MANUAL,
  DMBIN_ENVELOPE,
  DMBIN_CASSETTE);
begin
  CheckPrinting(False);
  GetPrinterIndex;
  if DeviceMode = 0 then RaiseError(SInvalidPrinterOp);
  SetState(psNoHandle);
  DevMode^.dmDefaultSource := Sources[Value];
end;



Les constantes DMBIN_xxx  sont déclarées dans l'untié Windows. A toi de choisir celles qui te seront utiles avec ton imprimante

Bon courage

Ken@vo



<hr size="2" width="100%" />



Code, Code, Codec !






[%3C/body
]
0
kacola Messages postés 30 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 10 janvier 2008
24 mai 2007 à 23:02
Merci beaucoup pour votre réponse, je n'ai pas beaucoup de temps cette semaine, mais dés que je peux, je teste et vous retourne mes résultats.

Merci encore.
Kacola.
0
kacola Messages postés 30 Date d'inscription jeudi 27 mai 2004 Statut Membre Dernière intervention 10 janvier 2008
26 mai 2007 à 11:54
Bonjour Kenavo,
Comment faire pour l'intégrer dans mon programme?
Faut-il que je crée une nouvelle unité MyPrinters? Comment fait-on?
(Je ne suis pas un expert avec Delphi!).

Merci de votre aide.
Kaco.
0
Rejoignez-nous