web-dev-qa-db-fra.com

Alignement vertical du texte dans Crystal Reports?

Dans l'éditeur Crystal Reports fourni avec Visual Studio (2008), est-il possible d'aligner du texte au centre d'une zone de texte plutôt qu'en haut?

Je ne trouve cette option nulle part et une recherche Google n'est pas encourageante, mais je ne peux tout simplement pas me convaincre qu'ils n'incluraient pas une fonctionnalité aussi évidente.

29
George Mauer

Il n'y a pas d'alignement vertical pour les rapports cristallins que j'ai pu trouver. Une solution de contournement potentielle consiste à programmer des sauts de ligne.

22
contactmatt

Je ne trouve pas d'option pour aligner verticalement du texte dans une étiquette, mais vous pouvez aligner verticalement des étiquettes dans une section. Utilisez les lignes directrices horizontales sur la marge gauche pour ajuster l'alignement. Vous devrez peut-être cliquer avec le bouton droit sur la ligne directrice et décocher "Snap to Grid" pour obtenir un positionnement plus précis.

horizontal guideline

2
Lily

Vous pouvez y parvenir avec des chaînes, car vous verrez un onglet paragraphe au lieu d'un nombre lorsque vous entrez dans le menu FORMAT FIELD. Pour faire de votre nombre une chaîne, vous devez le formater comme un champ de formule:

chr(13) + chr(10) + totext(mynumber,0)

Puis dans le menu FORMAT FIELD sélectionnez - Interligne: multiple sur: ,2

Vous devrez peut-être expérimenter avec la valeur 0,2 jusqu'à ce que vous trouviez votre numéro (c'est-à-dire une chaîne préfixée par un retour chariot) bien centré au milieu de votre boîte.

Santé, Chilly

1
Chillywinter

Alignement vertical avec des sauts de ligne de programmation. Algorithme pour une cellule:

  1. Comptez le nombre de caractères dans les données (iTextLen).
  2. Recherchez le nombre de lignes de texte dans la cellule (iLineNum). Calculé empiriquement.
  3. Trouvez la longueur de ligne en caractères (iLineLen). Calculé empiriquement.
  4. Calculez le nombre de demi-sauts par la formule (iLineNum — 1) — (iTextLen / iLineLen).

    @formula dans la syntaxe cristalline:

    Local NumberVar iLineNum:= 5;
    Local NumberVar iLineLen:= 30;
    Local NumberVar iTextLen:= Length({DataSource});
    
    Local StringVar sRet:= '';
    Local NumberVar i;
    Local NumberVar iLinesNum:= Truncate(iLineNum - 1) - Truncate(iTextLen / iLineLen); 
    For i:= 1 to iLinesNum Do ( sRet:= sRet + chr(13) );
    
    sRet
    
  5. Ajoutez une formule en haut et en bas des données. Les objets texte ressembleront à ceci:
    {@formula}{DataSource}{@formula}

    Taille de police de @formula doit être réduit de moitié en taille de police {DataSource}. Par exemple, si la taille de police de {DataSource} égal à 20, le @formula doit être égal à 10: formula-position-and-font-size

L'algorithme fonctionne mieux avec une police à espacement fixe, mais avec une police proportionnelle, il fonctionne dans la plupart des cas.

L'algorithme pour plusieurs cellules ne diffère que par le fait que iLineNum sera le nombre maximal de caractères dans les données de toutes les cellules.

0
Slava Mokerov