IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Impression sur MacOsX Cocoa


Sujet :

Lazarus Pascal

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mai 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 28
    Par défaut Impression sur MacOsX Cocoa
    Bonjour à tous,

    Pas d'impression possible avec la nouvelle version 2.0 sous Cocoa ?

    Quelqu'un a-t-il vu la possibilité d'imprimer (un simple contenu de canvas, par exemple) en profitant de la pré visualisation, sur le Mac ?

    J'utilise Lazarus 2.0 avec les options 'cocoa' hélas toujours en 32 bits...

    Merci d'avance

    Phil

  2. #2
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Bonsoir

    Pourrais-tu fournir le code que tu utilises ou en cherches tu un ?

    Si tu as déja du code. Est ce que ce code fonctionnait avec une version antérieur ?

    En attendant voici un bout de code que j'utilise pour imprimer un "Canvas" (uniquement tester sous windows. Cela fait un gros moment que je n'ai pas allumé mon Mac)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    uses
      PrintersDlgs,
      Printers;   // Unité utile pour l'impression
     
    Type 
      TfrmMain = class(TForm)
        DlgPrint: TPrintDialog
      private
      end;
     
    procedure TfrmMain.sbtnPrintClick(Sender: TObject);
    var
      LPrinter : TPrinter;
      LBitMap : TBitMap;
      nw,nh : Integer;
     
     Procedure KeepAspectRatio(Const SrcW, SrcH: Integer; Var NewWidth, NewHeight: Integer);
     Var
       w, h: Integer;
     Begin
     
       W := NewWidth;
       H := newHeight;
       H:=(SrcH*W) div SrcW;
       if (H>newHeight) then
       begin
         H:=newHeight;
         W:=(SrcW*H) div SrcH;
       end;
       NewWidth:=W;
       newHeight:=H;
     End;
     
    begin
      if DlgPrint.Execute then
      begin
        LPrinter := Printer;
        LPrinter.Copies := DlgPrint.Copies;
        try
     
          LBitMap := TBitMap.Create;
          nw := LPrinter.PaperSize.Width;
          nh := LPrinter.PaperSize.Height;
          KeepAspectRatio(pnlResultat.Width,pnlResultat.Height,nw,nh);
          LBitMap.Width := pnlResultat.Width;
          LBitMap.Height := pnlResultat.Height;
          pnlResultat.Color:= clWhite;
          pnlResultat.PaintTo(LBitMap.Canvas, 0, 0);
          pnlResultat.Color:= clDefault;
     
          LPrinter.BeginDoc;
         // LPrinter.Title := 'Un titre';
     
          LPrinter.Canvas.CopyRect(Classes.Rect(0, 480, nw, 480+nh),
                   LBitMap.Canvas, Classes.Rect(0, 0, LBitMap.Width, LBitMap.Height));
     
        finally
          LPrinter.EndDoc;
          LBitMap.Free;
        end;
      end;
    end;
    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  3. #3
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mai 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 28
    Par défaut Impression Lazarus / Cocoa
    Bonjour

    Voici le code que j'ai utilisé pour faire le test :

    Sous windows, pas de problème,

    Sous cocoa, rien ! même la prévisualisation Cocoa n'affiche rien. Page blanche à l'impression.

    Si quelqu'un a une idée....et un mac pour tester avec la dernière version de Lazarus !!

    Merci d'avance,

    // code de l'unité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    unit Unit1;
     
     
    {$mode objfpc}{$H+}
     
     
    interface
     
     
    uses
      Classes, SysUtils, Forms, Controls, Graphics, Dialogs,
      Printers,
      StdCtrls, ExtCtrls,
      PrintersDlgs;
     
     
    type
     
     
      { TForm1 }
     
     
      TForm1 = class(TForm)
      DlgPrint: TPrintDialog;
        Button1: TButton;
        Image1: TImage;
        Pnlresultat: TPanel;
     
     
        procedure Button1Click(Sender: TObject);
        procedure Image1Click(Sender: TObject);
      private
     
     
      public
     
     
      end;
     
     
    var
      Form1: TForm1;
     
     
    implementation
     
     
    {$R *.lfm}
     
     
    { TForm1 }
     
     
    procedure TForm1.Button1Click(Sender: TObject);
    var
      LPrinter : TPrinter;
      LBitMap : TBitMap;
      nw,nh : Integer;
     
     
     Procedure KeepAspectRatio(Const SrcW, SrcH: Integer; Var NewWidth, NewHeight: Integer);
     Var
       w, h: Integer;
     Begin
     
     
       W := NewWidth;
       H := newHeight;
       H:=(SrcH*W) div SrcW;
       if (H>newHeight) then
       begin
         H:=newHeight;
         W:=(SrcW*H) div SrcH;
       end;
       NewWidth:=W;
       newHeight:=H;
     End;
     
     
    begin
      if DlgPrint.Execute then
      begin
        LPrinter := Printer;
        LPrinter.Copies := DlgPrint.Copies;
        try
     
     
          LBitMap := TBitMap.Create;
          nw := LPrinter.PaperSize.Width;
          nh := LPrinter.PaperSize.Height;
          KeepAspectRatio(pnlResultat.Width,pnlResultat.Height,nw,nh);
          LBitMap.Width := pnlResultat.Width;
          LBitMap.Height := pnlResultat.Height;
          pnlResultat.Color:= clWhite;
          pnlResultat.PaintTo(LBitMap.Canvas, 0, 0);
          pnlResultat.Color:= clDefault;
     
     
          LPrinter.BeginDoc;
         // LPrinter.Title := 'Un titre';
     
     
          LPrinter.Canvas.CopyRect(Classes.Rect(0, 480, nw, 480+nh),
                   LBitMap.Canvas, Classes.Rect(0, 0, LBitMap.Width, LBitMap.Height));
     
     
        finally
          LPrinter.EndDoc;
          LBitMap.Free;
        end;
      end;
    end;
     
     
    procedure TForm1.Image1Click(Sender: TObject);
    begin
     
     
    end;
     
     
    end.

  4. #4
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Bonjour

    Après

    pnlResultat.PaintTo(LBitMap.Canvas, 0, 0);Peux-tu rajouter LBitmap.SavetToFile('test.bmp'); et vérifier que le bitmap n'est pas vide. Si c'est le cas c'est qu'il y a un soucis en rapport avec le TImage..
    Si tu rajoutes un Label dans "pnlResultat" est-ce que le Label est imprimé ?

    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

  5. #5
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mai 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 28
    Par défaut Impression Lazarus / Cocoa
    Merci de t'interesser à mon cas !!

    Donc, j'ai ajouté cette ligne : Lbitmap.savetofile(extractfilepath(application.exename)+'georges.bmp');.

    Sur PC : ça marche, j'ai bien un contenu dans mon image ! l'impression est correcte.

    Sur MAC : l'image est toute blanche, comme l'est la page blanche !!

    Une idée ? Le PaintTo ne marche pas sur mac....???

    Phil

  6. #6
    Membre averti
    Homme Profil pro
    Formateur en informatique
    Inscrit en
    Mai 2004
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Formateur en informatique

    Informations forums :
    Inscription : Mai 2004
    Messages : 28
    Par défaut
    Citation Envoyé par BeanzMaster Voir le message
    Bonjour

    Après

    pnlResultat.PaintTo(LBitMap.Canvas, 0, 0);Peux-tu rajouter LBitmap.SavetToFile('test.bmp'); et vérifier que le bitmap n'est pas vide. Si c'est le cas c'est qu'il y a un soucis en rapport avec le TImage..
    Si tu rajoutes un Label dans "pnlResultat" est-ce que le Label est imprimé ?

    A+
    J'oubliai ! Le label ajouté sur le Panel n'est présent ni dans l'image sur Mac, ni bien sur à l'impression.
    Par contre ça marche sur PC ! L'image en BMP est bien produite, et l'impression est correcte.

    Phil

  7. #7
    Membre Expert
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Billets dans le blog
    2
    Par défaut
    Bonsoir

    Cocoa n'étant toujours pas en version stable, il n'est pas étonnant que certains problèmes subsistent. Il n'y a d'ailleurs aucun rapport de bogue ouvert à ce sujet dans le bugtracker. Il serait bon d'en faire un.

    Essaye de remplacer pnlResultat.PaintTo(LBitMap.Canvas, 0, 0); par LBitmap.Canvas.CopyRect(Rect(0,0,pnlResultat.ClientWidth, pnlResultat.ClientHeight),pnlResultat.Canvas, pnlResultat.ClientRect);
    A+
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

    Mes projets sur Github - Blog - Site DVP

Discussions similaires

  1. [CR] débuter l'impression sur une étiquette X
    Par theflamme dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 11/01/2005, 08h47
  2. Enlever le boutton impression sur une image !
    Par Gab-Gab dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 13/11/2004, 23h30
  3. [CR9] impression sur papier à entête
    Par liosec dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 30/08/2004, 10h52
  4. [CR10][ASP.NET]Impression sur le poste Client
    Par David.V dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 30/04/2004, 13h41
  5. [TP]Impression sur port USB
    Par haypo dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 18/07/2003, 11h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo