ioda19
Messages postés21Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention20 juin 2007
-
15 mars 2006 à 23:06
ioda19
Messages postés21Date d'inscriptionjeudi 10 juin 2004StatutMembreDernière intervention20 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
DRJEROME
Messages postés436Date d'inscriptionjeudi 9 janvier 2003StatutMembreDerniè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;