PC SOFT

FORUMS PROFESSIONNELS
WINDEVWEBDEV et WINDEV Mobile

Accueil → WINDEV 2024 → Ajustement automatique des colonnes
Ajustement automatique des colonnes
Débuté par Mickael, 30 aoû. 2004 11:14 - 4 réponses
Posté le 30 août 2004 - 11:14
Bonjours
Existe t il une fonction qui permet d'ajuster automatiquement la largeur
d'une colonne en fonction du nombre de lettre autorisé?
Un peu comme sous l'éditeur, ou on peut faire l'ajustement d'un champ de
saisie en fonction de ses nombres de caractères autorisés.
Merci
Mickael
Posté le 28 septembre 2004 - 13:14
bonjour,

bonne idée,
moi je cherche la manière d'ajuster automatique la largeur des colonnes d'un tableau.
la taille ajustée étant celle du plus long élément de ce tableau.
ce qui me parait normal.
s'il la colonne est vide la largeur devra être celle du titre de la colonne.

j'en ai un peu marre d'ajuster manuellement et sans arrêt la largeur de mes colonnes dès que j'ajoute ou supprime des lignes.

c'est possible de la faire par programmation mais existe t'il un paramètre ou une fonction toute faite?

merci
A+
Posté le 24 novembre 2004 - 23:04
l'instruction tableajuste() fait exactement cela. Ça fonctionne même si j'ajoute des colonnes au tableau en clonant d'une colonne existante. À la fin du traitement d'ajouter des colonnes il suffit d'utiliser cette fonction et le tour est joué.
Posté le 28 février 2014 - 10:10
Bonjour,

TableAjuste() fonctionne en nombre de caractères, si comme moi, vous souhaitez retailler les colonnes en taille sur toute la largeur du tableau (raison esthétique), j'utilise cette fonction :

Procedure TableAjusteVraiment(TABLE)
nNb est un entier
sColonne est une chaîne

nLargeurTotal est un entier
nLargeurInitiale est un entier
nLargeurDynamique est un entier
nTotal_TauxAncrageLargeur est un entier


SI "O" = Majuscule(SetSQLParam(MaFenêtre..Nom, "TableAjusteVraiment(" + TABLE..Nom + ")", "O", Vrai, Faux, "Fonction d'auto ajustement de la taille des colonnes d'un tableau")) ALORS
nNb = TableOccurrence(TABLE,toColonne)

nLargeurInitiale = 0
nTotal_TauxAncrageLargeur = 0
POUR i = 1 A nNb
sColonne = TableEnumèreColonne(TABLE, i)

SI sColonne <> "" ALORS
SI {TABLE..Nom + "." + sColonne, indChamp}..Visible ALORS
SI {TABLE..Nom + "." + sColonne, indChamp}..TauxAncrageLargeur = 0 ALORS
nLargeurInitiale += {TABLE..Nom + "." + sColonne, indChamp}..LargeurInitiale
SINON
nTotal_TauxAncrageLargeur += {TABLE..Nom + "." + sColonne, indChamp}..TauxAncrageLargeur
FIN
FIN
FIN
FIN

nLargeurTotal = TABLE_Dossier..Largeur - 16// - largeur de l’ascenseur
nLargeurDynamique = nLargeurTotal - nLargeurInitiale
SI nLargeurDynamique < 0 ALORS nLargeurDynamique = 0

POUR i = 1 A nNb
sColonne = TableEnumèreColonne(TABLE, i)

SI sColonne <> "" ALORS
SI {TABLE..Nom + "." + sColonne, indChamp}..Visible ALORS
SI {TABLE..Nom + "." + sColonne, indChamp}..TauxAncrageLargeur = 0 ALORS
{TABLE..Nom + "." + sColonne, indChamp}..Largeur = {TABLE..Nom + "." + sColonne, indChamp}..LargeurInitiale
SINON
{TABLE..Nom + "." + sColonne, indChamp}..Largeur = nLargeurDynamique * ({TABLE..Nom + "." + sColonne, indChamp}..TauxAncrageLargeur / nTotal_TauxAncrageLargeur)
FIN
FIN
FIN
FIN
FIN
Membre enregistré
33 messages
Posté le 07 août 2015 - 11:30
Bonjour Jerome

Je trouve ta procédure très intéressante mais je bloque sur SetSQLParam. Que présente t'il ?
Pour l'instant, j'ai mis en commentaire cette condition mais j'aurai aimé en savoir +

Au plaisir de te lire.

A +