Le forum (ô combien francophone) des utilisateurs de Powerbuilder.
Pages: 1 2
Est-ce possible en ayant la ligne et la colonne de savoir modifier la couleur de fond de la cellule spécifique sur laquelle on se trouve ?
Dernière modification par johnpelu (25-11-2008 10:35:05)
Hors ligne
En fait ,pour une ligne X et une colonne Y je veux changer la bordure et/ou la couleur , mais ca s'applique à toute la colonne et pas uniquement sur la cellule que je désire
Dernière modification par johnpelu (14-11-2008 11:32:23)
Hors ligne
Je suis désolé mais je ne suis pas sur d'avoir bien compris ton problème.
Il m'arrive de gérer les couleurs de mais colonnes en utilisant une colonne virtuelle de type numérique, et la valeur que je lui affecte modifie l'affichage.
Au niveau de ta colonne (propiété du Background color), tu peux mettre une condition du type
if( colonne_virtuel = 1 , rgb(255,0,0) , if( colonne_virtuel = 2, rgb(255,128,0) , if (colonne_virtuel = 3 , rgb(0,255,0), rgb(255,255,255) ) ))
Je ne sais pas si ça répondra à ta question!
Hors ligne
Bonjour,
je ne veux pas mettre toute la colonne en couleur mais une cellule spécifique. En fait je dois pouvoir avoir plusieurs couleurs différentes sur la même ligne et sur une même colonne également.
Hors ligne
Si tu veux que ta colonne soit rouge pour la ligne 6, il faut affecter la valeur 1 à la "colonne virtuelle" pour la ligne 6. Les autres lignes ne changeront pas de couleurs.
Hors ligne
Peux tu me donner un exemple concret à partir de ceci car je ne comprends rien, sachant que chaque ligne correspond à consultant_day.day_service et une colonne est projects.project_name...
release 11.5; datawindow(units=0 timer_interval=0 color=1073741824 brushmode=0 transparency=0 gradient.angle=0 gradient.color=1073741824 gradient.focus=0 gradient.repetition.count=0 gradient.repetition.length=100 gradient.repetition.mode=0 gradient.scale=100 gradient.spread=100 gradient.transparency=0 picture.blur=0 picture.clip.bottom=0 picture.clip.left=0 picture.clip.right=0 picture.clip.top=0 picture.mode=0 picture.scale.x=100 picture.scale.y=100 picture.transparency=0 processing=4 HTMLDW=yes print.printername="" print.documentname="" print.orientation = 0 print.margin.left = 110 print.margin.right = 110 print.margin.top = 96 print.margin.bottom = 96 print.paper.source = 0 print.paper.size = 0 print.canusedefaultprinter=yes print.prompt=no print.buttons=no print.preview.buttons=no print.cliptext=no print.overrideprintjob=no print.collate=yes print.background=no print.preview.background=no print.preview.outline=yes hidegrayline=no showbackcoloronxp=no picture.file="" crosstab.dynamic = yes grid.lines=0 grid.columnmove=no selected.mouse=no ) header[1](height=0 color="536870912" transparency="0" gradient.color="8421504" gradient.transparency="0" gradient.angle="0" brushmode="0" gradient.repetition.mode="0" gradient.repetition.count="0" gradient.repetition.length="100" gradient.focus="0" gradient.scale="100" gradient.spread="100" ) header[2](height=60 color="536870912" transparency="0" gradient.color="8421504" gradient.transparency="0" gradient.angle="0" brushmode="0" gradient.repetition.mode="0" gradient.repetition.count="0" gradient.repetition.length="100" gradient.focus="0" gradient.scale="100" gradient.spread="100" ) summary(height=192 color="536870912" transparency="0" gradient.color="8421504" gradient.transparency="0" gradient.angle="0" brushmode="0" gradient.repetition.mode="0" gradient.repetition.count="0" gradient.repetition.length="100" gradient.focus="0" gradient.scale="100" gradient.spread="100" ) footer(height=0 color="536870912" transparency="0" gradient.color="8421504" gradient.transparency="0" gradient.angle="0" brushmode="0" gradient.repetition.mode="0" gradient.repetition.count="0" gradient.repetition.length="100" gradient.focus="0" gradient.scale="100" gradient.spread="100" ) detail(height=84 color="536870912" transparency="0" gradient.color="8421504" gradient.transparency="0" gradient.angle="0" brushmode="0" gradient.repetition.mode="0" gradient.repetition.count="0" gradient.repetition.length="100" gradient.focus="0" gradient.scale="100" gradient.spread="100" ) table(column=(type=datetime updatewhereclause=yes name=consultant_day_day_service dbname="consultant_day_day_service" ) column=(type=char(30) updatewhereclause=yes name=projects_project_code dbname="projects_project_code" ) retrieve="PBSELECT( VERSION(400) TABLE(NAME=~"consultant_day~" ) TABLE(NAME=~"consultants~" ) TABLE(NAME=~"projects~" ) COLUMN(NAME=~"consultant_day.consultant_id~") COLUMN(NAME=~"consultant_day.day_service~") COLUMN(NAME=~"consultants.consultant_name~") COLUMN(NAME=~"projects.project_code~") COLUMN(NAME=~"projects.project_name~") COLUMN(NAME=~"projects.type_id~") JOIN (LEFT=~"consultants.consultant_id~" OP =~"=~"RIGHT=~"consultant_day.consultant_id~" ) JOIN (LEFT=~"projects.project_code~" OP =~"=~"RIGHT=~"consultant_day.project_code~" )) " sort="consultant_day_day_service A " ) text(band=header[2] alignment="2" text="@consultants_consultant_name" border="0" color="33554432" x="498" y="4" height="128" width="617" html.valueishtml="0" name=projects_project_code_t visible="1" font.face="Verdana" font.height="-8" font.weight="700" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" background.transparency="0" background.gradient.color="8421504" background.gradient.transparency="0" background.gradient.angle="0" background.brushmode="0" background.gradient.repetition.mode="0" background.gradient.repetition.count="0" background.gradient.repetition.length="100" background.gradient.focus="0" background.gradient.scale="100" background.gradient.spread="100" tooltip.backcolor="134217752" tooltip.delay.initial="0" tooltip.delay.visible="32000" tooltip.enabled="0" tooltip.hasclosebutton="0" tooltip.icon="0" tooltip.isbubble="0" tooltip.maxwidth="0" tooltip.textcolor="134217751" tooltip.transparency="0" transparency="0" ) column(band=detail id=1 alignment="0" tabsequence=32766 border="0" color="33554432" x="9" y="4" height="76" width="480" format="DD/MM/YYYY AM/PM" html.valueishtml="0" name=consultant_day_day_service visible="1" edit.limit=0 edit.case=any edit.focusrectangle=no edit.autoselect=no edit.autohscroll=yes font.face="Verdana" font.height="-8" font.weight="700" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" background.transparency="0" background.gradient.color="8421504" background.gradient.transparency="0" background.gradient.angle="0" background.brushmode="0" background.gradient.repetition.mode="0" background.gradient.repetition.count="0" background.gradient.repetition.length="100" background.gradient.focus="0" background.gradient.scale="100" background.gradient.spread="100" tooltip.backcolor="134217752" tooltip.delay.initial="0" tooltip.delay.visible="32000" tooltip.enabled="0" tooltip.hasclosebutton="0" tooltip.icon="0" tooltip.isbubble="0" tooltip.maxwidth="0" tooltip.textcolor="134217751" tooltip.transparency="0" transparency="0" ) column(band=detail id=2 alignment="2" tabsequence=32766 border="0" color="33554432" x="498" y="4" height="76" width="617" format="[general]" html.valueishtml="0" name=projects_project_code visible="1" dddw.name=d_dddw_projectlist dddw.displaycolumn=project_name dddw.datacolumn=project_code dddw.percentwidth=0 dddw.lines=0 dddw.limit=0 dddw.allowedit=no dddw.useasborder=no dddw.case=any crosstab.repeat=yes font.face="Verdana" font.height="-7" font.weight="400" font.family="2" font.pitch="2" font.charset="0" background.mode="1" background.color="536870912" background.transparency="0" background.gradient.color="8421504" background.gradient.transparency="0" background.gradient.angle="0" background.brushmode="0" background.gradient.repetition.mode="0" background.gradient.repetition.count="0" background.gradient.repetition.length="100" background.gradient.focus="0" background.gradient.scale="100" background.gradient.spread="100" tooltip.backcolor="134217752" tooltip.delay.initial="0" tooltip.delay.visible="32000" tooltip.enabled="0" tooltip.hasclosebutton="0" tooltip.icon="0" tooltip.isbubble="0" tooltip.maxwidth="0" tooltip.textcolor="134217751" tooltip.transparency="0" transparency="0" ) crosstab(band = foreground crosstabonly = yes columns = "consultants_consultant_name" rows = "consultant_day_day_service" values = "projects_project_code" sourcenames = "consultant_day_consultant_id, consultant_day_day_service, consultants_consultant_name, projects_project_code, projects_project_name, projects_type_id")htmltable(border="0" cellpadding="1" cellspacing="1" ) htmlgen(clientevents="1" clientvalidation="1" clientcomputedfields="1" clientformatting="0" clientscriptable="0" generatejavascript="1" encodeselflinkargs="1" netscapelayers="0" pagingmethod=0 generatedddwframes="1" ) xhtmlgen() cssgen(sessionspecific="0" ) xmlgen(inline="0" ) xsltgen() jsgen() export.xml(headgroups="1" includewhitespace="0" metadatatype=0 savemetadata=0 ) import.xml() export.pdf(method=0 distill.custompostscript="0" xslfop.print="0" ) export.xhtml()
Message de modération
Merci d'utiliser désormais la balise
Hors ligne
C'est une Crosstab Datawindows ?
Autant pour moi, je ne pense pas que ça puisse marcher.
Désolé.
Mais ta DW ne te sert qu'a afficher un résultat? Pourquoi veux tu modifier la couleur de ta cellule?
Hors ligne
C'est un planning et en fonction du type de projet sur lequel on est affecté il y a une couleur qui correspond :-/
Hors ligne
Personne n'a une solution à me proposer ? car la je bloque
Hors ligne
Je ne suis pas sûr de voir où se situe le problème, mais d'habitude voilà ce que je fais quand je dois paramétrer les couleurs suivant beaucoup de variables:
Posons le fait que tu peux déterminer la couleur ad-hoc d'une cellule donnée en connaisant la ligne et la colonne courante... Je fais une global function (mettons long gf_apply_bgcolor(int row, int col)) qui contiendra tout le calcul de la couleur à appliquer en fonction de la ligne et de la colonne passées en paramètres, et qui renvoie cette valeur de couleur.
Et dans chaque cellule à calculer de la sorte, dans la propriété bgColor, je met l'expression: "gf_apply_bgcolor(currentRow(), x)" (où x est le numéro de colonne de ma cellule).
Ca t'aide?
Hors ligne
Bonsoir,
Cette solution m'intéresse mais malheureusement je ne sais pas la tester avant lundi prochain , mais est ce que ca va être possible de se positionner sur une colonne bien spécifique sachant qu'il sa s'agit d'une crosstab datawindow ?
Hors ligne
Le truc, c'est que de cette manière, tu positionne rien du tout! Si tu peux mettre une couleur, tu peux utiliser cette méthode.
C'est dans chacune de tes colonnes que tu vas mettre l'expression gf_... Et c'est ta fonction qui calcule s'il faut ou non changer un truc. A toi de trouver quels parametres lui fournir pour convenir à tout tes cas de figure, et le tour est joué.
J'ai peut etre pas ete tres explicite tout à l'heure, mais il faut customiser la global en fonction de tes besoins. Par exemple, mettons que tu aies la cellule X qui doit être bleue si la colonne FLAG est à 'y' et rouge autrement... Alors tu as juste besoin d'une GF qui ressemble à long gf_apply_bgcolor(char flag). Et dans l'expression couleur de X, tu met: "gf_apply_bgcolor( flag )". Et dans la GF, un ptit "if flag = 'y' then return rgb(0,0,255)"... (c'est pas du code hein ! )
Tu vois l'idée? A toi de trouver les paramètres qui couvrent tout tes cas, et les passer à la GF, et mettre le tout dans les expression couleur de TOUTES tes colonnes...
Hors ligne
Oui mais je n'ai pas trouvé de fonction du style Setcolor(...) pour une cellule bien précise
Hors ligne
Je n'arrive toujours pa à changer la couleur d'une cellule en particulier, quelqu'un à une idée ?
Hors ligne
Cortex a écrit:
et mettre le tout dans les expression couleur de TOUTES tes colonnes...
dans les propriétés des éléments : background.color = ...
Hors ligne
erasorz a écrit:
Cortex a écrit:
et mettre le tout dans les expression couleur de TOUTES tes colonnes...
dans les propriétés des éléments : background.color = ...
Ca j'ai compris, mais comment faire pour changer la couleur de la ligne "i" pour la colonne "x", c'est la que je cale
Hors ligne
Ben ça, tu le code dans ta fonction globale... Genre si colonne = x et ligne = y alors return rose... Sinon à quoi servirait la fonction globale?
Faut savoir que toutes les cellules d'une même colonne ont les même valeur de propriété. Y a rien a faire contre ça, c'est comme ça. Par contre, ces propriété peuvent avoir des valeur définies par des expressions qui seront évaluées ligne par ligne. Et c'est ce principe que je propose d'utiliser pour différencier les cellules d'une colonnes...
Ce que je t'ai donné, c'est pas une solution toute faite, c'est une piste.
Hors ligne
Cortex a écrit:
Ben ça, tu le code dans ta fonction globale... Genre si colonne = x et ligne = y alors return rose... Sinon à quoi servirait la fonction globale?
Faut savoir que toutes les cellules d'une même colonne ont les même valeur de propriété. Y a rien a faire contre ça, c'est comme ça. Par contre, ces propriété peuvent avoir des valeur définies par des expressions qui seront évaluées ligne par ligne. Et c'est ce principe que je propose d'utiliser pour différencier les cellules d'une colonnes...
Ce que je t'ai donné, c'est pas une solution toute faite, c'est une piste.
Oui mais c'est la que je cale, je ne sais pas comment faire pour avoir "ligne/colonne", c'est une crosstab, pas une datawindow normale.
En gros, je récupère le type de projet, à chaque type de projet est associé une couleur pour la cellule, et c'est en fonction de ce type de projet que je dois mettre la cellule dans telle ou telle couleur, mais pour cela je dois connaitre le nom de ma cellule (ou position) pour effectuer le changement de couleur et je coince
Hors ligne
J'ai essayé avec ceci , la chaine est bien "" mais rien ne change, dois je essayer en travaillant sur la ligne également ?
dw_planning.Modify("projects_project_code_"+string(li_j - 1)+".Background.Color = '"+string(ll_color_value)+"'")
Hors ligne
T'es tu posé la question du choix de la crosstab? Ne penses tu pas qu'ele est inadapté pour ce que tu veux faire?
Les crosstab sont trop limitatives, à part pour sortir quelques tableaux dans des composites plus élaborées, ça reste d'un intéret marginal. Parce que à mon humble avis, vu les efforts que tu investi là dedans, il faut se poser la question. Tu consomme du budget de dév sans être sûr d'aboutir, avec plein de limitations, alors que tu pourrais investir tout ce temps dans un composant exprès, ou une datawindow plus généraliste que tu pourrais bricoler à loisir.
J'ai suivi ton truc d'un oeil distrait, mais si c'est bien pour faire un affichage de planning pour PM, franchement, prend une datawindow freeform ou tabular et génère ton tableau comme ça (y a la datawindow N-UP aussi ) J'ai du en faire une seule fois un truc comme ça, y a pas à hésiter, quite à coupler ta datawindow avec un nonVisualObject chargé de la mettre en forme, c'est beaucoup plus évolutif par la suite... Sinon que faire quand un client te demandera encore plus de couleur, de mettre en gras tel ou tel truc... ou de rajouter des anim par ex.?
Si tu as par contre des arguments pour conserver ta crosstab, alors amen et bonne chance quand même.
Hors ligne
Oui mais comment puis-je avoir une présentation comme pour une crosstab, en mettant les dates comme coordonnées pour les lignes, et les noms comme coordonnées pour les colonnes
Hors ligne
Bah! Si ce n'est que ça, c'est pas la peine...
Soit tu passe par un nvo (ou une datawindow control spécialement pour ça) et tu lui demande de générer ta datawindow object en fonction du nombre de colonnes. Et après, à ton objet la tâche de remplir chaque cellule en fonction des données brutes que tu récupère via un gros query monolithiques, que tu filtre successivement par Nom... Tu vois le genre, pas sorcier...
Evidemment, pour générer la dw en fonction du nombre de colonnes, il suffit d'en faire une pour 1 ou 2 colonnes, de regarder la syntaxe, et de s'en inspirer pour pondre la syntaxe pour n colonnes. Ensuite méthode create d'un datawindowControl, parcours des données et remplissage de la grille et hop, le tour est joué...
Ou alors, y en a qui préfèrent la dw N-Up, mais - pour les même raisons que la crosstab - je pense qu'il vaut mieux éviter dans ce cas-ci.
Hors ligne
JE galère je galère je galère, personne n'a un exemple à me fournir ? je craque
Hors ligne
Hors ligne
mdr...
Hors ligne
Pages: 1 2