Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Voilà j'ai un petit soucis, et c'est pas facile à expliquer...
Sur notre appli, on utilise un objet qui construit dynamiquement une DW d'impression à partir d'une DW de la fenêtre.
Sur la DW de la fenêtre l'utilisateur peut paramètrer la couleur de fond et la couleur de texte des colonnes.
Mon problème vient du fait que la DW d'impression imprime le texte de toutes les colonnes de la couleur que choisit l'utilisateur MAIS toujours sur fond blanc.
Du coup quand l'utilisateur a choisi une couleur de fonte blanche et bien l'impression ne sort rien (blanc sur fond blanc)...
Dans mon code générique de fabrication de ma DW d'impression, je voudrais gérer le fait que si l'écriture est blanche on la remet en noire, et je ne trouve pas de solution à ce problème.
Voici le code mis au niveau de la propriété Color de toutes les colonnes :
f_get_font_color_blotter(selection)
En exportant la DW on obtient donc le code :
color=0~tf_get_font_color_blotter(selection)
Et voici une partie du code de génération de la DW d'impression à partir de la DW de l'écran
FOR li_current_las_objects_position = 1 TO li_las_objects_size IF Not ( lb_visible ) THEN // Si la colonne est invisible ls_current_modify = las_object [ li_current_las_objects_position ] + ".Visible=0" + "~t" + & las_object [ li_current_las_objects_position ] + ".X=1" + "~t" + & las_object [ li_current_las_objects_position ] + ".Y=1" ELSE // Sinon on la positionne au bon endroit et on lui donne la bonne taille ls_current_modify = las_object [ li_current_las_objects_position ] + ".X=" + string ( ll_x ) + "~t" + & las_object [ li_current_las_objects_position ] + ".Width=" + string ( ll_width ) + "~t" + & las_object [ li_current_las_objects_position ] + ".Border=0" END IF gnv_app.iuo_dw_services.uof_add_statement_in_modify_string ( ls_global_modify , ls_current_modify ) NEXT
Donc mon idée serait de modifier le code :
ls_current_modify = las_object [ li_current_las_objects_position ] + ".X=" + string ( ll_x ) + "~t" + & las_object [ li_current_las_objects_position ] + ".Width=" + string ( ll_width ) + "~t" + & las_object [ li_current_las_objects_position ] + ".Border=0"
Comme ci-dessous, mais en rajoutant un test si la fonte de couleur blanche (valeur=16777215) alors on met en noir :
ls_current_modify = las_object [ li_current_las_objects_position ] + ".X=" + string ( ll_x ) + "~t" + & las_object [ li_current_las_objects_position ] + ".Width=" + string ( ll_width ) + "~t" + & las_object [ li_current_las_objects_position ] + ".Border=0" + "~t" + & las_object [ li_current_las_objects_position ] + ".Color=0"
Mais c'est là que ça bloque car je ne vois pas comment écrire mon test ?????
Dernière modification par LeCiao (10-10-2007 08:09:29)
Hors ligne
D'après : La fonction DESCRIBE()
Je dirai que le code suivant devrait fonctionner (sans garanties) :
dw_1.Describe("Evaluate('uneColonne.Color',1)")
Quoi qu'il en soit, tu trouveras plus d'infos ici que sur la doc de PB. Je te conseille d'utilsier la fonction de recherch du site (mais pas la recherche rapide)
Edit : La réponse à ta question a déjà été posté sur ce forum
[ASTUCE] Récup dans dw valeur propriété d'un de ses objets à une ligne donnée
PS : Mais pourquoi ne pas appeler directement f_get_font_color_blotter ?
Dernière modification par shahin (09-10-2007 07:54:08)
Hors ligne
Salut
Il ne manque pas n modify sur le Background plutôt que color
Color je pense que c'est pour les parties de ta datawindow (Detail, Header...)
Et Background pour un objet particulier...
Diantre... je était à côté de la plaque...
Dernière modification par Melke (09-10-2007 07:57:11)
Hors ligne
shahin a écrit:
D'après : La fonction DESCRIBE()
Je dirai que le code suivant devrait fonctionner (sans garanties) :Code: pb
dw_1.Describe("Evaluate('uneColonne.Color',1)")
Le problème c'est que dans mon code générique je n'ai plus de DW, seulement des tableaux de string, donc je ne peux plus utiliser Describe et donc Evaluate non plus.
shahin a écrit:
Quoi qu'il en soit, tu trouveras plus d'infos ici que sur la doc de PB. Je te conseille d'utilsier la fonction de recherch du site (mais pas la recherche rapide)
Edit : La réponse à ta question a déjà été posté sur ce forum
[ASTUCE] Récup dans dw valeur propriété d'un de ses objets à une ligne donnée
Oui j'avais trouvé ce code, mais comme dit précédement je n'ai plus ma DW au moment où je dois modifier cette propriété.
shahin a écrit:
PS : Mais pourquoi ne pas appeler directement f_get_font_color_blotter ?
Parce que cette fonction est utilisable sur la DW qui me pose problème mais pas sur d'autresDW de l'appli et comme le code de construction de la DW d'impression est générique, ça va pas marcher...
Hors ligne
En fait j'ai trouvé la solution en modifiant la fonction f_get_font_color_blotter... Mais je trouve pas cela très propre !!!
J'aurais bien aimé modifié la propriété color...
Dernière modification par LeCiao (10-10-2007 08:08:48)
Hors ligne
LeCiao a écrit:
Parce que cette fonction est utilisable sur la DW qui me pose problème mais pas sur d'autresDW de l'appli et comme le code de construction de la DW d'impression est générique, ça va pas marcher...
Dans ce cas, faire une recherche pour voir si f_get... est utilisée ou pas
Hors ligne