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

SAP Crystal Reports Discussion :

[CR 10] Centrer verticalement un élément dans une boîte


Sujet :

SAP Crystal Reports

  1. #1
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut [CR 10] Centrer verticalement un élément dans une boîte
    Bonjour

    Cette fois, il s'agit de centrer verticalement un élément dans une boîte. Vous pouvez voir un aperçu de ce que j'ai ici (capure d'écran).

    L'état affiche la liste des numéros de téléphones et des codes PUK des puces d'un client; l'ensemble est groupé par ordre alphabétique de nom de client. J'ai crée un sub-group header de sorte que les groupes sont entourés d'un Box (dans la capture d'écran, je n'ai montré qu'un seul groupe). Mais j'aimerai changer la position du groupe Nom de sorte que quelque soit la hauteur du Box, que le nom soit toujours à 50% du bord horizontal supérieur. Concrètement, j'aimerai avoir un état comme cà.

    J'ai cherché comment je pouvais le faire à partir de formule mais je ne sais pas comment on peut spécifier la position d'un objet

    Merci pour votre aide.

  2. #2
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    bonjour,
    si tu étais sûr que le groupe tient sur la page courante tu pourrais le faire par une formule
    en interrogeant le count(detail) pour un groupe et en ajoutant autant de retour à la ligne
    que la moitié arrondie à l'inférieur.
    Mais tu ne peux pas savoir si un groupe tient sur une page avant de l'ecrire.
    Le problème est lié aux ruptures de page
    Crystal le sait mais l'information ne peut pas être connue à l'execution dans une formule.
    J'y réfléchis, si j'ai une idée je ferais un edit de ce message.
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  3. #3
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Hello,
    Extra les capture d'écran. Comme quoi une image vaux mieux qu'un long discourt.

    par contre je dirais que c'est casi impossible.
    Une piste toute fois. Si tu connais le nombre de recorde que tu as pour un groupe, alors tu place ton champs DD dans le détail comme le numéro de téléphone et le PukCode, et tu joue avec la forumle "Suppress"....

  4. #4
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Citation Envoyé par L.nico
    J'y réfléchis, si j'ai une idée je ferais un edit de ce message.
    Merci

    Citation Envoyé par sur_uix
    je dirais que c'est casi impossible.


    Je ne peux pas connaître à l'avance le nombre d'enregistrement pour un groupe, mais je pense qu'un groupe ne devrait pas tenir sur plus d'une page (il faudrait que le client soit fournisseur de téléphone quelque part ) Donc, cà ne me gène pas trop de faire un saut de page===>
    Citation Envoyé par L.nico
    Mais tu ne peux pas savoir si un groupe tient sur une page avant de l'ecrire.
    On peut supposer que si

    Merci

  5. #5
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Dans l'hypothèse que :
    - 1 groupe tient sur une page
    - 1 Page par client (pour éviter les ruptures de pages en plein milieu des groupes).

    On spécifie que la section Début de groupe s'affiche en fonds de section suivante.

    On ajoute en début de groupe une formule (Formule non testée mais ca doit ressembler à ça) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Formula = ReplicateString(Chr(13),Abs(Count(Phone,Group)/2)) & {Client.Nom}
    enfin c'est une idée .... mais on peut adapter ce code aussi pour qu'il fonctionne avec l'idée de Sur_uix
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  6. #6
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Je teste cà et je dis ce que cà donne
    Je vais aussi voir comment on utilise Suppress.

    J'ai un autre problème en suspend mais cà attendra

    Merci

  7. #7
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Encore une autre solution en relation avec celle de notre ami Sur_uix ...

    Il te faut 2 compteurs
    un que tu réinitialise en début de page (Y)
    et l'autre que tu réinitialise en début de groupe. (Z)

    Pour chaque page tu sais que tu peux faire x lignes
    A chaque fois que tu edites 1 ligne, tu incrémentes Y

    Si tu sais que ton groupe va tenir sur la page car il contient moins de lignes
    que le total restant de la page (x-y), alors tu rends visible la ligne détail
    lorsque Z = Abs(Count({Phone},{client}/2)

    Sinon

    Tu rends visible la ligne lorsque Z = Abs((x-y)/2)

    Donc voilà, c'est une autre idée :

    mais les problèmes subsistent :
    combien de lignes pour 1 page ??
    il te faut quelques part une constante du nombre de lignes par page.
    le problème c'est que c'est liè à l'imprimante et aux marges ....

    et pour la solution précédente :
    la hauteur de la police ne correspond pas à la taille de la section.

    Aucune solution ne peut être exactement juste vu qu'on ne dispose
    pas de toutes les informations.
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  8. #8
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Je risque lire toute la doc de Crystal en une journée

    J'ai fait un test de la fonction ReplicateString, mais cà à un inconvénient . Toutes les lignes sont décallées.
    Je place le champ Test dont la formule est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "BEGIN" + ReplicateString(Chr(13),5) + "END"
    et j'obtiens cette figure

    si je mets la propriété Can grow de ce champ à true, j'obtiens ceci

    J'ai cet effet lorsque je place le champ dans un Header.

    J'ai essayé de placer aussi dans le champ Details, mais c'est pire

    Je ne suis pas sûr de savoir manipuler Suppress, mais dans le Format Field, je coche "Suppress if duplicated" et je tape cette formule :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ({@NumberOfSpace} > 1) Then
        true
    Else
        False
    NumberOfSpace retourne le nombre de lignes détails.

    Mais le décalage subsiste (bien que le BEGIN...END n'apparaît qu'une seule fois).

    Citation Envoyé par L.nico
    Donc voilà, c'est une autre idée :
    Si j'arrive à la mettre en place, je te ferai signe (il faudrait que je sache comment jouer sur la visibilité et d'autres trucs ).
    Si tu as un peu de temps, pourrais tu essayer de réaliser un exemple (dans les conditions de ton choix).

    Merci.

  9. #9
    Membre émérite
    Avatar de L.nico
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2003
    Messages
    1 143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 143
    Points : 2 679
    Points
    2 679
    Par défaut
    Pense à mettre la section en fonds de section suivante dans le cas 1.
    Et tu verras que rien ne va se décaler
    A lire avant de poster
    Si vous avez obtenu la réponse à votre question alors cliquez sur le bouton

  10. #10
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut


    Il faut glisser le Group Header dans la section Détails. Ensuite, la formule à taper après avoir coché l'option Suppress (Menu Format Field)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    if ({#TotalperGroup} <> {@NumberOfSpaceBy2}) Then
        true
    Else
        False
    TotalperGroup est le total par groupe (à la différence de Count, il s'incrémente au fur et à mesure qu'on lit les enregistrements).
    NumberOfspaceBy2 est définit par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Round(Abs(Count({SimCard.PhoneNumber},{Client.Name})) / 2)
    Une capture
    (les noms donnés ne sont que des exemples )

    Citation Envoyé par L.nico
    Pense à mettre la section en fonds de section suivante dans le cas 1.
    (je ne savais pas cà aussi)
    Citation Envoyé par sur_uix
    tu joue avec la forumle "Suppress"....
    Maintenant, je sais jouer avec le Suppress

    Encore merci à tous

  11. #11
    Membre confirmé
    Avatar de sur_uix
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    379
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2002
    Messages : 379
    Points : 550
    Points
    550
    Par défaut
    Merci de poster ta solution. Il faudrait mettre ce poste au chaud..... hein L.nico qu'est-ce que tu en penses ????

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

Discussions similaires

  1. Centrer un élément dans une JFrame
    Par Pulsar360 dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 06/05/2013, 16h32
  2. Centrer verticalement les éléments d'une ligne
    Par codera dans le forum Mise en page CSS
    Réponses: 4
    Dernier message: 23/12/2012, 22h27
  3. contrôler l'absence d'un élément dans une liste donnée
    Par gendalf37 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 12/09/2005, 10h02
  4. ajout éléments dans une balise select
    Par wehtam dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/08/2005, 14h03

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