kacola
Messages postés30Date d'inscriptionjeudi 27 mai 2004StatutMembreDernière intervention10 janvier 2008
-
21 nov. 2007 à 21:23
kacola
Messages postés30Date d'inscriptionjeudi 27 mai 2004StatutMembreDernière intervention10 janvier 2008
-
22 nov. 2007 à 16:49
Bonjour, j'ai une imprimante couleur Canon MP780 et une Laser N&B Canon (qui est par défaut),
Je souhaite imprimer une image (un jpeg) en couleur, mais voici mon problème:
Lorsque je mets la Canon MP780 par défaut, le code suivant imprime correctement en couleur:
procedure TForm1.Button1Click(Sender: TObject);
var image_jpeg : TjpegImage;
begin
image_jpeg := TjpegImage.Create;
image_jpeg.LoadFromFile('C:\QCM\Images\image_0_Impression.jpg');
printer.begindoc;
Printer.Canvas.StretchDraw(Rect(0,0,3393,4886),image_jpeg);
printer.Enddoc;
end;
Mais lorsque je mets la Laser par défaut et que j'ajoute 'printer.PrinterIndex: =3' qui est l'index de la MP780
le code suivant imprime uniquement en noir et blanc:
procedure TForm1.Button1Click(Sender: TObject);
var image_jpeg : TjpegImage;
begin
printer.PrinterIndex:=3;
image_jpeg := TjpegImage.Create;
image_jpeg.LoadFromFile('C:\QCM\Images\image_0_Impression.jpg');
printer.begindoc;
Printer.Canvas.StretchDraw(Rect(0,0,3393,4886),image_jpeg);
printer.Enddoc;
end;
L'ajout de la ligne 'printer.PrinterIndex:=3' donne une impression en N&B.
J'ai absolument besoin d'avoir ma Laser en défaut et dimprimer en couleur sur la MP780
Config:
Windows Vista (Ne marche pas non plus sous XP).
Delphi Turbo.
Canon MP780 (ce n'est pas l'imprimante, j'ai essayé sur une autre imprimante et sur un createur de pdf)
procedure TForm1.FormCreate(Sender: TObject);
begin
//
end;
procedure Liste_Imprimante(Destino : TStrings);
var
RegCode : TRegistry;
Str : String;
vtCount, i : Integer;
begin
Destino.Clear;
RegCode := TRegistry.Create;
try
RegCode.RootKey := HKEY_CURRENT_USER;
if RegCode.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Devices',False)
then RegCode.GetValueNames(Destino);
finally
RegCode.CloseKey;
RegCode.Free;
end;
end;
procedure Selectionne_Imprimante(Imprimante : String);
var
RegCode : TRegistry;
Str, Str1 : String;
Arr_Tmp : Array[0..64] of Char;
vtCount, i : Integer;
begin
RegCode := TRegistry.Create;
try
RegCode.RootKey := HKEY_CURRENT_USER;
if RegCode.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Devices',False)
then begin
if RegCode.ValueExists(Imprimante)
then begin
Str1 := RegCode.ReadString(Imprimante);
Str := Imprimante + ',' + Str1;
RegCode.CloseKey;
RegCode.RootKey := HKEY_CURRENT_USER;
if RegCode.OpenKey('Software\Microsoft\Windows NT\CurrentVersion\Windows',False)
then begin
if RegCode.ValueExists('Device')
then RegCode.WriteString('Device',Str);
//Windows Refresh changes :
StrCopy(Arr_Tmp, 'windows');
SendMessage(HWND_BROADCAST, WM_WININICHANGE, 0, LongInt(@Arr_Tmp));
end;
end;
end;
finally
RegCode.CloseKey;
RegCode.Free;
end;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
Liste_Imprimante(ListBox1.Items);
end;
procedure TForm1.BitBtn2Click(Sender: TObject);
begin
if (ListBox1.ItemIndex <> -1)
then Selectionne_Imprimante(ListBox1.Items[ListBox1.ItemIndex]);
end;
kacola
Messages postés30Date d'inscriptionjeudi 27 mai 2004StatutMembreDernière intervention10 janvier 2008 22 nov. 2007 à 16:49
Merci beaucoup, c'est exactement ce que j'attendais, un moyen de changer l'imprimante par defaut.
je vais pouvoir m'en sortir je pense, MERCI encore!!!