cs_emeraudes
Messages postés63Date d'inscriptiondimanche 2 mai 2004StatutMembreDernière intervention 8 avril 2005
-
17 févr. 2005 à 11:11
cs_emeraudes
Messages postés63Date d'inscriptiondimanche 2 mai 2004StatutMembreDernière intervention 8 avril 2005
-
24 mai 2005 à 08:15
bonjour,
je débute en delphi et j'ai chercher sur les forums comment imprimer.
j'ai trouvé divers éléments mais aucun ne correspond a ce que je
recherche ou alors ne fonctionne pas.
j'utilise un printdialog pour obtenir le fenetre de selection
d'imprimant. mais ce code ne fonctionne pas. il me fait carrément
planté mon pc et je suis obliger de redémarrer car plus rien ne
fonctionne.
Aidez moi stv.
je continue de chercher sur les forums.
merci d'avance.
salutation
>>>> "Le génie n'existe pas sans un grain de folie"
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 201012 17 févr. 2005 à 12:59
Ce code te permet d'imprimer l'image de ta form en prenant le maximum de place sur la feuille (détection automatique de l'impression paysage ou portrait), tout en gardant les proportions :
procedure TForm1.Button1Click(Sender: TObject);
var FormImage: TBitmap;
AspectRatio: Single;
OutputWidth, OutputHeight: Single;
begin // Capture de l'image de la form
FormImage := GetFormImage;
// On définit l'orientation la mieux adaptée. Si c'est un carré, on choisit poLandscape
Printer.Orientation := poLandscape;
If FormImage.Height > FormImage.Width then Printer.Orientation : = poPortrait;
// Titre vu dans le gestionnaire d'impression
Printer.Title := 'Impression de l''image de la form';
// On veut qu'une feuille s'imprime
Printer.Copies := 1;
// Début du document
Printer.BeginDoc;
try
// On prend le plus de place possible sur la feuille, tout en gardant les proportions
OutputWidth : = FormImage.Width;
OutputHeight := FormImage.Height;
AspectRatio := OutputWidth / OutputHeight;
if (OutputWidth < Printer.PageWidth) and (OutputHeight < Printer.PageHeight) then begin if OutputWidth < OutputHeight then begin OutputHeight : = Printer.PageHeight;
OutputWidth := OutputHeight * AspectRatio;
end
else begin OutputWidth : = Printer.PageWidth;
OutputHeight := OutputWidth / AspectRatio;
end
end;
if OutputWidth > Printer.PageWidth then begin OutputWidth : = Printer.PageWidth;
OutputHeight := OutputWidth / AspectRatio;
end ;
if OutputHeight > Printer.PageHeight then begin OutputHeight : = Printer.PageHeight;
OutputWidth := OutputHeight * AspectRatio;
end;
// On dessine l'image de la form sur le canvas de l'imprimante
Printer.Canvas.StretchDraw(Rect(0,0,Trunc(OutputWidth),Trunc(OutputHeight)),FormImage);
finally // On démarre l'impression
Printer.EndDoc;
// On libère FormImage
FormImage.Free;
end;
end;
J'espère que ça t'ira
@+
Bonne Prog'
Nico
<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
Vous n’avez pas trouvé la réponse que vous recherchez ?
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 201012 19 févr. 2005 à 19:42
quand tu dis "ca n'a pas afficher sur tte la feuille", tu veux dire qu'il y a eu des blancs ? c'est normal, si tu veux que l'impression soit proportionelle !
@+
Bonne Prog'
Nico
<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
cs_emeraudes
Messages postés63Date d'inscriptiondimanche 2 mai 2004StatutMembreDernière intervention 8 avril 2005 19 févr. 2005 à 19:46
ben en fait je voudrai ke ca imprime sur toute la feuille cad ke ca soi
par exemple au centre car ya du blanc en bas et c pa présentable car je
doi imprimer des bon de commande. faudrai ke ca imprime au moins au
centre car si ya du blanc en bas, ca le fai pas
tu compren ce ke je veu dire?
>>>> "Le génie n'existe pas sans un grain de folie"
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 201012 19 févr. 2005 à 20:00
essaie comme ça (j'ai pas testé) :
Printer.Canvas.StretchDraw(Rect((Printer.PageWidth - Trunc(OutputWidth)) div 2,(Printer.PageHeight - Trunc(OutputHeight)) div 2,Trunc(OutputWidth),Trunc(OutputHeight)),FormImage);
@+
Bonne Prog'
Nico
<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
cs_emeraudes
Messages postés63Date d'inscriptiondimanche 2 mai 2004StatutMembreDernière intervention 8 avril 2005 20 févr. 2005 à 19:52
ca ne marche pa ca me l'imprime presque au centre mais ca écrase l'image, cad que les écriture sont écrasé, compressé.
je voudrais que ca imprime au centre mais pas écrasé comme ca l'a imprimé avec le bout de code
Printer.Canvas.StretchDraw(Rect((Printer.PageWidth
- Trunc(OutputWidth)) div 2,(Printer.PageHeight - Trunc(OutputHeight))
div 2,Trunc(OutputWidth),Trunc(OutputHeight)),FormImage);
>>>> "Le génie n'existe pas sans un grain de folie"
ni69
Messages postés1418Date d'inscriptionsamedi 12 juin 2004StatutMembreDernière intervention 5 juillet 201012 27 févr. 2005 à 14:04
désolé pour le retard...
en effet, cette instruction n'est pas exacte, utilise plutôt :
Printer.Canvas.StretchDraw(Rect((Printer.PageWidth - Round(OutputWidth)) div 2,(Printer.PageHeight - Round(OutputHeight)) div 2,(Printer.PageWidth - Round(OutputWidth)) div 2+Round(OutputWidth),(Printer.PageHeight - Round(OutputHeight)) div 2+Round(OutputHeight)),FormImage);
@+
Bonne Prog'
Nico
<HR>
N'oubliez pas de cliquer sur Réponse acceptée lorsque la réponse vous convient !
euhhh je viens d'essayai ton code et ca m'imprime bizarrement, il me l'imprime en format paysage et donc forcémen ca me coupe une partie de ma feuille.
ton code ne fonctionne pas dslll.
>>>> "Le génie n'existe pas sans un grain de folie"