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 16-08-2007 12:15:13

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

[RESOLU] Expression sur un objet text

Bonjour c'est encore moi

Cette fois ci je demande votre aide parce que je n'arrive pas trop à dechiffrer le code contenu dans l'expression du objet de type text dans ma datawindow.

Code: pb

if (IsNull (id_cde_sortie),if (palette_bloquee = 'O', rgb (128, 128, 128), If(mod(getrow(),2)=0, 15790320, 1073741824)), rgb (128, 200, 255))


Je sais que cette expression permettra une coloration des lignes de ma datawindow (du bleu pour spécifier que c'est une commande en cours ou sinon une alternance de deux couleurs : violet assez pale et blanc).

Si vous pouviez m'aider à decomposer les if imbriqués ce serait sympa

Merci d'avance pour votre aide

Dernière modification par Nephtis (17-08-2007 11:59:53)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#2 16-08-2007 12:18:05

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Expression sur un objet text

Code: pb

if (IsNull (id_cde_sortie),
              if (palette_bloquee = 'O', 
                    rgb (128, 128, 128), 
                    If(mod(getrow(),2)=0, 
                        15790320, 
                        1073741824
                      )
                 ),
              rgb (128, 200, 255)
  )

comme cela ?


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#3 16-08-2007 12:19:20

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] Expression sur un objet text

Comme ça, ça va mieux ?

Code: pb

if (IsNull (id_cde_sortie)
  , if (palette_bloquee = 'O'
    , rgb (128, 128, 128)
    , If(mod(getrow(),2)=0
      , 15790320
      , 1073741824)
  )
  , rgb (128, 200, 255)
)


Damned ! 1 min 15 s de retard !

Dernière modification par shahin (16-08-2007 12:20:37)


never let people work on more than one thing at once.

Hors ligne

 

#4 16-08-2007 12:23:40

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Expression sur un objet text

shahin a écrit:

Damned ! 1 min 15 s de retard !

Mais non ... c'est pas pareil ...
On peut faire varier
- les ','         en debut ou fin de ligne
- les '(' & ')'  en debut ou fin de ligne
Comme on veut on chois ....


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#5 16-08-2007 12:43:21

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Expression sur un objet text

En fait ce que je comprenais pas c'est le fonctionnement du if ( pour comprendre que les deuxièmes et troisièmes arguments correspondent respectivement au bout de code à executer en cas de truevalue et falsevalue)

Donc pour mes if imbriqués cela reviendrait-il à :

Code: pb

If (IsNull (id_cde_sortie) Then
  If (palette_bloquee = 'O') Then
    rgb(128,128,128)
  ElseIf(mod(getrow(),2)=0) Then
    15790320
  Else
    1073741824
  End If
Else
  rgb(128,200,255)
EndIf


Je préfère bien décomposer les if sinon je trouve que c'est assez illisible


Aussi à quoi correspondent les chiffres 15790320 et 1073741824 des mes premiers Else (c'est surement pour la coloration synthaxique ligne par ligne mais je ne vois pas comment Pb interprete ces deux chiffres)

Dernière modification par Nephtis (16-08-2007 12:47:08)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#6 16-08-2007 13:37:25

Chrnico  
N2I Power
Award: bf
Lieu: Vanves
Date d'inscription: 05-06-2007
Messages: 1206
Pépites: 12,884,901,943
Banque: 9,223,372,036,854,775,808
Site web

Re: [RESOLU] Expression sur un objet text

Nephtis a écrit:

En fait ce que je comprenais pas c'est le fonctionnement du if ( pour comprendre que les deuxièmes et troisièmes arguments correspondent respectivement au bout de code à executer en cas de truevalue et falsevalue)

Donc pour mes if imbriqués cela reviendrait-il à :

Code: pb

If (IsNull (id_cde_sortie) Then
  If (palette_bloquee = 'O') Then
    rgb(128,128,128)
  ElseIf(mod(getrow(),2)=0) Then
    15790320
  Else
    1073741824
  End If
Else
  rgb(128,200,255)
EndIf


Je préfère bien décomposer les if sinon je trouve que c'est assez illisible


Aussi à quoi correspondent les chiffres 15790320 et 1073741824 des mes premiers Else (c'est surement pour la coloration synthaxique ligne par ligne mais je ne vois pas comment Pb interprete ces deux chiffres)

C'est le résultat de la fonction RGB() soit : rouge + vert * 256 + bleu * 65536


Tu dois donc tu peux (Kant)

Tu peux donc tu dois (N2i)
www.n2i.fr

Hors ligne

 

#7 16-08-2007 14:11:09

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] Expression sur un objet text

Nephtis a écrit:

En fait ce que je comprenais pas c'est le fonctionnement du if ( pour comprendre que les deuxièmes et troisièmes arguments correspondent respectivement au bout de code à executer en cas de truevalue et falsevalue)

Bien vu.
En fait, il y a deux powerscipts : le powerscript lui-même et le langage d'expression des datawindow

le if(,,) de la datawindow est l'équivalent de l'opérateur ternaire "?:" des langages C et consors

Et si t'as du temps à perdre, lire Ecrire sur une seule ligne

Dernière modification par shahin (16-08-2007 14:14:10)


never let people work on more than one thing at once.

Hors ligne

 

#8 16-08-2007 21:57:00

JCZ  
Builder Power
Award: bf
Lieu: 75019 paris
Date d'inscription: 21-05-2007
Messages: 1724
Pépites: 496,453,703,213
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Expression sur un objet text

Nephtis a écrit:

Aussi à quoi correspondent les chiffres 15790320 et 1073741824

regarde ici
puis ici


Face à l'agression, la puissance de l'intelligence

Hors ligne

 

#9 17-08-2007 10:17:48

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Expression sur un objet text

J'ai testé les couleurs avec le ColourPicker (merci Pick Ouic )

Mais lorsque je teste la couleur avec le code 1073741824 : j'obtient le code rgb(255,255,8447)

Sachant que chaque couleur est codée sur 255, comment se comporte pb alors que je lui passe un bleu à 8447?


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#10 17-08-2007 10:27:49

shahin  
Modérateur
Award: bf
Lieu: val de marne
Date d'inscription: 26-09-2006
Messages: 938
Pépites: 8,675,050,269
Banque: 16,218,225,127,617

Re: [RESOLU] Expression sur un objet text

C'est une couleur système (à priori : Window Background)
L'avantage des couleurs systèmes est que l'utilisateur peut les personnaliser.

par exemple, la plupart d'entre nous ont un "window background" blanc et un "window text" noir, mais certaines personnes les inversent (ce qui fait ressembler Windows à DOS)


never let people work on more than one thing at once.

Hors ligne

 

#11 17-08-2007 11:58:42

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Expression sur un objet text

Merci pour vos reponses, je vais me replonger un peu plus sur l'expression parce que elle me semble assez bizarre comparé au résultat qu'elle donne

Distribution de pépites ...


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#12 24-08-2007 10:03:58

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Expression sur un objet text

Vu que je vient tout juste de m'attaquer à ce problème, je solicite encore votre aide pour comprendre ce qui ne va pas dans mon code.

Ce que je souhaite faire c'est

Si mon code de sortie est nul et que le code d'observation est différent de 1 alors
      traitement pour colorier une ligne sur 2 (et test aussi si c'est bloqué)
Sinon si mon code de sortie est nul et que le code d'observation est égal à 1 alors
      couleur "jaune"
Sinon si mon code de sortie n'est pas nul et que le code d'observation est différent de 1 alors
      couleur "bleue"
Sinon
      couleur "peche"
Fin des Si

J'ai codé ceci :

Code: pb

if ((IsNull (id_cde_sortie) AND cde_obs <> '1')
  ,if (palette_bloquee = 'O'
    , rgb (128, 128, 128)
  , If(mod(getrow(),2)=0
    , 15790320
  , 1073741824))
, if ((IsNull (id_cde_sortie) AND cde_obs = '1')
  , rgb(255,255,0)
, if (((NOT IsNull (id_cde_sortie)) AND cde_obs <> '1')
  , rgb(128,200,255)
, rgb(253,191,183))))

Mais dans l'execution je n'ai que la couleur peche (rgb(253,191,183)) alors que j'ai par exemple de lignes dont le code sortie est nul

Où est ce que j'ai fait une boulette? smiley_726


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

#13 24-08-2007 10:29:36

foon  
N2iGeek + MangasGeek = foon
Award: bf
Lieu: Bonchamp-Lès-Laval
Date d'inscription: 28-02-2007
Messages: 2493
Pépites: 106
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Expression sur un objet text

Essaie cette expression:

Code: pb

if (IsNull (id_cde_sortie), 
  if( cde_obs = '1',rgb(255,255,0) , if (palette_bloquee = 'O', rgb (128, 128, 128), If(mod(getrow(),2)=0, 15790320, 1073741824))), if (cde_obs <>'1', rgb(128,200,255), rgb(253,191,183))))


NB: J'ai fait ça sous notepad faute de mieux, il est possible qu'il manque des parenthèses: A toi de corriger


Seuls ceux qui ne font rien ne font jamais d'erreurs
http://www.nerdtests.com/images/badge/163124fb7fb459a3.gif

Hors ligne

 

#14 24-08-2007 10:42:05

Nephtis  
Bienfaiteur du site
Award: bf
Lieu: Longjumeau
Date d'inscription: 29-06-2007
Messages: 665
Pépites: 17,189,873,958
Banque: 9,223,372,036,854,775,808

Re: [RESOLU] Expression sur un objet text

foon a écrit:

Essaie cette expression:

Code: pb

if (IsNull (id_cde_sortie), 
  if( cde_obs = '1',rgb(255,255,0) , if (palette_bloquee = 'O', rgb (128, 128, 128), If(mod(getrow(),2)=0, 15790320, 1073741824))), if (cde_obs <>'1', rgb(128,200,255), rgb(253,191,183)))[s])[/s]


NB: J'ai fait ça sous notepad faute de mieux, il est possible qu'il manque des parenthèses: A toi de corriger

Ca se rapproche de ce que je veut, j'ai testé (il y avait juste une parenthese en trop à la fin) et maintenant ça entre bien dans la toute première condition mais quand il faut entrer dans la condition pour avoir du bleu (code sortie non nul et code obs <> 1) et bien ça me sort du peche
J'essaierais de debugguer un peu plus ça lorsque j'aurais le temps


Non finalement c'était bon, le problème venais de mes données. En effet je teste si mon code d'observation est different de 1 mais ce qu'il faut savoir c'est que la valeur null n'est pas considérée comme une valeur différente de 1. D'où le fait que je rentrait toujours dans mon else.

Dernière modification par Nephtis (28-08-2007 10:30:44)


Qui sème des problèmes, récolte des réponses.
PB 6.5 || ASE 12.5.4 || XP SP3

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22