Title : [TPrinters] détecter annulation/erreur impression


Bonjour et Joyeuse Année au forum et à tous ses membres !

Voici ma question : j'ai une appli qui imprime quelques lignes et en même temps, elle doit stocker directo dans un fichier texte toutes ces infos printées.

Jusque là, rien de compliqué et ça tourne impec.

Mais, je me suis rendu compte d'un cas de figure qui peut très bien arriver :

Si jamais l'utilisateur lance l'impression et que par exemple l'imprimante n'est pas allumée, hé bien j'ai en effet du pilote de la printeuse un message d'alerte et bien entendu rien ne s'imprime...

Or c'est là le noeud du problème, car si rien ne s'imprime, au contraire l'enregistrement des quelques lignes prévues d'être imprimées sont quant à elle bien imprimées.

Autrement dit : lorsqu'ensuite l'utilisateur allume son imprimante et recommence l'impression, devinez...

Hé oui, cela ensuite dans le fichier texte représente deux fois la même chose, présentement cela n'est pas acceptable.

Je me suis documenté sur la classe TPrinters, mais rien de trop significatif quant aux résultats.

J'ai commencé par :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
...
if Printer.Aborted then
  MessageDlg('Le travail d''impression n''a pas terminé l''impression', mtInformation, [mbOK], 0);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 if Printer.Printing = true then
     ShowMessage('OK !')
         else
     ShowMessage('NO !!!');
Je pensais au travers du F1 avoir enfin trouvé une parade :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
if (Key=VK_ESCAPE) and Printer.Printing then
  begin
    Printer.Abort;
    MessageDlg('Impression annulée', mtInformation, [mbOK],0);
   end;
end;
Mais manque de chance, bien que cela stoppe le printage au tout début, je ne sais pas comment faire pour récupérer une variable ou autre afin de m'en servir utilement.

Autrement dit : comment faire pour récupérer le message d'erreur du pilote de l'imprimante afin d'ensuite s'en servir... ?

A vrai dire, je ne sais pas trop comment m'y prendre et vers la bonne direction et ce n'est pas très cohérent

J'ai encore tartiné le premier message de ce topic, ne m'en veuillez pas de trop, je ne sais pas faire court.

Merci d'avance de vos idées, heuuuu pas trop compliquées