Précédent   Forum des professionnels en informatique > Logiciels > Solutions d'entreprise > Business Intelligence > Rave
Rave Forum d'entraide sur Rave Reports
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 20/10/2007, 09h45   #1
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 632
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 3 632
Points : 4 535
Points : 4 535
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 :
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
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/10/2007, 08h34   #2
Modérateur
 
Avatar de SergioMaster
 
Serge Girard
Développeur informatique
Inscription : janvier 2007
Messages : 3 632
Détails du profil
Informations personnelles :
Nom : Serge Girard
Âge : 55
Localisation : France

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

Informations forums :
Inscription : janvier 2007
Messages : 3 632
Points : 4 535
Points : 4 535
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 :
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 .....
__________________
La seule chose absolue dans un monde comme le nôtre, c'est l'humour. » Albert Einstein
J'entends et j'oublie. Je vois et je me souviens. Je fais et je comprends . Confucius
SergioMaster est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/11/2007, 19h46   #3
Membre éclairé
 
Avatar de chtiot
 
Inscription : octobre 2002
Messages : 383
Détails du profil
Informations forums :
Inscription : octobre 2002
Messages : 383
Points : 330
Points : 330
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 :
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;
chtiot est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 11h48.


 
 
 
 
Partenaires

Hébergement Web