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 :

Imprimer un fichier issu de Lazreport [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 385
    Points : 223
    Points
    223
    Par défaut Imprimer un fichier issu de Lazreport
    Bonjour,
    Je suis sous Linux et je découvre Lazreport avec la version Lazarus 1.0.2.
    A part des blocages complets de Lazarus en utilisant certaines fonctions de Lazreport, que je n'ai pas encore réussi à préciser, j'ai réussi avec la doc de la FAQ à construire un rapport me convenant.
    La résolution de mon problème est peut-être simple mais je n'ai pas encore trouvé la solution :
    Depuis l'aperçu je peux imprimer mon rapport amis comment faire la même chose dans une appli ? J'arrive à une prévisualisation mais après ?
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour Jean,

    Vous n'obtenez pas le champ Imprimante sur vos états lors de l'exécution du programme ?


    Je n'utilise pas lazReport directement sur des connecteurs mais sur des TStringGrids.
    Je viens de vérifier sur un code recompilé avec la 1.02 sous Win et Nux.
    Dans mes codes :
    le *.lfm
    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
    object frReport1: TfrReport
        InitialZoom = pzDefault
        Options = []
        PreviewButtons = [pbZoom, pbLoad, pbSave, pbPrint, pbFind, pbHelp, pbExit]
        DataType = dtDataSet
        OnGetValue = frReport1GetValue
        OnEnterRect = frReport1EnterRect
        left = 920
        top = 496
        ReportForm = {
          19000000
        }
      end
     [A partir d'ici sans intérêt]
     object Filas: TfrUserDataset //Pour la lecture de la TStringGrid
        OnCheckEOF = FilasCheckEOF
        OnFirst = FilasFirst
        OnNext = FilasNext
        left = 968
        top = 496
      end
      object frRoundRectObject1: TfrRoundRectObject //Pour les rectangles arrondis
        left = 864
        top = 496
      end
    Vos PreviewButtons contiennent-il l'option pbPrint ?

    Sinon pour le .pas :
    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
    uses [...]LR_Class, LR_DSet, LR_RRect,[...]
     
    procedure TForm1.FormCreate(Sender: TObject);
    begin
     [...]
     gsExePath :=  IncludeTrailingPathDelimiter(ExtractFilePath(Application.ExeName));
      gsReportPath := IncludeTrailingPathDelimiter(gsExePath + csReportPath);
    [...] 
     
    procedure TForm1.FormShow(Sender: TObject);
    begin
      frReport1.LoadFromFile(gsReportPath+'Resultat.lrf');
      [...]
    end;
     
    procedure TForm1.Button11Click(Sender: TObject);
    begin
       frReport1.ShowReport;
    end;
    Vous avez visiblement réglé votre problème avec le DataModule. J'avais rencontré une fois ce problème. Lorsque le DataModule n'était pas ouvert (ie affiché) dans l'IDE, la "connexion" avec le lazReport en csDesigning ne fonctionnait pas... Mais cette blague a dû être réglée depuis longtemps. Donc c'était autre chose. Par curiosité ?

    J'ai du mal (et j'ai abandonné) avec les TDataSet->lazReport et j'ai préféré utiliser les TStringGrids->lazReport. De toute façon, comme je n'utilise pas les dbXXXX mais les TStringGrids, j'y trouve peu d'inconvénients.

    Hormis une instabilité épisodique mais assez récurrente du "strech" des champs, le lazReport me convient. Et puis, il n'y a pas grand chose d'autre. Par contre, le TfrCompositeReport ne fonctionne pas, pas plus d'ailleurs que celui de son "ancêtre". Cela me gêne beaucoup : par exemple, quand j'édite les bulletins scolaires, un par un, cela m'empêche ensuite de les réunir en un seul document (.pdf) pour archivage... Vraiment dommage, et sans solution semble-t-il même à moyen terme.

    Cordialement. Gilles
    Dernière modification par Invité ; 10/11/2012 à 11h37.

  3. #3
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 385
    Points : 223
    Points
    223
    Par défaut
    Salut Gilles,
    Première précision :
    Je n'ai pas l'affichage de la ligne de boutons à l'exécution de mon application d'essai de lazreport mais elle est bien présente dans l'aperçu, lors de la création du rapport, et active puisque je peux imprimer mon rapport.

    Deuxième précision :
    Dans mon fichier ureport.lfm je n'ai pas toutes les informations des boutons de votre exemple
    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
    object Freport: TFreport
      Left = 250
      Height = 638
      Top = 250
      Width = 996
      Caption = 'Freport'
      ClientHeight = 638
      ClientWidth = 996
      LCLVersion = '1.0.2.0'
      WindowState = wsMaximized
      object Pboutons: TPanel
        Left = 0
        Height = 50
        Top = 588
        Width = 996
        Align = alBottom
        ClientHeight = 50
        ClientWidth = 996
        Color = 11924732
        ParentColor = False
        TabOrder = 0
        object Bprepare: TBitBtn
          Left = 40
          Height = 30
          Top = 10
          Width = 180
          Caption = 'Prépare l''impression'
          Glyph.Data = {
    pourtant dans l'inspecteur d'objets ils sont tous à True même pbPrint

    Troisième précision :
    Le problème du DataModule n'est pas résolu, pour mes essais je suis revenu aux composants classiques déposés sur la fiche.

    Dernière précision :
    L'affichage du rapport se fait correctement avec la commande de mon bouton Bprepare et l'imprimante est bien trouvée avec Bprint.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    procedure TFreport.BprepareClick(Sender: TObject);
    begin
      frReport.LoadFromFile('essai00.lrf');
      frReport.ShowReport;
     
    end;
     
    procedure TFreport.BprintClick(Sender: TObject);
    begin
      PrintDialog1.Execute;
     
    end;
    Je peux essayer la proposition de votre exemple de fichier *.pas mais avant j'aimerai avoir des explications sur les instructions du TFormCreate proposé je ne suis pas un spécialiste mais j'aime savoir ce que je réalise.
    A+

  4. #4
    Invité
    Invité(e)
    Par défaut
    Rebonjour,

    Le TFormCreate c'est uniquement pour définir le répertoire où sont stockés les .lrf.

    Pour le reste, le .lfm que je vous ai transmis est celui de Win. Je suppose que c'est le même sous Nux.
    Je pars sous Nux et je regarde de plus près.

    Bon, je suis sur une Ubuntu 12.04 avec un Lazarus 1.02 FPC 2.6. J'ai effacé le project/lib/x86_64-linux et depuis je reproduis parfaitement votre problème !

    Je n'ai pas ma Squeeze sous la main avec laquelle j'ai réalisé le programme sous Nux et dont le programme compilé fonctionne ! J'ai également un problème d'affichage à partir du moment où j'ai sollicité le composant frReport1 dans l'IDE. Ma Form apparaît en double

    A la compilation, de manière non-bloquante, il m'est signalé que LR_View n'est pas utilisé.
    unit1.pas(10,39) Hint: Unit "LR_View" not used in Unit1
    Mais le projet se linke jusqu'au bout et j'obtiens un exécutable qui se lance et ne présente aucun preview lors d'une demande d'impression.
    Gilles
    Dernière modification par Invité ; 10/11/2012 à 15h33.

  5. #5
    Membre actif
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2008
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juillet 2008
    Messages : 385
    Points : 223
    Points
    223
    Par défaut
    Gilles,
    En cherchant sur le net j'ai trouvé la solution à mon problème et la voici, sauf que je ne passe par l'affichage de la ligne de bouton

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TFreport.BprintClick(Sender: TObject);
    begin
      Frreport.LoadFromFile('essai00.lrf');
      Frreport.PrepareReport;
      Frreport.PrintPreparedReport(' ',1);
      PrintDialog1.Execute;
     
    end;
    La première ligne n'est utile que si on ne passe pas par la prévisualisation
    Dans la ligne Frreport.PrintPrepareReport(' ', 1); L'espace donne le numéro de la page en type caractère, si espace c'est toutes les pages du rapport et le 1 correspond au nombre de copies à imprimer du même rapport.
    Donc pour cet essai je suis arrivé au résultat recherché.
    Concernant votre problème d'impression de bulletin de note j'ai lu sur le net qu'il fallait utiliser TfrCompositeReport mais pour l'instant c'est loin de mon exploration de lazreport
    Donc fin du post et A+ sur les "ondes"

  6. #6
    Invité
    Invité(e)
    Par défaut
    Donc la différence c'est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Frreport.PrepareReport;
    Frreport.PrintPreparedReport(' ',1);
    Le début étant commun. Cela n'explique pas pourquoi le code compilé sur la Squeeze (et identique à Win) fonctionne correctement alors que le résultat produit par un [F9] après un clean sur l'Ubuntu ne fonctionne pas.
    Je ne peux pas tester parce que ma wubi-ubuntu-12.04 ne veut plus démarrer suite à son plantage. A la rigueur tant mieux, parce que je ne supporte pas ni sa lenteur, ni son nouveau système de menu...

    Pour le LR_VIEW, c'est lié à un composant frPREVIEW que j'avais utilisé pour le TfrComposite et que j'ai enlevé ensuite. Pour ce dernier je me suis fait une raison.

    Donc bon WE.
    Cordialement. Gilles

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Imprimer automatiquement fichiers de plusieurs formats
    Par lutin511 dans le forum Windows
    Réponses: 5
    Dernier message: 07/12/2005, 18h38
  2. Comment imprimer un fichier text existant?
    Par AODRENN dans le forum Langage
    Réponses: 2
    Dernier message: 12/09/2005, 17h26
  3. Imprimer un fichier EXCEL
    Par bianconeri dans le forum C++Builder
    Réponses: 3
    Dernier message: 16/03/2005, 11h15
  4. Imprimer un fichier texte avec un script vbs
    Par Persons dans le forum Windows
    Réponses: 3
    Dernier message: 23/12/2004, 16h47
  5. [Imprimer] Imprimer un fichier avec Java
    Par gwendo dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 13/11/2004, 20h23

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