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

FastReport Discussion :

Modifier des hauteurs / tyles de titres d'un état par l'utilisateur


Sujet :

FastReport

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Archi
    Inscrit en
    Décembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Archi
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2011
    Messages : 38
    Points : 25
    Points
    25
    Par défaut Modifier des hauteurs / tyles de titres d'un état par l'utilisateur
    Bonjour,

    Je remet a jour une appli (sous XE2 - fastreport 4.0) qui génère des états (cahier des charges).

    J'utilise des tfrxdbdataset et trfxreport liaisonné a des tables ADO.

    Les états sont simples : un code article, un intitulé d'article et un descriptif (champ blob )

    ce qui donne :

    01.01.10. Mon article

    mon texte mon texte mon texte
    mon texte mon texte mon texte

    Dans fastreport j'ai une bande master data qui reprend 2 Tfrxmemoview et unTfrxrichview associé a mes champs ' code article' ' intitulé d'article' et un 'descriptif'.

    Je dois a partir de l'application delphi acceder aux propriétés des Tfrxmemoview et Tfrxrichview pour permettre à l'utilisateur d'aller modifier les caractéristiques d'impression (par ex : augmenter la hauteur d'impression du titre ).

    j'ai une form dans delphi sur laquelle j'ai mis tout mes tfrxdbdataset et trfxreport .
    1) je ne vois pas a partir de quel evenement dans le trfxreport coder pour arriver a changer les propriétés
    2) Par quel type de code arriver aux propriétés du trfxreport ? Un exemple m'aiderait.

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    1) je ne vois pas à partir de quel événement dans le trfxreport coder pour arriver à changer les propriétés
    2) Par quel type de code arriver aux propriétés du trfxreport ? Un exemple m'aiderait.
    Je suis sûr d'avoir mis ce code quelque part dans le forum Delphi, mais je ne retrouve plus (bonne recherche). N'utilisant plus cette technique (je préfère proposer le TFrxDesigner), je ne m'en souviens que du principe qui est la même chose que ce que j'utilisais pour Rave et du contexte : à l'époque (je ne sais ce qu'il en est désormais) Fastreport version Embarcadero ne permettait pas d'écrire de script, il fallait donc passer par code. (je repasserai si je retrouve)
    [Edit] voilà, cela n'a pas été trop long avec quelques mots clés j'ai retrouvé au moins une de mes réponses ici

    Si vous avez une version enregistrée, et donc la possibilité de passer par les scripts, des variables d'état peuvent être une solution.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Archi
    Inscrit en
    Décembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Archi
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2011
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    Bonsoir Sergio,

    Merci pour ton retour,

    Je vais commencer a 'gratter' pour voir avec le lien que tu me donnes si je peux m'en sortir.


    'Si vous avez une version enregistrée, et donc la possibilité de passer par les scripts, des variables d'état peuvent être une solution.'

    j'ai une version enregistrée de XE2. La limitation c'est moi, car je ne suis pas développeur full time et mon graduat en informatique commence a dater . . .

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,
    Citation Envoyé par benleq Voir le message
    'Si vous avez une version enregistrée, et donc la possibilité de passer par les scripts, des variables d'état peuvent être une solution.'
    Je parlais d'une version enregistrée de FastReport pas de Delphi
    La version enregistrée de FastReport permettant d'utiliser les scripts la version de base fournie par Embarcadero non (enfin à ma connaissance car les lignes bougent entre versions)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Archi
    Inscrit en
    Décembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Archi
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2011
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    Citation Envoyé par SergioMaster Voir le message
    Bonjour,

    Je parlais d'une version enregistrée de FastReport pas de Delphi
    La version enregistrée de FastReport permettant d'utiliser les scripts la version de base fournie par Embarcadero non (enfin à ma connaissance car les lignes bougent entre versions)
    Bonsoir,
    Cela fonctionne, on peut manipuler pas mal de variable d'impression du coup.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure TF_dtm1.frxReport7bordprixpublicBeforePrint(
      Sender: TfrxReportComponent);
     var a :TfrxComponent;
     begin
    a:= frxReport7bordprixpublic.FindComponent('frxDBDmasterintitulartcli') as TFrxComponent;
    if assigned(a) then
         a.Font.Size:=11;  // change ici la hauteur de caractère à l''impression
    end;
    Merci

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Archi
    Inscrit en
    Décembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Archi
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2011
    Messages : 38
    Points : 25
    Points
    25
    Par défaut Plusieurs titres de hauteur variable
    Bonjour,
    Je suis amené a devoir mettre des hauteurs de titres différents par ex:

    01 titre 1 -> hauteur en 30
    01.10 titre 2 -> hauteur en 20
    ainsi de suite pour les autres titres

    J'ai un champ de controle dans la table qui est imprimée qui defini l'importance du titre

    Dans l'évènement beforeprint j'esperais via le code ci dessous pouvoir changer les hauteurs de titre, mais les hauteurs de titre différents ne s'applique 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
     
    procedure TF_dtm1.frxReport1cgcBeforePrint(Sender: TfrxReportComponent);
     var a,b :TfrxComponent;
     i, compteur : integer ;
     begin
     
    i:=F_Dtm1.TSQL_cgc_cli.RecordCount;
    compteur:=0;
    //repeat
    a:= frxReport1cgc.FindComponent('frxDBDmasterintitulartcli') as TFrxComponent;
     
    if assigned(a) then begin
                        if F_Dtm1.TSQL_cgc_cli.FieldByName('ctrl').Asstring ='1' then a.Font.Size:=30
                        else if F_Dtm1.TSQL_cgc_cli.FieldByName('ctrl').Asstring ='2' then a.Font.Size:=20;
     
                      end;
    J'ai testé également en mettant une boucle, mais le resultat reste le même

    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
     
    procedure TF_dtm1.frxReport1cgcPrintReport(Sender: TObject);
     var a,b :TfrxComponent;
     i, compteur : integer ;
    begin
     
    a:= frxReport1cgc.FindComponent('frxDBDmasterintitulartcli') as TFrxComponent;
     
    i:=F_Dtm1.TSQL_cgc_cli.RecordCount;
    compteur:=0;
     repeat
     
    if assigned(a) then begin
                        if F_Dtm1.TSQL_cgc_cli.FieldByName('ctrl').Asstring ='1' then a.Font.Size:=30 else
                        if F_Dtm1.TSQL_cgc_cli.FieldByName('ctrl').Asstring ='2' then a.Font.Size:=25;
                        //if F_Dtm1.TSQL_cgc_cli.FieldByName('ctrl').Asstring ='4' then a.Font.Size:=20;
                        //if F_Dtm1.TSQL_cgc_cli.FieldByName('ctrl').Asstring ='5' then a.Font.Size:=15;
                      end;
     
      compteur:=compteur +1
     
    until compteur = i;
     
    end;
    J'ai testé dans onpréview sans succés.

    Une petite idée ?

  7. #7
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Des idées sans passer par une version enregistée de fastreport ?
    En tout cas ce n'est pas avec OnBeforePrint de l'état que cela peut fonctionner puisque l'évènement n'est levé qu'une fois.

    Attention, ceci est une hypothése à vérifier
    Il faudrait un évènement "à l'enregistrement", donc plutôt voir au niveau frxdbdataset si c'est possible. Ma suggestion les évènements OnFirst (ne pas oublier le OnFirst si le OnBeforePrint du frxReport n'est pas codé) et OnNext.
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    Archi
    Inscrit en
    Décembre 2011
    Messages
    38
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Archi
    Secteur : Bâtiment

    Informations forums :
    Inscription : Décembre 2011
    Messages : 38
    Points : 25
    Points
    25
    Par défaut
    [QUOTE=benleq;11761609]Sergio,

    Je suis actuellement en Delphi XE2 pro ver 4 avec la version Embarcadero de Fastreport mise a jour à la V6.8 ... mais toujours pas possible de coder dans Fasterport

    Bref, j'ai testé dans le frxdbdataset maitre aux événements :
    On first, On Next et OnOpen (ci dessous)
    sans boucle, avec boucle, en avançant par enregistrement dans ma table maitre . . .

    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
     
    procedure TF_dtm1.frxDBDmasterOpen(Sender: TObject);
     var a,b :TfrxComponent;
     i, compteur,  ctrl  : integer ;
     begin
    TADOmaitre.First;
    i:=F_Dtm1.TSQL_cgc_cli.RecordCount;
    compteur:=0;
    repeat
     ctrl :=StrToInt (F_Dtm1.TSQL_cgc_cli.FieldByName('ctrl').Asstring);
     a:= frxReport1cgc.FindComponent('frxDBDmasterintitulartcli') as TFrxComponent;
     if assigned(a) then begin  //a.Font.Size:=50;
                        case ctrl of //Change titre boite dialogue
         1 : a.Font.Size:=30;
         2 : a.Font.Size:=25;
         4 : a.Font.Size:=20;
         5 : a.Font.Size:=15;
         7 : a.Font.Size:=10;
         9 : a.Font.Size:=7;
         end;
                       end;
     TADOmaitre.Next;
     compteur:=compteur+1;
     
    until compteur = i;
    end;
    Mais rien ni fait. La seule variation de hauteur que j'obtiens est déclenchée lorsque je code dans Onfirst puis dans onNext. Dans ce cas la hauteur de titre varie pour le premier titre dans ma table mais tout les suivants sont identiques.

    Je pense lancer la question chez Fastreport, car la je ne vois plus trop par ou essayer.

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 036
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 036
    Points : 40 941
    Points
    40 941
    Billets dans le blog
    62
    Par défaut
    mais toujours pas possible de coder dans Fasterport
    vous ne pourrez utiliser les scripts qu'avec une version enregistrée de Fastreport (chez fastreport)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    procedure TF_dtm1.frxDBDmasterOpen(Sender: TObject);
    Vous vous trompez d'évènement. Ce n'est pas frxDBMasterOpen mais frxDBmasterFirst pour le début puis frxDBmasterNext pour les autres.

    je pensais à quelquechose comme ça, je ne peux vérifier car je n'ai pas XE2 (je crois avoir commencé avec XE4 pour ce qui est des versions XE) il faut vérifier que le frxDBDataset ait bien les évènements OnNext et OnFirst mais je suis presque sur que oui.

    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
    procedure TF_dtm1.ChangerTaille;
    var a : TfrxComponent;
    begin
     a:= frxReport1cgc.FindComponent('frxDBDmasterintitulartcli') as TFrxComponent;
     if assigned(a) then 
         case TSQL_cgc_cli.FieldByName('ctrl').AsInteger of //Change titre boite dialogue
          1 : a.Font.Size:=30;
          2 : a.Font.Size:=25;
          4 : a.Font.Size:=20;
          5 : a.Font.Size:=15;
          7 : a.Font.Size:=10;
          9 : a.Font.Size:=7;
          else a.FontSize:=50; // ????? 
       end;
    end;
     
    procedure TF_dtm1.frxDBDmasterFirst(Sender: TObject);
    begin
    ChangerTaille; // sauf si la première ligne doit avoir une font de 50 et défini comme tel 
    end;
     
    procedure TF_dtm1.frxDBDmasterNext(Sender: TObject);
    begin
    ChangerTaille;
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

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

Discussions similaires

  1. Colorier des cases a partir d'un nombre indiqué par l'utilisateur
    Par calloo dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 23/10/2018, 16h21
  2. Réponses: 14
    Dernier message: 02/11/2016, 20h15
  3. modifier la hauteur des lignes dans SWT Table
    Par lok9009 dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 18/09/2009, 11h39
  4. Modifier la hauteur des lignes du ListView
    Par David Fouejio dans le forum Windows Forms
    Réponses: 1
    Dernier message: 07/08/2009, 13h50

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