2010-10-15 7 views
0

Fondamentalement, il existe un formulaire avec champ de texte, je dois créer le contenu fourni par l'entreprise dans ce champ de texte, Une fois le document est enregistré, puis afficher en vue. Basé sur la valeur de clé, il regarde dans le contenu du champ de texte, puis envoyé à l'utilisateur concerné par courrier électronique. Au moment de créer le contenu a essayé de faire le texte aligner en appuyant sur la barre d'espace, Retour espace et etc etc Mais j'ai quand même trouvé le courrier électronique est livré sans alignement qui semble bizarre.Alignement pour le champ de texte dans les notes Lotus

Le contenu est affiché comme ci-dessous.

Label: Date: Description: 

Test1 TestDate1   Abcdefghijklmnopqrstuvwxyz 
Test2  TestDate2  asdfasf 
Test3 TestDate3    asdfasdfasdfasdf 

Voir le problème d'alignement dans Date et description. Le contenu devrait s'afficher comme ci-dessous.

Label: Date: Description: 

Test1 TestDate1 Abcdefghijklmnopqrstuvwxyz 
Test2 TestDate2 asdfasf 
Test3 TestDate3 asdfasdfasdfasdf 

Dans la colonne d'étiquettes tout l'étiquette doit venir avec un bon alignement,
dans la colonne date toutes les dates doivent être affichées avec un alignement correct et
sous Description toutes description doit venir dans l'alignement approprié.

Répondre

0

Vous devrez utiliser une police monospace pour votre champ de texte (comme démontré ci-dessus) et vous devrez modifier vos données derrière ce champ de texte. Supposons que vous ayez trois champs de saisie à valeurs multiples dans un formulaire: txtLabel, txtDate et txtDescription. Vous avez également un champ supplémentaire appelé "affichage" pour les afficher. Le champ d'affichage pourrait avoir une formule comme ceci:

txtLabel + " " + txtDate + " " + txtDescription 

(Notez le champ d'affichage doit être réglé à valeurs multiples, et la police doit être réglé par messagerie nouvelle ou une police à espacement fixe)

Cela fonctionne très bien si les champs d'entrée ont tous la même longueur. Si ce n'est pas le cas, vous devez les forcer à avoir les mêmes longueurs. Pour ce faire, vous pouvez changer votre code à quelque chose comme ceci:

@For(n :=1; n<[email protected](txtLabel); n:= n + 1; 
FIELD displayTable := displayTable + @Left(txtLabel[n]; 10) + @Repeat(" "; 11 - @Min(10; @Length(txtLabel[n]))) + @Left(txtDate[n]; 10) + @Repeat(" "; 11 - @Min(10; @Length(txtDate[n]))) + @Left(txtDescription[n]; 20) + @NewLine); 
displayTable 

Je l'avoue, c'est assez laid. Mais allons le décomposer. Nous avons ajouté trois éléments clés:

D'abord, la boucle @For. Cela nous permet de travailler sur chaque rangée individuellement. C'est nécessaire car la formule @Length doit agir sur une seule valeur de notre champ multi-valeur. Deuxièmement, dans la boucle, nous avons limité la longueur des colonnes en utilisant la formule @Left. txtLabel et txtDate ne peuvent pas contenir plus de 10 caractères, et txtDescription est limité à 20 caractères. Troisièmement, nous avons ajouté la quantité appropriée d'espaces afin que la colonne suivante s'aligne correctement. Les calculs @Repeat (@Min (@Length())) testent la longueur des champs. Le résultat est le nombre d'espaces que nous devons ajouter pour créer 10 caractères, plus un espace pour le remplissage des colonnes. Par exemple, si txtLabel a 10 caractères, la formule @Repeat ajoute un espace supplémentaire entre txtLabel et txtDate. Si txtLabel a 3 caractères, la formule @Repeat ajoutera 8 espaces. Le résultat est le suivant:

txtLabel txtDate txtDescription 
Stack Over 6/1/2009 Programming Question 
Superuser 10/1/2009 Computer questions 
Server Fau 2/1/2010 IT/Admin questions 
Questions connexes