Sauvegarder l'index des imprimantes

Résolu
ioda19 Messages postés 21 Date d'inscription jeudi 10 juin 2004 Statut Membre Dernière intervention 20 juin 2007 - 15 mars 2006 à 23:06
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

2 réponses

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
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%...
3
DRJEROME Messages postés 436 Date d'inscription jeudi 9 janvier 2003 Statut Membre Dernière intervention 5 février 2015
18 mars 2006 à 11:41
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
0
Rejoignez-nous