Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Bonjour à tous,
voici mon problème,
je voudrai redimensionner la taille de mes colonnes à la taille maximum de la valeur des colonnes.
par exemple : colonne nom, j'ai deux lignes ramener par le retrieve qui sont : TOTO et TOUTOU
la valeur maximum de la colonne nom c'est TOUTOU, je voudrai que ma colonne nom prenne la largeur de TOUTOU.
Je ne sais pas si je me suis bien fait comprendre.
Par avance merci.
Hors ligne
vanille a écrit:
Bonjour à tous,
voici mon problème,
je voudrai redimensionner la taille de mes colonnes à la taille maximum de la valeur des colonnes.
par exemple : colonne nom, j'ai deux lignes ramener par le retrieve qui sont : TOTO et TOUTOU
la valeur maximum de la colonne nom c'est TOUTOU, je voudrai que ma colonne nom prenne la largeur de TOUTOU.
Je ne sais pas si je me suis bien fait comprendre.
Par avance merci.
bijour,
il suffit de multiplier le nombre de valeur par rapport à la taille d'une seule valeur.
tu determines , sur ta datawindow, une colonne invisible, ne pouvant contenir qu'un Caractère.
et tu te bases par rapport à celle la... celle-ci prenant en compte la taille de la colonne, du caractere, ect...
voila voilou
Hors ligne
Merci pour ton aide mais comme je suis un peu novice dans l'art, je n'ai rien compris.
Hors ligne
Bonjour et bienvenue, si j'ai bien suivi le principe est de calculer la largeur de N caractères en extrapolant la taille de 1 caractère.
Attention : cela fonctionnera parfaitement uniquement avec les polices de caractères à chasse fixe (ex : courier)
EDIT : j'ai un doute datastore= pas de control
s'agit-il en fait de la taille de la colonne de données char(n) ? le cas échéant dans quel but ?
Hors ligne
Merci pour ton accueil eRaSorZ
j'ai besoin de redimensionner mes colonnes à la taille de la valeur maximale afin qu'à l'impression les utilisateurs ne se retrouvent pas avec des colonnes tronquées.
je vais t'expliquer depuis le début.
je dois afficher (valable aussi pour l'impression) des colonnes selon des critères choisis par l'utilisateur.
par exemple : lorsque l'utilisateur a choisi de chercher des personnes à partir d'une date qu'il a entré, il veut voir à l'écran la date, le nom et le prénom, s'il rentre juste le nom, il veut juste voir le le prénom puis le nom après. => donc l'ordre des colonnes n'est pas toujours le même.
voici ce que j'ai fait
1. j'ai une datawindow dw1 de type tabular qui ramène mes données issues de la table selon les critères choisis par l'utilisateur. (les colonnes sont : date, nom et prénom)
2. j'ai crée une datawindow dw2 de type external - grid avec les mêmes nombres de colonnes (les colonnes sont col1,col2 et col3)
3. je fais un rowscopy de la dw1 vers la dw2
4. le rajoute les entêtes dw2.modify("col1.text='Date'") etc
après avoir tout insérer, je voudrai redimensionner mes colonnes de tel sorte à ce que les colonnes ne soient pas trop larges ou trop petites
je ne sais pas si tu m'as compris.
En tous les cas, MERCI pour votre aide précieux.
Hors ligne
Donc c'est effectivement une datawindow (et non un datastore...)
Le mieux serait d'avoir une DW grid avec les colonnes nom,prénom,date ajustée à la bonne taille dès le départ
ensuite l'utilisateur (si tu l'autorise) peut modifier la largeur des colonnes ou les déplacer à sa guise
Sinon par script :
// position dw_1.modify( "column_1.x=100" ) // largeur dw_1.modify( "column_1.width=500" )
Hors ligne
d'accord pour l'affichage mais en ce qui concerne l'impression?
c'est surtout l'impression qui m'inquiète.
à savoir que j'ai les PFCs à ma disposition mais je ne sais pas l'utiliser.
Hors ligne
Autre astuce de sioux
Attention il faut suivre :
1 - Poser une colonne (string) avec la propriété "autosize height" de cochée
2 - Mettre le paramètre escapement à 900 (90 degré) dans l'onglet font des propriété de la colonne
3 - Mettre la valeur à mesurer dans la colonne
4 - Récupérer la propriété Height de la colonne => c'est la longueur du texte en Pixel
Bon il faut encore tester le truc.... J'ai juste testé vite fait dans le painter DW.
Hors ligne
Chrnico a écrit:
Autre astuce de sioux
Attention il faut suivre :
1 - Poser une colonne (string) avec la propriété "autosize height" de cochée
2 - Mettre le paramètre escapement à 900 (90 degré) dans l'onglet font des propriété de la colonne
3 - Mettre la valeur à mesurer dans la colonne
4 - Récupérer la propriété Height de la colonne => c'est la longueur du texte en Pixel
Bon il faut encore tester le truc.... J'ai juste testé vite fait dans le painter DW.
Est-ce que qq peut faire le test avec un run ? j'ai pas d'appli sous la main....
Hors ligne
Chrnico a écrit:
Chrnico a écrit:
Autre astuce de sioux
Attention il faut suivre :
1 - Poser une colonne (string) avec la propriété "autosize height" de cochée
2 - Mettre le paramètre escapement à 900 (90 degré) dans l'onglet font des propriété de la colonne
3 - Mettre la valeur à mesurer dans la colonne
4 - Récupérer la propriété Height de la colonne => c'est la longueur du texte en Pixel
Bon il faut encore tester le truc.... J'ai juste testé vite fait dans le painter DW.Est-ce que qq peut faire le test avec un run ? j'ai pas d'appli sous la main....
Bon j'ai testé, ça marche pas...
D'autres idées ????
Au moins ça a remis la propriété escapement en lumière
Hors ligne
Merci pour ton aide Chrnico.
pour récupérer la taille de mes valeurs je me suis pris comme suit :
j'ai rajouté des computes dans ma datawindow (partie summary, je les rends invisible) dans lesquels je récupère la taille maximum de mes valeurs.
max(len(trim(macolonne)))
j'ai rajouté autant de computes que de colonnes.
donc j'ai le width des colonnes initialement et la taille des colonnes.
l'un en PBU et l'autre en long
je voudrais convertir la taille des colonnes en PBU et ça je ne sais pas faire.
SOS
le width est en PBU et la taille de la colonne
Hors ligne
vanille a écrit:
je voudrais convertir la taille des colonnes en PBU et ça je ne sais pas faire.
Vas voir l'aide sur les fonctions PixelsToUnits et UnitsToPixels.
vanille a écrit:
SOS
le width est en PBU et la taille de la colonne
L'unité de mesure de la DW est définie par la propriété Units de l'onglet général
Hors ligne
j'ai déjà joué un peu avec ces deux fonctions. Je dois mal les utiliser
je pense que je vais faire comme eRaSoRZ.
Hors ligne
voila une solution... tout droit sortie de ma botte secrete...
tu ajoutes une datawindow , en invisible (je n'ai pas essayé par une datastore, ca devrait fonctionner)
ici, elle s'appelle dw_1
et dans un script :
string ls_syntax string ls_presentation string ls_sql, ls_erreur long ll_longueur ls_sql = "select 'pbadonf camembert aware' as 'pbdf'" ls_presentation = "style(type=tabular)" ls_syntax = SQLCA.SyntaxFromSQL(ls_sql,ls_presentation, ls_erreur) IF Len(ls_erreur) > 0 THEN MessageBox("Information", & "Erreur dans: " + ls_erreur) RETURN END IF dw_1.Create( ls_syntax, ls_erreur) IF Len(ls_erreur) > 0 THEN MessageBox("Information", & "Erreur dans: " + ls_erreur) RETURN END IF dw_1.Settransobject(sqlca) dw_1.retrieve() ll_longueur = long(dw_1.object.pbdf.width)
tout se joue dans le ls_sql = "select 'pbadonf camembert aware' as 'pbdf'"
donc, à chaque fois que tu voudras determiner la taille d'une colonne, tu mettras le contenu de ton texte...
j'ai testé , et ca fonctionne super top
Hors ligne
Bonjour pick ouic,
merci, je vais tester.
je te tiendrai au courant.
Hors ligne
pick ouic a écrit:
voila une solution... tout droit sortie de ma botte secrete...
...
Joli, tu devrais t'accorder un paquet de pépites pour ça, en tout cas moi je prends bonne note de l'astuce.
Hors ligne
pour info, la taille de la longueur recupérée est en unité pb.
il suffit apres de faire... pour l'avoir en unité pixel.
ll_longueur = long(dw_1.object.pbdf.width)
ll_longueur = UnitsToPixels(ll_longueur, XUnitsToPixels!)
et pour le height
ce sera :
ll_hauteur = long(dw_1.object.pbdf.height)
ll_hauteur = UnitsToPixels(ll_hauteur, YUnitsToPixels!)
Hors ligne
pick ouic a écrit:
voila une solution... tout droit sortie de ma botte secrete...
tu ajoutes une datawindow , en invisible (je n'ai pas essayé par une datastore, ca devrait fonctionner)
ici, elle s'appelle dw_1
et dans un script :Code: pb
string ls_syntax string ls_presentation string ls_sql, ls_erreur long ll_longueur ls_sql = "select 'pbadonf camembert aware' as 'pbdf'" ls_presentation = "style(type=tabular)" ls_syntax = SQLCA.SyntaxFromSQL(ls_sql,ls_presentation, ls_erreur) IF Len(ls_erreur) > 0 THEN MessageBox("Information", & "Erreur dans: " + ls_erreur) RETURN END IF dw_1.Create( ls_syntax, ls_erreur) IF Len(ls_erreur) > 0 THEN MessageBox("Information", & "Erreur dans: " + ls_erreur) RETURN END IF dw_1.Settransobject(sqlca) dw_1.retrieve() ll_longueur = long(dw_1.object.pbdf.width)
tout se joue dans le ls_sql = "select 'pbadonf camembert aware' as 'pbdf'"
donc, à chaque fois que tu voudras determiner la taille d'une colonne, tu mettras le contenu de ton texte...
j'ai testé , et ca fonctionne super top
Pas mal !
Je regrette de ne pas avoir trouvé avant toi
Mais bon, je suis en vacances (4 jours seulement ) et ma femme trouve que je passe déjà beaucoup de temps sur ce forum
Hors ligne
Chrnico a écrit:
Mais bon, je suis en vacances (4 jours seulement ) et ma femme trouve que je passe déjà beaucoup de temps sur ce forum
Va t'aérer la tête, on te gardes ta place au chaud t'inquiète ;-)
Hors ligne
coucou tous,
he bien je n'ai pas eu le temps de tester pour toutes mes colonnes mais je l'ai fait pour une.
Et ça a l'air de marcher.
Je te tire mon chapeau pick ouic.
Je suis très contente de connaitre ce forum.
Bon week end à tous.
PS on peut classer le sujet je pense.
Hors ligne