Précédent   Forum du club des développeurs et IT Pro > Autres langages > Pascal > Lazarus
Lazarus Forum d'entraide sur Lazarus, l'EDI RAD multiplateforme basé sur Free Pascal
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 10/11/2012, 09h18   #1
ovni76
Membre régulier
 
Homme Jean
Retraité
Inscription : juillet 2008
Messages : 222
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 : 222
Points : 97
Points : 97
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
ovni76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2012, 11h15   #2
selzig
Membre émérite
 
Homme Gilles
Enseignant
Inscription : novembre 2006
Messages : 806
Détails du profil
Informations personnelles :
Nom : Homme Gilles
Âge : 54
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2006
Messages : 806
Points : 954
Points : 954
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
selzig est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2012, 14h23   #3
ovni76
Membre régulier
 
Homme Jean
Retraité
Inscription : juillet 2008
Messages : 222
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 : 222
Points : 97
Points : 97
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+
ovni76 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2012, 15h05   #4
selzig
Membre émérite
 
Homme Gilles
Enseignant
Inscription : novembre 2006
Messages : 806
Détails du profil
Informations personnelles :
Nom : Homme Gilles
Âge : 54
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2006
Messages : 806
Points : 954
Points : 954
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é.
Citation:
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
selzig est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 10/11/2012, 15h36   #5
ovni76
Membre régulier
 
Homme Jean
Retraité
Inscription : juillet 2008
Messages : 222
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 : 222
Points : 97
Points : 97
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"
ovni76 est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 10/11/2012, 16h07   #6
selzig
Membre émérite
 
Homme Gilles
Enseignant
Inscription : novembre 2006
Messages : 806
Détails du profil
Informations personnelles :
Nom : Homme Gilles
Âge : 54
Localisation : France, Calvados (Basse Normandie)

Informations professionnelles :
Activité : Enseignant

Informations forums :
Inscription : novembre 2006
Messages : 806
Points : 954
Points : 954
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
selzig est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 07h49.


 
 
 
 
Partenaires

Hébergement Web