CADxp: C# - Alignement textes - CADxp

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

C# - Alignement textes

#1 L'utilisateur est hors-ligne   Goud 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 13
  • Inscrit(e) : 20-novembre 18

Posté 18 janvier 2019 - 10:23

Bonjour,

J'aimerai aligner verticalement 3 colonnes de textes sur un layout de présentation comme ceci :
image

La première colonne représente une liste de produit, la seconde le fournisseur et la dernière l'épaisseur.

J'ai essayé de tout joindre dans un seul texte (MText) et manipuler la tabulation de chaque ligne en fonction de la longueur (longcount) de chaque string (Produit/Fournisseur etc..). Mais chaque lettre n'a pas la même largeur donc je me trouve souvent avec une erreur d'une tabulation.

J'ai essayé de créer 3 MText pour faciliter l'alignement horizontal mais je n'arrive pas à gérer l'alignement vertical du aux accents qui agrandissent la hauteur de la ligne dans laquelle ils sont.
image2

Auriez-vous une solution efficace ?
Merci
0

#2 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11259
  • Inscrit(e) : 02-septembre 05

Posté 18 janvier 2019 - 17:07

Salut,

Personnellement, j'utiliserais un tableau.
Mais si tu veux faire ça en texte multiligne, tu peux utiliser les colonnes des textes multiligne (inconvénient la largeur de toutes les colonnes est identique.
Dans le contenu du texte multiligne, "\P" signifie un saut de ligne et "\N" un saut de colonne. On remplit les lignes d'une colonne avant de passer à la suivante.

Exemple :
var produits = new[] { "ALSAN Primaire P100", "EIF Sopradère", "Elastophène Flam 70" };
var fournisseurs = new[] { "Soprema", "Soprema", "Soprema" };
var epaisseurs = new[] { "ép. 10 mm", "ép. 10 mm", "ép. 10 mm" };
var mtext = new MText();
mtext.Contents =                                    // contenu du texte multiligne
    string.Join("\\P", produits) + "\\N" + 
    string.Join("\\P", fournisseurs) + "\\N" + 
    string.Join("\\P", epaisseurs);
mtext.TextHeight = textHeight;                      // hauteur de texte
mtext.SetStaticColumns(textHeight * 20.0, 0.0, 3);  // largeur de colone = 20 * hauteur de texte
mtext.Height = textHeight * 2 * produits.Length;    // hauteur du mtext (2 * hauteur de texte * nombre de lignes)

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#3 L'utilisateur est hors-ligne   Goud 

  • Member
  • PipPip
  • Groupe : Membres
  • Messages : 13
  • Inscrit(e) : 20-novembre 18

Posté 01 février 2019 - 16:37

Salut gile,

Merci de ta réponse, j'avais laissé un peu ce problème de côté.. Malheureusement ta solution d'utiliser les colonnes dans le texte multiligne ne permets pas l'alignement vertical des lignes (ou j'ai oublié quelque chose..).
Je pense que la solution se trouve plutôt du côte du tableau, je reviens vers toi en cas de questions.

Merci
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)