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

Rave Discussion :

Retailler un Rectangle en fonction de mes données


Sujet :

Rave

  1. #1
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 095
    Points : 41 081
    Points
    41 081
    Billets dans le blog
    62
    Par défaut Retailler un Rectangle en fonction de mes données
    Sur mon Rave report, dans une bande principale , j'ai posé un rectangle
    j'aimerais, selon une valeur de mes données tailler mon rectangle . ça fait un moment que je planche dessus ( à temps partiel ) sans résultat !!!
    bon rave c'est pas mon trip

    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
     
    procedure TForm2.ReceptionsValidateRow(Connection: TRvCustomConnection;
      var ValidRow: Boolean);
    var MyPage   : TRavePage;
        Grid   : TRaveRectangle;
    begin
    MyPage := RvProject1.ProjMan.FindRaveComponent('Report2.MainPage',nil) as TRavePage;
    Grid:=RvProject1.ProjMan.FindRaveComponent('rectangle1',MyPage) as TRaveRectangle;
    if assigned(Grid) then
    With Grid do
      begin
         grid.Width:=<Ma valeur>; ///<--- c'est là 
       end;
    ValidRow:=True;
    end;
    Question 1 : Comment je recupere la valeur de ma donnée ?
    QUestion 2 : j'ai beau mettre une valeur fixe , genre grid.width=5.0 j'ai toujours la même taille (celle dessinée au départ sur mon état)

    Sur , , j'ai raté quelque chose , mais quoi

    merci à tous
    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

  2. #2
    Rédacteur/Modérateur

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

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 095
    Points : 41 081
    Points
    41 081
    Billets dans le blog
    62
    Par défaut Comment je m'en suis sorti
    j'ai résolu mon problème , pas simple , tordu mais ça fonctionne

    a) la largeur ne peut se modifier qu'a l'intérieur du rapport lui même donc
    j'ai rajouté un évènement Rectangle_ONBEFOREPRINT dans l'état .
    Quelle ne fut pas ma surprise lorsque j'essayais de donner des valeurs
    telle que Self.Width:=5,2635 ou 5,67554 , la largeur était toujours identique
    (5) en fait il faut faire self.width:=52635 / 10000 , Rave semble faché avec les valeurs numériques non entières

    au fait width est en quelle unité ? inch alors que mon état et mes paramètres sont en mm , pixels , points ? .... pas clair
    il y aurait aussi des fonctions XI2U, YI2U mais j'ai pas été plus loin , si quelqu'un a un exemple , je suis lecteur


    b) j'ai rajouté un champ calculé à mon dataset , et mis un évènement
    oncalcfields pour calculer la valeur requise

    c) pour la RvDataSetConnexion j'ai rajouté un évenement qui m'as permis de faire les calculs nécessaires au niveau de l'état

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    with Connection do
      begin
         DoGetRow;
         // puis le même calcul que dans (b) 
      end;
    allez donc savoir pourquoi , si j'enlève b) ou c) cela ne marche plus ?

    nota : j'ai simplifié volontairement le problème en ne parlant que d'un rectangle , en fait j'ai utilisé ndgrid pour faire un tableau de nombre de colonnes variable mais de taille fixe etc .....
    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
    Membre averti Avatar de chtiot
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    385
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 385
    Points : 403
    Points
    403
    Par défaut
    bin moi je crée dynamiquement des Rectangle Rave et je n'ai jamais eu de problème pour récupérer ou fixer la largeur :

    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
        rvRect := xDataBand.CreateChild(TRaveRectangle, '_rect_' + xCompo.Name) As TRaveRectangle;
        i2 := xDataBand.ChildCount;
        rvRect.BorderStyle := psClear;
        rvRect.BorderWidth := 0;
     
        if ((xCompo as TMrsLabel).Tag = 2) and
          ((xCompo as TMrsLabel).BarCode = 0) then begin
          rvRect.BorderStyle := psSolid;
          rvRect.BorderWidth := 5;
        end;
     
        bw := StrToInt(FormatFloat('0000', rvRect.BorderWidth));
        bw := PixToMM(bw);
        bwd := bw / 25.4;
     
        rvRect.FillColor := (xCompo as TMrsLabel).Color;
        if rvRect.FillColor = clWhite then rvRect.FillStyle := fsClear;
     
        rvRect.Width := PixToMm((xCompo as TMrsLabel).Width) / 25.4;
        rvRect.Left := PixToMm((xCompo as TMrsLabel).Left) / 25.4;
        rvRect.Top := PixToMm((xCompo as TMrsLabel).Top) / 25.4;
        rvRect.Height := PixToMm((xCompo as TMrsLabel).Height) / 25.4;

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

Discussions similaires

  1. [FOP] Changer le bckground en fonction d'une donnée
    Par lasconic dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 17/02/2005, 16h59
  2. Meilleur méthode pour stocker mes données
    Par cyberlewis dans le forum Windows
    Réponses: 6
    Dernier message: 03/07/2004, 11h53
  3. [Debutant] Stocker mes données en XML ou BDD ?
    Par buffyann dans le forum XQUERY/SGBD
    Réponses: 32
    Dernier message: 10/06/2004, 23h54
  4. Stocker mes données
    Par Le Fou dans le forum C++Builder
    Réponses: 23
    Dernier message: 05/07/2002, 15h02

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