D'autant plus que ce "SetPrinter" est utilisé dans le post que je citais il y a qq jours, post en provenance de Borland !, lolCitation:
Faut croire que quelqu'un se trompe....
Je remets le lien
Ah, il va s'en sortir !
--
jp
Version imprimable
D'autant plus que ce "SetPrinter" est utilisé dans le post que je citais il y a qq jours, post en provenance de Borland !, lolCitation:
Faut croire que quelqu'un se trompe....
Je remets le lien
Ah, il va s'en sortir !
--
jp
Avec respect, je parle de SetPrinter dans l'unité Printer.pasCitation:
Envoyé par Jipété
et en n'aucun cas, on change l'imprimante par défault sur la station
comme il est question sur le site de Borland.
Arghh, j'aurais mieux fait de me taire...
Faut dire aussi qu'avec une version PE, j'ai pas les .pas de base qui permettent de tout bien comprendre, :(
Si un modo passe par là, il peut deleter ce post et mon précédent.
--
jp
dans notre procedure refresh printer on fait appel à ce SetPrinterCitation:
Envoyé par Eric Boisvert
Cette procedure est appelé au moment où l'on sélectionne l'imprimante de destination !Citation:
procedure RefreshPrinter(FontName : string = 'Courier New');
var
Device : array[0..75] of char;
Driver : array[0..(MAX_PATH-1)] of char;
Port : array[0..32] of char;
hDMode : THandle;
PdMode : PDevMode;
OldOrient : TPrinterOrientation;
begin
OldOrient := Printer.Orientation;
Printer.GetPrinter(Device,Driver,Port,hDMode);
Printer.SetPrinter(Device,Driver,Port,0);
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device,Driver,Port,hDMode);
PdMode := GlobalLock(hDMode);
Printer.Canvas.Font.PixelsPerInch := pdMode^.dmPrintQuality;
pdmode^.dmPaperLength := 2000;
GlobalUnlock(hDMode);
Printer.Orientation := OldOrient;
Printer.PrinterIndex := PRinter.PrinterIndex;
Printer.Canvas.Font.Style := [];
Printer.Canvas.Font.Size := 8;
Printer.Canvas.Font.Name := FontName;
end;
Pour info j'ai essayé de modifier cette procedure en mettant
printer.SetPrinter(pchar(Printer.printers[5]), '','',0 (a la place de 5 le printerindex de l'imprimante sélectionnée), mais rien n'a changé !
et bien non .... toujours pas ...Citation:
Envoyé par Jipété
le line feed ne se fait toujours pas ...
Pour le ZPrinters, je suis en train d'y regarder, pour le moment sur la laser ca marche nickel, le line feed se fait, sur la matricielle ca m'imprime tout sur une seule ligne, pas de line feed ...
je continue mon investigation ...
EDIT 22/09/2006 14:12 :
Je me suis amusé à utiliser le ZPrinters dans mon prog de test,
et là ca marche aucun problème, le ZPrinters fonctionne bien.Citation:
Print := TZPrinter.Create;
Niveau := 0;
inc(cpt);
Print.Device.Refresh;
Print.DeviceIndex := StrToInt(EdIndex.Text);
Print.StartDoc;
Print.StartPage;
LineHeigth := Print.Canvas.TextHeight('M');
MaxLine := Round(Print.PageHeight - (2*LineHeigth));
niveau := EntetePage;
for i := 0 to 10 do
begin
Niveau := Niveau + lineheigth;
Print.Canvas.TextOut(0, Niveau, 'ligne ' + inttostr(i) + #27#10);
end;
PiedPage;
Print.EndPage;
Print.EndDoc;
Print.Free;
Notre problème est que l'on ne peut pas tout redevelopper avec le ZPrinters. Je suppose qu'il y a un problème lié au Printers de delphi ...
si quelqu'un voit le problème, même si il faut modifier le Printers ou notre refreshprinter, ca m'interresse !!!
Merci, je continu, là le balcon s'éloigne aussi bien pour moi que pour la matricielle, c'est bien avant le week end !
Je ne trouve toujours pas ce qui deconne dans le Printers ...
Merci,
Bonjour,
Question bête à cent balles pour ne pas dire QALC : pourquoi donc ?Citation:
Notre problème est que l'on ne peut pas tout redevelopper avec le ZPrinters
Même si ton source représente des dizaines de fiches de milliers de lignes, à l'aide de la fonction "Rechercher", ça ne devrait pas être impossible.
Tu as trouvé une bouée, mais tu ne peux la saisir alors ? ;)
Nous sommes avec toi.
pour répondre une bouée n'est que une premiere idée de secours, ca ne t'empeche pas de rester dans l'eau ...Citation:
Envoyé par J-P
ensuite on n'a pas le même chef lol !
Bonjour,
Une boué par définition doit (au moins) faire remonter... ce topic ;)Citation:
pour répondre une bouée n'est que une premiere idée de secours, ca ne t'empeche pas de rester dans l'eau ...
If the big boss de ton chef le menace de lui remonter les bretelles, voire montrer la porte de sortie si le blème n'est pas épongé dans la semaine ; peut-être que là, ton chef retournera sa veste :lol:
ben la boué soit le ZPrinters, nous montre que le problème ne vient pas des imprimantes, ni du système d'exploitation, mais de l'objet Printers en lui même.Citation:
Envoyé par J-P
en plus si on est réaliste, si on utilise le ZPrinters partout a la place du Printers, il n'y a rien qui dit que l'on ne declanchera pas d'autre problème ailleurs !!!
et ceci c'est une réalité de développeur !
Il me semble bien que Borland en personne recommande cet object non ? ;)Citation:
en plus si on est réaliste, si on utilise le ZPrinters partout a la place du Printers, il n'y a rien qui dit que l'on ne declanchera pas d'autre problème ailleurs !!!
On travail sur Delphi 6, BORLAND recommande DELPHI 2006 PRO voir encore plus recent ....Citation:
Envoyé par J-P
Faut aussi que je change de logiciel de développement ... ?
Dans ta procedure Refresh Printer, tu joue aussi avec le Font sur leCitation:
Envoyé par staris
canvas de l'imprimante....
ca sert a quoi avec une generic text only :aie: ?
ta essayer d'enlever ça? Peut-être que le driver aime pas ca?
Citation:
Envoyé par Eric Boisvert
cette édition est aussi envoyé sur des imprimantes laser, le font dans le refresh printer permet cela.
sinon j'ai essayé sans le refresh printer en integral, j'ai le même problème.
Je crois que ca te prend le refresh Printer (a cause du setprinter())
mais pour un test, ajoute donc une petite condition...
dans le genre:
if printer<>generic text only then
printer.canvas.font etc..
J'ai fait le test sans le refreshprinter ! et j'ai aussi testé sans :Citation:
Envoyé par Eric Boisvert
et autre modif encore !Citation:
procedure RefreshPrinter(FontName : string = 'Courier New');
var
Device : array[0..75] of char;
Driver : array[0..(MAX_PATH-1)] of char;
Port : array[0..32] of char;
hDMode : THandle;
PdMode : PDevMode;
OldOrient : TPrinterOrientation;
begin
OldOrient := Printer.Orientation;
Printer.GetPrinter(Device,Driver,Port,hDMode);
Printer.SetPrinter(Device,Driver,Port,0);
Printer.PrinterIndex := Printer.PrinterIndex;
Printer.GetPrinter(Device,Driver,Port,hDMode);
PdMode := GlobalLock(hDMode);
GlobalUnlock(hDMode);
Printer.Orientation := OldOrient;
Printer.PrinterIndex := PRinter.PrinterIndex;
end;
Et tu as essayé l'envoi des séquences Escape pour vider - réinitialiser l'imprimante ?
AFFIRMATIF ! seul le ZPrinters fonctionnentCitation:
Envoyé par Fxg
Finalement quand on est optimiste la moitié du chemin est fait ;)Citation:
Envoyé par staris
Plus sérieusement c'est vrai que de réintroduire le ZPrinters dans ton code va quand même ralentir ton développement. Je te souhaite donc bon courage.
c'est pour ca qu'il est hors de question d'introduire le ZPrinters, y'en aurait pour au minimum 15 jour (enfin 10 jour de travail) pour faire tout ca, et ne faire que ca, au risque de créer d'autre problème, donc hors question de passer au ZPrintersCitation:
Envoyé par Fxg
regarder ou j'en suis rendu, a meme bosser chez moi lol !