begin process at 2010 02 10 13:18:31
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive Delphi

 > 

Archives

 > 

J'AI BESOIN D'AIDE !!!! :O

 > 

BUG IMPRESSION DELPHI


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

BUG IMPRESSION DELPHI

mercredi 26 novembre 2003 à 10:08:01 | BUG IMPRESSION DELPHI

exae

J'ai un problème d'impression sous W98.

Pic := TPicture.Create;
Pic.LoadFromFile( 'c:\WINDOWS\monBmp.bmp' );
Printer.BeginDoc;
Printer.Canvas.StretchDraw( Rect( 100, 100, 200, 200), Pic.Graphic );
Printer.EndDoc;
Pic.Free;

Ce code fonctionne parfaitement sous XP mais image vide sous 98.

J'ai aussi essayé avec l'API stretchblt mais sous W98 la fonction me retourne le message d'erreur : Paramètre incorrect.

Que faire ?

EXAE
mercredi 26 novembre 2003 à 10:55:45 | Re : BUG IMPRESSION DELPHI

ManChesTer

Administrateur CodeS-SourceS
var Bmp :Tbitmap;

Bmp := Tbitmap.Create;
Bmp.LoadFromFile( 'c:\WINDOWS\monBmp.bmp' );
Printer.BeginDoc;
Printer.Canvas.StretchDraw( Rect( 100, 100, 200, 200), Bmp );
Printer.EndDoc;
Bmp.Free;

la ca devrais fontionner ;o))

Bon Coding ....

ManChesTer.
mercredi 26 novembre 2003 à 14:18:59 | Re : BUG IMPRESSION DELPHI

exae

Merci d'avoir répondu aussi rapidement, mais ça ne fonctionne pas à 100%, en effet si j'ajoute ce code dans une boucle toute simple, les images sont de temps en temps vides.

Le problème existe sous W98 mais pas sous XP.

Exemple :

var
Bmp :Tbitmap;
i : Integer;
Begin
Bmp := Tbitmap.Create;
Printer.BeginDoc;
For i := 1 To 20 Do Begin
// Pour simplifier je prend tjs la même image
Bmp.LoadFromFile( 'c:\MonBmp.bmp' );
Printer.Canvas.StretchDraw( Rect( i * 100, 100, i * 100 + 100, 200 ), bmp );
End;
Printer.EndDoc;
Bmp.Free;
End;


vendredi 29 juillet 2005 à 08:56:47 | Re : BUG IMPRESSION DELPHI

goloa

J'ai le meme problème que toi :

http://www.delphifr.com/forum.v2.aspx?ID=521892&post=ok

As-tu trouvé une solution depuis ?

respect robustesse

vendredi 29 juillet 2005 à 13:29:08 | Re : BUG IMPRESSION DELPHI

exae

Réponse acceptée !
Oui j'ai effectivement trouvé la solution, il ne faut jamais utiliser StrechDraw avec le canvas d'une imprimante.

Alors voici la fonction qui marche à tous les coups :

Procedure PrintBitmap(Canvas:  TCanvas; DestRect:  TRect;  Bitmap:  TBitmap);
Var
  BitmapHeader:  pBitmapInfo;
  BitmapImage :  POINTER;
  HeaderSize  :  DWORD;    // Use DWORD for D3-D5 compatibility
  ImageSize   :  DWORD;
BEGIN
  GetDIBSizes(Bitmap.Handle, HeaderSize, ImageSize);
  GetMem(BitmapHeader, HeaderSize);
  GetMem(BitmapImage,  ImageSize);
  Try
    GetDIB(Bitmap.Handle, Bitmap.Palette, BitmapHeader^, BitmapImage^);
    StretchDIBits(Canvas.Handle,
                  DestRect.Left, DestRect.Top,     // Destination Origin
                  DestRect.Right  - DestRect.Left, // Destination Width
                  DestRect.Bottom - DestRect.Top,  // Destination Height
                  0, 0,                            // Source Origin
                  Bitmap.Width, Bitmap.Height,     // Source Width & Height
                  BitmapImage,
                  TBitmapInfo(BitmapHeader^),
                  DIB_RGB_COLORS,
                  SRCCOPY)
  Finally
    FreeMem(BitmapHeader);
    FreeMem(BitmapImage)
  End;
END;


Apparement personne n'imprime d'image avec DELPHI !

samedi 30 juillet 2005 à 14:21:26 | Re : BUG IMPRESSION DELPHI

ManChesTer

Administrateur CodeS-SourceS
Arf désolé, je vins seulement de recevoir les mail me disant que se post avais bougé.
Je t'aurais proposé :

procedure PrinterStretchDraw(R:TRect;Bmp:TBitmap);
var
  BmpInfo,
  BmpData     : Pointer;
  BmpInfoSize,
  BmpDataSize : Cardinal;
begin
  GetDIBSizes(Bmp.Handle,BmpInfoSize,BmpDataSize);
  GetMem(BmpInfo,BmpInfoSize);
  GetMem(BmpData,BmpDataSize);
  try
   GetDIB(Bmp.Handle,Bmp.Palette,BmpInfo^,BmpData^);
   StretchDIBits(Printer.Canvas.Handle,R.Left,R.Top,R.Right,R.Bottom,
                 0,0,Bmp.Width,Bmp.Height,BmpData,TBitmapInfo(BmpInfo^),
                 DIB_RGB_COLORS,SRCCOPY);
  finally
   FreeMem(BmpData);
   FreeMem(BmpInfo);
  end;
end;

Pour l'utilisé :

 with printer do
 begin
  Orientation:=poLandscape;
  BeginDoc;
  Canvas.Lock;
  PrinterStretchDraw(Rect(0,0,Printer.PageWidth,Printer.PageHeight),Tonbmp);
  Canvas.Unlock;
  EndDoc;
 end;

Tu peux biensur modifier la taille du Rect...

Bon Coding ....

ManChesTer.


Cette discussion est classée dans : impression, delphi, bug, printer, pic


Répondre à ce message

Sujets en rapport avec ce message

Problème impression [ par bouba ] Bonjour, voici le code dont je me suis servis pour tester l'impression d'une simple chaine.procedure TfrmAssistantAvance.Button1Click(Sender: TObject) RAVE REPORT ET DELPHI 7 [ par jlp_alexandre ] Comment diriger une impression vers un PDF (ou un fichier) avec RAVE REPORT SANS IMPRESSION ?Quelque chose doit m'échapper quelque part.Bien merci par Un bug dans Delphi 6 ? [ par Kane ] Je viens d'ecrire le code suivant sous delphi 6 pro et j'obtient un drole de resultat ! Avant que la feuille devienne progressivement transparente ell impression avec delphi [ par nasersoft ] salutvoila j'ai une application qui genere une base de donnee dbf comporte de 30 a 35 champ, je  veux dir que le nombre de champs n'est pas fix.ma deu impression sous delphi 7 [ par didou2dek ] bonjour,je viens d'acquérir delphi7 et je ne vois plus l'onglet quickreport dont j'avais l'habitude de me servir pour gerer des états.quelqu'un peut i Bug Pentium 4 hyperthreading et applications delphi [ par magic56 ] Bonjour,Je rencontre un problème au lancement de certains programmes que j'ai développé en Delphi. En effet, lorsque l'hyperthreading est lancé, le pr Impression ? [ par stu76 ] Bonjour à tous,Je suis confronté à une question quel composant delphi dois-je utiliser pour l'impression RaveReport ou Quickreport ? Je travail sous d Aide pour Driver d'impression [ par MicFor ] Bonjour,Je suis sur un projet et je cherche de l'aide pour la réalisation d'un driver d'impression spécifique.Le but du programme est de générer un .b L'impression des Etat Sous Delphi 5 [ par sabrinafouad ] Salut tous ... Veuillez SVP m'informer sur les astuces d'impression des etats sous delphi 5 ...Merci ...By FOUAD Mohammed ... Impression Excel via Delphi [ par wisdeco81 ] Bonjour,   Je voudrais lancer l'impression d'une feuille excel directement depuis Delphi.  Tout ce que j'ai réussi a faire pour l'instant c'est import


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales