Quoi, tu ne connais pas PB ? Va falloir parcourir tout le forum alors !

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 22-12-2020 10:25:46

pBLove  
Membre
Date d'inscription: 08-11-2019
Messages: 17
Pépites: 72
Banque: 0

[RESOLU] Changer couleur de fond d'une cellule

Bonjour, j'ai bien trouvé des réponses sur : resolu

Je vais choisir de faire le Modify, mais j'ai l'impression (en lisant le code) que ça va modifier la couleur de toute la colonne et pas seulement la couleur de la cellule qui se trouve dans la colonne1 4éme ligne

Code: pb

dw_planning.modify("projects_project_name_AM_"+string(ll_col)+".background.color='"+string(ll_color_value)+"'"

Je me trompe ?

Je passe par le Modify, car les changements de couleur se font en dynamique suite à des actions sur des boutons.

Merci

Dernière modification par pBLove (30-12-2020 14:39:22)

Hors ligne

 

#2 22-12-2020 13:30:38

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Changer couleur de fond d'une cellule

Oui, pour modifier une propriété d'un control de la datawindow à la ligne, tu doit passer par une expression, soit dans le code d'origine de ton dataobject, soit ment en powerscript via un modify.
Par contre, dans ton extrait de code, tu affectes une constante a la propriété et non une expression.

Par exemple pour colorer col_1 sur la ligne courrante en rouge :

Code: pb

dw_1.modify("col_1.background.color=''0~tif(getrow()=currentrow(),255,rgb(255,255,255))")

https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#3 22-12-2020 14:29:49

pBLove  
Membre
Date d'inscription: 08-11-2019
Messages: 17
Pépites: 72
Banque: 0

Re: [RESOLU] Changer couleur de fond d'une cellule

Merci XLAT

Je permet la multi selection de lignes
Sur le click de mon bouton j'ai mis le code suivant

Code: pb

long ll_row
string ls_color = string(RGB(52, 201, 36))
ll_row = dw_bkg.getSelectedRow(0)
dw_bkg.Modify("c_TwngVehRegNo.Background.mode=0")
DO WHILE ll_row > 0
  dw_bkg.Modify("c_TwngVehRegNo.Background.Color="+ls_color)
  ll_row = dw_bkg.getSelectedRow(ll_row)
LOOP
dw_bkg.SelectRow(0,false)

Je le modifier en

Code: pb

long ll_row
string ls_color = string(RGB(52, 201, 36))
ll_row = dw_bkg.getSelectedRow(0)
dw_bkg.Modify("c_TwngVehRegNo.Background.mode=0")
DO WHILE ll_row > 0
  dw_bkg.Modify("c_TwngVehRegNo.Background.Color=''0~tif(getrow()=ll_row,144,"+ls_color+")")
  ll_row = dw_bkg.getSelectedRow(ll_row)
LOOP
dw_bkg.SelectRow(0,false)

Mais ça le fait pas avec ma boucle

Dernière modification par pBLove (29-12-2020 13:42:28)

Hors ligne

 

#4 23-12-2020 07:59:48

pBLove  
Membre
Date d'inscription: 08-11-2019
Messages: 17
Pépites: 72
Banque: 0

Re: [RESOLU] Changer couleur de fond d'une cellule

Bonjour, je vous expose mon problème.

J'ai une datawindows pour laquelle je ne peux plus afficher de colonne à l'écran. Mais je dois intégrer une colonne "code couleur" modifiable. Donc j'ai proposé de ne pas l'afficher, mais de colorer les lignes d'une colonne deja affichée en fonction de cette colonne "code couleur"
-> Là je pensais que mettre le background color en fonction de ma colonne directement dans la definition de ma datawindows etait la bonne solution

L'utilisateur doit  pouvoir modifier les couleurs
J'ai donc mis en place 4 boutons "vert,jaune,rouge,rien" et une multi selection de lignes, pour qu'au clic je puisse modifier la valeur (pour les lignes selectionnées) de la colonne "code couleur" et changer le background de l'autre colonne.
-> Là je pensais passer par le Modify

J'ai fait plusieurs essais avec, mais rien de bon.
Donc plutôt que de partir dans tous les sens, pour vous quelle est la meilleur solution :

Passer par une coloration conditionnelle directement définie dans la colonne de  la datawindow et voir/faire en sorte que l'affichage se modifie après avoir modifié la valeur de la colonne non affichée ?
Passer par un Modify (comme dans mon bout de code) au click sur un bouton ?

Merci

Hors ligne

 

#5 24-12-2020 07:35:25

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Changer couleur de fond d'une cellule

Bonjour,

Dans ce cas, pourquoi faire compliqué quand on peut faire simple avec : isselected() http://infocenter-archive.sybase.com/he … lected.htm

;-)

Code: pb

dw_bkg.Modify("c_TwngVehRegNo.Background.Color=''0~tif(isselected(),144,"+ls_color+")")

Et pas besoin de boucle.

Dernière modification par xlat (24-12-2020 11:37:50)


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#6 29-12-2020 13:33:10

pBLove  
Membre
Date d'inscription: 08-11-2019
Messages: 17
Pépites: 72
Banque: 0

Re: [RESOLU] Changer couleur de fond d'une cellule

Salut et encore merci Xlat, j'espère que tu passes de bonnes fêtes.
j'ai essayé ton code , mais ça ne fait rien.
J'ai essayé ce code

Code: pb

long ll_row
string ls_color = string(RGB(52, 201, 36))
string ls_color2 = string(RGB(250,0,0))
ll_row = dw_bkg.getSelectedRow(0)

DO WHILE ll_row > 0
  dw_bkg.object.v_color[ll_row]="VERT"
  ll_row = dw_bkg.getSelectedRow(ll_row)
LOOP
dw_bkg.SelectRow(0,false)

dw_bkg.Modify("c_TwngVehRegNo.Background.mode=0")
//dw_bkg.Modify("c_TwngVehRegNo.Background.Color=''0~tif(v_color = '0', rgb(255, 0, 0), if(v_color = 'VERT', rgb(52, 201, 36), if(v_color = '1', rgb(52, 201, 36), rgb(192, 192, 192))))")
dw_bkg.Modify("c_TwngVehRegNo.Background.Color=''0~tif(v_color = 'VERT',"+ls_color+","+ls_color2+")") 
dw_bkg.SelectRow(0,false)

Mais rien non plus, comme si la partie "tif ..." n'était pas interprétée car si je remplace par

Code: pb

dw_bkg.Modify("c_TwngVehRegNo.Background.Color="+ls_color+"")

ça met toute la colonne en vert

Dernière modification par pBLove (29-12-2020 13:47:01)

Hors ligne

 

#7 30-12-2020 05:19:52

xlat  
0xc0000005
Award: bf
Lieu: Tanger (طنج)
Date d'inscription: 04-12-2010
Messages: 720
Pépites: 11,343
Banque: 100,221,387,868,884,300
Site web

Re: [RESOLU] Changer couleur de fond d'une cellule

Bonjour,
Regarde le retour du modify en utilisant l'expression, ça te retourne soit une chaîne vide, soit un message d'erreur.


https://lut.im/eJINqa9o/vAtyxD0h "Don't believe everything you read on the Internet"
    -- Abraham Lincoln

www.ngs.ma

Hors ligne

 

#8 30-12-2020 13:51:13

pBLove  
Membre
Date d'inscription: 08-11-2019
Messages: 17
Pépites: 72
Banque: 0

Re: [RESOLU] Changer couleur de fond d'une cellule

Merci pour ton aide xlat, tu as etait mon soutient dans ce long tunnel
il faut que je penses plus souvent à regarder les codes retour des fonctions, pas évident la gymnastique entre les différents langages.
Il y avait 2 erreurs de syntaxe : le double guillemet et les caractères d'échappement
La bonne syntaxe est :

Code: pb

dw_bkg.Modify( "c_TwngVehRegNo.Background.Color='0~tIf(v_color=~~'VERT~~'," +String(RGB(52, 201, 36)) + "," +String(RGB(250,0,0)) + ")'")

Encore merci et longue vie à ce forum

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22