Sauvegarder l'index des imprimantes [Résolu]

Messages postés
21
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
20 juin 2007
- - Dernière réponse : ioda19
Messages postés
21
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
20 juin 2007
- 19 mars 2006 à 23:37
Bonjour,
J'ai une question à propos des imprimantes et je m'en tire les cheveux.
J'ai une application que j'ai fait où l'usager peux configurer sur quelle imprimante il veux envoyer les documents à imprimé. Le problème c'est lors de la sauvegarde de cette imprimante.

Au début j'ai fais ça :
procedure TForm1.LoadPrinter;
begin
//Load les imprimante installer dans Windows
cbPrinterPort.Items.Clear;
for I := 0 to Printer.Printers.Count - 1 do
cbPrinterPort.Items.Add(Printer.Printers[I]);
if CnfIni.ReadInteger('Facture', 'Imprimante', 0) > cbPrinterPort.Items.Count - 1 then
rgFormat.ItemIndex := 0
else
rgFormat.ItemIndex := CnfIni.ReadInteger('Facture', 'Imprimante', 0);
end;

procedure TForm1.SavePrinter;
begin
CnfIni.WriteInteger('Facture', 'Imprimante', rgFormat.ItemIndex);
end;

Mon code fonctionne jusqu'au jour où une personne décide, pour une raison quelconque, d'ajouter ou de supprimer une imprimante dans Windows. Comme les index changes les imprimantes sont donc toutes décalé et ça cause un problème pour les impression. Le résultat : j'ai des beaux téléphones de mes clients à qui il faut que je leur explique qu'il faut aller chercher la bonne imprimante dans les configurations.

J'ai aussi pensé sauvegarder le nom de l'imprimante sauf que si le client décide aussi de le changer je suis dans la même position.

Si vous connaissez un moyen de réglé mon problème j'en serais grandement content.
Merci

Guillaume Corneau
Afficher la suite 

2 réponses

Meilleure réponse
Messages postés
21
Date d'inscription
jeudi 10 juin 2004
Statut
Membre
Dernière intervention
20 juin 2007
3
Merci
Merci de ta réponse
En regardant plus loins j'avais envisagé cette solution que j'ai en fin de compte utilisé dans mon code.

Bref tout ça pour dire que.... problème résolua 99%...

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 196 internautes nous ont dit merci ce mois-ci

Commenter la réponse de ioda19
Messages postés
447
Date d'inscription
jeudi 9 janvier 2003
Statut
Membre
Dernière intervention
5 février 2015
0
Merci
tu peux rectifier en direct le numéro de l'imprimante juste avant l'impression :



<HR>
var
i: Integer;
TS:TStrings;
IndexPrinter:integer;
Imprimante_de_ton_Ini:string;
begin
TS:=TStrings.Create;
IndexPrinter:=-1;//on initialise
Imprimante_de_ton_Ini:='Imprimante machin';//en fait tu vas pêcher son nom dans ton fichier .ini


TS:=Printer.Printers;
if TS.Count>0 then
begin
for i:=0 to TS.Count-1 do
if TS[i]=Imprimante_de_ton_Ini then IndexPrinter:=i;


if IndexPrinter=-1 then
begin
Showmessage('vous avez désinstallé l''imprimante "'+Imprimante_de_ton_Ini+'"');
end
else{l'imprimante a été trouvée, mais il faut vérifier son index dans l'.ini}
begin
//là tu vérifies que l'index de l'imprimante dans le fichier .ini est égal à IndexPrinter
//sinon tu changes son index dans le fichier .ini (tu mets la valeur de IndexPrinter)
end;
end
else{càd TS.Count=0}
begin
Showmessage('vous n''avez pas d''imprimante installée');
//et là tu fais un exit
end;
end;



<HR>

DrJerome
Commenter la réponse de DRJEROME