Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6
  1. #1
    Membre habitué
    Homme Profil pro Jean
    Retraité
    Inscrit en
    juillet 2008
    Messages
    244
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : juillet 2008
    Messages : 244
    Points : 109
    Points
    109

    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
    Membre Expert

    Homme Profil pro Gilles
    Enseignant
    Inscrit en
    novembre 2006
    Messages
    893
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2006
    Messages : 893
    Points : 1 084
    Points
    1 084

    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 :
    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 :
    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

  3. #3
    Membre habitué
    Homme Profil pro Jean
    Retraité
    Inscrit en
    juillet 2008
    Messages
    244
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : juillet 2008
    Messages : 244
    Points : 109
    Points
    109

    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 :
    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 :
    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
    Membre Expert

    Homme Profil pro Gilles
    Enseignant
    Inscrit en
    novembre 2006
    Messages
    893
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2006
    Messages : 893
    Points : 1 084
    Points
    1 084

    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

  5. #5
    Membre habitué
    Homme Profil pro Jean
    Retraité
    Inscrit en
    juillet 2008
    Messages
    244
    Détails du profil
    Informations personnelles :
    Nom : Homme Jean
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : juillet 2008
    Messages : 244
    Points : 109
    Points
    109

    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 :
    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
    Membre Expert

    Homme Profil pro Gilles
    Enseignant
    Inscrit en
    novembre 2006
    Messages
    893
    Détails du profil
    Informations personnelles :
    Nom : Homme Gilles
    Âge : 55
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : novembre 2006
    Messages : 893
    Points : 1 084
    Points
    1 084

    Par défaut

    Donc la différence c'est
    Code :
    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.

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •