yvescollet
Messages postés55Date d'inscriptionmardi 26 août 2003StatutMembreDernière intervention22 janvier 2006
-
10 nov. 2004 à 14:30
bdgta
Messages postés63Date d'inscriptionjeudi 2 janvier 2003StatutMembreDernière intervention 8 septembre 2008
-
24 juin 2006 à 19:36
Bonjour,
j'aimerais pouvoir imprimer une page entière (pour cela j'utilise un Form1.print), mais mon problème, c'est que ma Form1 est plus grande que l'écran et cela n'imprimer pas ce qui n'est pas visible à l'écran.
Comment faire pour imprimer l'entier de la Form1?
procedure TForm1.Button1Click(Sender: TObject);
var dc : hdc;
bmp : tbitmap;
R : TRect;
begin
// dc:=GetWindowDc(Form1.Handle); // pour imprimer le form complet
dc:=GetDc(Form1.Handle); // pour imprimer le contenu du form
bmp:=tbitmap.Create;
bmp.Width:=form1.BoundsRect.Right-form1.BoundsRect.Left;
bmp.Height:=form1.BoundsRect.Bottom-form1.BoundsRect.Top;
StretchBlt(bmp.canvas.Handle,0,0,bmp.Width,bmp.Height,
dc,0,0,form1.Width,form1.Height,SRCCOPY);
ReleaseDc(Form1.Handle,dc);
with printer do
begin
BeginDoc;
PrinterStretchDraw(Rect(0,0,Printer.PageWidth,Printer.PageHeight),bmp);
EndDoc;
end;
bmp.Free;
end;
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 12 nov. 2004 à 00:06
oupss,
la c'est + beau...
procedure TForm1.Button1Click(Sender: TObject);
var dc : hdc;
bmp : tbitmap;
R : TRect;
begin
bmp:=tbitmap.Create;
//dc:=GetWindowDc(Form1.Handle); // pour imprimer le form complet
//bmp.Width:=form1.BoundsRect.Right-form1.BoundsRect.Left;
//bmp.Height:=form1.BoundsRect.Bottom-form1.BoundsRect.Top;
dc:=GetDc(Form1.Handle); // pour imprimer le contenu du form
bmp.Width:=form1.ClientWidth;
bmp.Height:=form1.ClientHeight;
BitBlt(bmp.canvas.Handle,0,0,bmp.Width,bmp.Height,
dc,0,0,SRCCOPY);
ReleaseDc(Form1.Handle,dc);
with printer do
begin
Orientation:=poLandscape;
BeginDoc;
Canvas.Lock;
PrinterStretchDraw(Rect(0,0,Printer.PageWidth,Printer.PageHeight),bmp);
Canvas.Unlock;
EndDoc;
end;
bmp.Free;
end;
Bon Coding ....
ManChesTer.
Vous n’avez pas trouvé la réponse que vous recherchez ?
jrousseau
Messages postés4Date d'inscriptionjeudi 9 décembre 2004StatutMembreDernière intervention12 décembre 2004 11 déc. 2004 à 17:50
désolé encore moi cela ne fonctionne toujours pas le formulaire est imprimé ce qui est vue à l'écran et la police(font) est immence
que faire ?????
merci
cs_ManChesTer
Messages postés374Date d'inscriptionvendredi 20 octobre 2000StatutModérateurDernière intervention15 janvier 2021 11 déc. 2004 à 21:58
Aucune idée,
Cette méthode Fonctionne sans problemes sur un form 755px x 1008px sur ma machine. Donc chez toi ca devrais fonctionner aussi.
il faudrais pour pouvoir te répondre disposé du form en question...
JuPaillos
Messages postés1Date d'inscriptionsamedi 18 octobre 2003StatutMembreDernière intervention23 mars 2006 23 mars 2006 à 13:45
Pour pouvoir imprimer ta form comme bon te semble, utilise ce code :
uses
Printers;
procedure TForm1.Button1Click(Sender: TObject);
begin
// PrintScale : type de mise à l'échelle de la form à imprimer
// Valeurs possibles : aucune (poNone) [par défaut], proportionnelle
// (poProportional) ou ajustée à la page (poPrintToFit)
PrintScale := poProportional;
// Printer.Orientation : disposition en portrait (poPortrait)
// ou paysage (poLandscape)
Printer.Orientation := poLandscape;
// Imprime un aperçu de la form
Print;
end;
Dans mon exemple, j'ai une form appelée Form1 qui contient un bouton appelé Button1.
En espérant t'avoir aidé
JuPaillos
P.S : N'oubliez pas de valider si ça vous convient, comme réponse.