cs_couf
Messages postés213Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 6 janvier 2011
-
30 juil. 2007 à 12:38
dominique.stock
Messages postés436Date d'inscriptionvendredi 7 novembre 2003StatutMembreDernière intervention 8 octobre 2008
-
7 août 2007 à 15:01
Bonjour à Tous,
Je vois déja les rires de certains qui vont dire mais c'est quoi ce matérielle de Dinausaure.:-D
Bref il ya quelques temps j'aurais moi aussi rigolé mais j'avaoue que cela commencent à me prendre sérieusement le chou,
et je ne vois rien nul part.
Bon avant de continuer à pleurer je vais poser m question.
J'ai une impriamante matricielle que je ne peux remplacer par une imprimante A4.
Suite à une demande spécifique, jai développé le source suivant.
function Millimetres2PixelsX(Millims: integer): integer;
var
XPixelsParPouce :integer;
begin
XPixelsParPouce := GetDeviceCaps(Printer.Handle, LOGPIXELSX);
result := Trunc(Millims / (25.4 / XPixelsParPouce));
end;
function Millimetres2PixelsY(Millims: integer): integer;
var
YPixelsParPouce :integer;
begin
YPixelsParPouce := GetDeviceCaps(Printer.Handle, LOGPIXELSY);
result := Trunc(Millims / (25.4 / YPixelsParPouce));
end;
function NomImprimableHorizPixelsX: integer;
begin
result := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETX);
end;
function NomImprimableVertiPixelsY: integer;
begin
result := GetDeviceCaps(Printer.Handle, PHYSICALOFFSETY);
end;
procedure TForm2.Button1Click(Sender: TObject);
var
S,expRS ,expadr1,expadr2,expCP,expLocal: String;
S1,RS ,destadr1,destadr2,destCP,destLocal: String;
I: Integer;
begin
//for I := 0 to 2 do
With Printer do
begin
copies:=2;
//orientation:=poLandscape;
{Démarrage de l'impression}
BeginDoc;
Le problème me direz vous?
je n'arrive pas à caler cette imprimante
j'ai beau faire démarer imprimante et télécopieurs-->fichier-->propriété du serveur-->formulaires
rienà faire 1ère feuille =OK puis seconde se décale etc....
j'ai déja défini enlever remis des marges, rien à faire...
Ma question?
quelqu'un a il été déja confronté à ce problème (internet et gogole ne me donne rien) sinon comment faire pourque ce soit le programme qui détermine la taille du papier et pas windows.
mon matériel c'est un lexmark 2391 plus.
la taille de mon formulaire hauteur 21 largeur 29,6 (pacompliqué) mais le new page me décle de 21 cm après
la dernière ligne écrite.
Donc j'ai refait un nouveau formulaire par imprimante et télécopieurs-->fichier-->propriété du serveur-->formulaires
et j'ai fait 10,5 29,6 mais catastrophe cela ne me donne rien.
Bon si quelqu'un a un tuyeau une idée je vous remercie par avance.
Autre question, pourquoi windows prends le pas sur les propriétés de l'imprimante?
cs_couf
Messages postés213Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 6 janvier 20111 30 juil. 2007 à 18:14
Bonjour [auteurdetail.aspx?ID=323345 WhiteHippo]
non c'est mon copier coller qui est mauvais dans le programme j'ai bien un enddoc
cela fonctionne toujours pas je vas voir les archives que tu m'as proposé merci quand même
couf
Oniria
Messages postés292Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention18 décembre 20143 30 juil. 2007 à 20:54
Bonjour,
Pour t'aider, il faudrait que tu regardes tes fonctions de convertion : NomImprimableVertiPixelsY et Millimetres2PixelsY entre la première page et la deuxième page. Je me demande juste si il n'y aurait pas un probléme avec la fonction GETDEVICECAPS. parce que si on réfléchit un peu, j'ai l'impression que le PHYSICALOFFSETX se référe à la première page. C'est pour ca que je te demande de comparer les résultats de la première et de la deuxième page.
Si c'est ca, tu peux enregistrer les offsets de même que les valeurs constante de convertion dans des variables de manière à ne faire qu'un seul appel aux infos de l'imprimante. Si je ne me trompe pas, l'imprimante ne va pas changer ces caractéristique en dinamique.
J'espére que j'ai pu t'aider un peu...
Bon courage
Oniria
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_couf
Messages postés213Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 6 janvier 20111 2 août 2007 à 12:24
Salut,
pour Oniria, j'ai essayé ta méthode, mais cela reste toujours pareil,
le problème viens bien du saut de page, qui me décale tout à chaque fois, d'une page -1 ligne mais à partir de la dernière ligne.
donc il faut que je trouve le moyen, à chaque saut de page de commencez l'impression une ligne en dessous.j'ai vu une procédure newline mais je vais regarder comment elle marche.
couf
dominique.stock
Messages postés436Date d'inscriptionvendredi 7 novembre 2003StatutMembreDernière intervention 8 octobre 20087 3 août 2007 à 15:47
Exemple d'utilisation
procedure TMainForm.ImprimerClick(Sender: TObject);
var Line:integer; PrintText:System.Text;
begin
Printer.Title:='Post-it';
AssignPrn(PrintText);
Rewrite(PrintText);
Printer.Canvas.Font:=Memo.Font;
for line:=0 to memo.Lines.Count-1 do
Writeln(PrintText,Memo.Lines[line]);
closefile(PrintText);
end;
en remplaçant le memo.lines[line] par ce que tuveux envoyer à l'imprimante
Un crLF c'est #13#10 ou #10#13 ....
cs_couf
Messages postés213Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 6 janvier 20111 3 août 2007 à 17:00
Salut Domi,
Cela m'a l'air pas mal je m'en vais essayer car je suis toujours en galère.
Je parcours beaucoup Gogole, et c'est fou le nombre de personne qui ont eu des problèmes avec ce type d'imprimante mais on
a pas beaucoup de solution.
Vais devoir retourner sous Pascal en MS DOS?
cs_couf
Messages postés213Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 6 janvier 20111 6 août 2007 à 15:26
Salut,
Une dernière question et puis j'arrète de vous embéter tous d'abord merci encore poutes vos suggestiosns.
Diminique, j'ai rajouter ceci à mon code.
AssignPrn(PrintText);
Rewrite(PrintText);
Writeln(PrintText,#10#13);
writeln(printtext,'TEST');// pour veérifier ou cefais l'écriture {a gauche de la page}
closefile(PrintText)
Cela me fais au départ un saut de ligne, puis tout de suite après un saut de page
causé par ceci
Normal si on regarde bien le code il est obligé de faire un saut de page,
pourtant la solution que tu me donnes semble la bonne.
As ton avis, est il possible de formater le formulaire avec la commande printext ou aurais tu une astuce
pour formater le formulaire, sans employer canvas.txtout, qui de toute évidence, ne me conviens pas
Merci d'avance
couf
dominique.stock
Messages postés436Date d'inscriptionvendredi 7 novembre 2003StatutMembreDernière intervention 8 octobre 20087 6 août 2007 à 16:14
Oui, il est possible d'imprimer avec un fichier text.
Tu peux écrire dans le fichier texte des tabs et d'autres commandes (dont je ne me souviens plus) afin de positionner ton texte.
Ce que tu as écris
Writeln(PrintText,#10#13);
writeln(printtext,'TEST');//
fait un saut de ligne (#13#10) puis écrit TEST en début de ligne ....
Dom
cs_couf
Messages postés213Date d'inscriptiondimanche 5 janvier 2003StatutMembreDernière intervention 6 janvier 20111 6 août 2007 à 18:53
Bonsoir à Tous,
Je remercie encore tous ceux qui m'ont aidé, grace à eux j'ai put explorer d'autres voies.
A l'heure où j'écris ces quelques lignes , je dirais que je c'est une victoire mitigée.
Je réussis à imprimer avec le source que j'ai fait, mais malheureusement, j'ai du utiliser une imprimante générique tex only
pourquoi mon driver ne marche pas je n'en sais rien....
Le driver de la lexmark mange à tous les coups une ligne
le driver générique text non!
Il faut que j'utilise new page pour avoir un autre page et Writeln(PrintText,#10#13); ne saute pas de ligne mais une page directement.
avec générique text le enddoc; suffit à changer de page.
Le seul inconvénient à utiliser un générique text only , je n'arrive pas (ou pas encoreà faire du gras, ni à faire la taille de la police que je veux)
mais si je cherche je pense que je vais trouver.
Merci en tous cas, et si quelqu'un sait comment gérer ce problème de driver je suis toujours preneur.