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 :

[Rave Report]Template + Divers


Sujet :

Rave

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 292
    Points : 222
    Points
    222
    Par défaut [Rave Report]Template + Divers
    De la même manière que pour un TChart on peut définir l'apparence au moment du design et se contenter de mettre les données à l'exécution je souhaiterai faire la même chose pour Rave Report. Jusque là ca va.

    Cependant, je souhaiterai dupliquer une page servant de template un certain nombre de fois. Y-a-t-il un moyen simple de dupliquer une page avec, dans le duplicata, tous les objets et tous les formatages (Un clone quoi) ?

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 292
    Points : 222
    Points
    222
    Par défaut
    Première étape réussie !

    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
     
    uses
        ..., RpRave, RpDefine, RpBase, RVClass, RVProj, ...
    ...
    implementation
    ...
    var
            pa: TRavePage;
            rp: TRaveReport;
            gp: TRavePage;
    begin
            RvProject1.Open;
            // Page Globale
            pg := RvProject1.ProjMan.NewGlobalPage;
            // Report
            rp := RvProject1.ProjMan.NewReport;
            // Nouvelle page dans le report
            pa:= rp.NewPage;
            RvProject1.Save;
            RvProject1.Close;
    end;

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 292
    Points : 222
    Points
    222
    Par défaut
    Si quelqu'un passe et peut m'expliquer
    -pourquoi TRavePage n'est mentionnée dans aucune des docs fournies sur le site de Rave Report
    -où trouver la doc correspondante

    Ca serait bien pratique.

    Il me reste la seconde étape le clone. J'ai bien peur qu'il faille l'implémenter.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 292
    Points : 222
    Points
    222
    Par défaut
    Un oubli. Une fois la page créée, elle apparaît bien dans le projet et dans le bon report, cependant j'avais oublié de gérer la liste PageList des pages qui vont être imprimées.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var
       al: TRaveComponentList;
    begin
       if AReport.PageList = nil then 
       begin
            al := TRaveComponentList.Create;
            al.Add(APage);
            AReport.PageList := al;
       end else
       begin
           AReport.PageList.Add(APage);
       end;
    C'est bizarre qu'ils n'aient pas prévu une fonction pour ça. J'en déduis que je l'ai loupée. En tout cas, maintenant, mon rapport a le nombre de pages voulues.

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    292
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 292
    Points : 222
    Points
    222
    Par défaut
    Deuxième étape réussie

    Un composant qui sait s'enregistrer et se charger en mémoire doit pouvoir se cloner. Le problème, il faut un TStreamHelper. Chercher sur google, c'est pas évident.[Edit]Je voulais dire, chercher sur Google n'a rien donné. Je suis même allé sur un forum en hollandais ou qqch comme ça en espérant tourver des liens utiles !![/Edit]

    En fait, la classe se trouve dans RvUtil. Le reste coule de source. Il faut toutefois faire attention au nom du composant puisque le nom est stocké dans le stream.

    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
    27
    28
     
     
            function CloneRavePage(ARavePage: TRavePage): TRavePage;
            var
                    AStreamHelper: TStreamHelper;
                    AStream: TMemoryStream;
                    OldName: string;
                    TempName: string;
            begin
                    AStream := TMemoryStream.Create;
                    AStreamHelper := TStreamHelper.Create(AStream);
                    AStreamHelper.SavePos;
                    ARavePage.SaveToStreamHelper(AStreamHelper);
                    AStreamHelper.RestorePos;
     
            	OldName := ARavePage.Name;
                    TempName := GetNonConflictingName();
                    ARavePage.Name := TempName;
     
                    result := TRavePage.Create(ARavePage.Owner);
                    result.LoadFromStreamHelper(AStreamHelper);
                    AStreamHelper.Destroy;
                    AStream.Destroy;
     
                    TempName := GetNonConflictingName();
                    result.Name := TempName;
                    ARavePage.Name := OldName;
            end;
    Donc,

    1 Créer dans Rave une page template. Ce sera une page globale par exemple.
    2 Ouvrir le projet dans le programme
    3 Cloner le template
    4 Le remplir
    5 Ne pas oublier de placer la page au bon endroit en définissant la propriété parent avec le report adequat.
    6 Mettre à jour la liste des pages et si besoin est, gérer le positionnement avec les fonctions de liste habituelles.

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

Discussions similaires

  1. Editions XMLRAD 7 - Rave Report
    Par clisson dans le forum XMLRAD
    Réponses: 7
    Dernier message: 18/10/2005, 15h06
  2. [Rave report] RVSystem
    Par Guile dans le forum Rave
    Réponses: 4
    Dernier message: 17/08/2004, 16h32
  3. [urgent] Rave report je n'en peux plus->impression via co
    Par zax-tfh dans le forum Bases de données
    Réponses: 2
    Dernier message: 29/02/2004, 09h15
  4. [Rave Report][StringField]
    Par PpPool dans le forum Rave
    Réponses: 3
    Dernier message: 28/10/2003, 21h34
  5. [Rave Report] problème de création dynamique
    Par Nivux dans le forum Rave
    Réponses: 2
    Dernier message: 24/05/2003, 00h07

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