|
États: Bordure avec dimension variable |
Author(s) Thomas M. Brittell |
|
---Soumis par Thomas M. Brittell---
Contrôle avec bordure de dimension variable.
Télécharger une base de données Access 97 d'exemple.
Fonctionnement.
blanks: StringBLine(StringCnt([Text],Chr(13))+(Int((Len([Text])/46)+0.5))+1)
Il nous faut décider quel contrôle gouverne la hauteur de
l'impression. La plupart du temps, il s'agit d'un champ de type mémo possédant
quelque commentaire ou description.
Dans la requête, on calcule le nombre de lignes requis.
Ceci est accompli de par deux procédures et une règle, cette dernière étant
qu'on utilise une police de caractères à espacement régulier fixe, tel que Courier
ou Courier New.
La première procédure est StringCnt (strIn, strFind).
Cette procédure examine strIn et y dénombre le nombre de strFind
qu'on y retrouve. Dans cet exemple, j'utilise Chr(13), un retour de
chariot. Maintenant, si toutes les lignes possédaient effectivement un retour
de chariot, c'en serait terminé. Malheureusement, ce n'est pas le cas, un
défilement automatique des mots étant la norme, vous risquez de trouver une
vingtaine de lignes pour un retour de chariot. Pour pallier à cela, divisons
la largeur totale que prend le texte par le nombre de caractères qu'on peut
placer par ligne. Ici, dans l'exemple, j'utilise 46 et j'effectue un arrondi.
J'ajoute une ligne comme marge de manoeuvre et rendre la lecture plus aisée de
la dernière ligne. La seconde procédure, StringBLine (intCnt), génère une
ligne blanche basée sur le décompte fourni. Cela fourni l'information requise
pour forcer une boîte à avoir la largeur requise. Minimiser le nombre de
boîtes en les disposant stratégiquement entre les endroits où elles sont
requises (voir l'exemple). Prière de prendre note que le mémo ne possède pas
de bordure, en soi, c'est la boîte qui, par derrière, fourni le cadre.
Considérations. Certes, c'est approximatif, mais pour un
grand nombre de lignes, c'est rapide. Vous pouvez raffiner les calculs. Dans un
cas, j'ai inclus le compte de majuscules, d'espaces et de changement de
lignes... mais cela prit une éternité à calculer. Maintenant, je construit de
petits exemples que je teste pour vérifier si des besoins de raffinement sont
requis ou non.
|