Changement de couleur des aspect des champs  (Lu 447 fois) Partager ce sujet Imprimer

1 B


jctremblay  01 juin 2021 : 19:34

Est-ce possible de faire un changement de couleur globalement pour la totalité de tout les types de champs (polices, trait, fond, etc...)?


Je suis paresseux...  :geek:





IP archivée


bebarth  01 juin 2021 : 20:57

bonjour,
for (var i=0; i<this.numFields; i++) {
    var f=this.getField(this.getNthFieldName(i));
    f.textFont=font.HelvB;
    f.borderStyle=border.d;
    f.fillColor=color.yellow;
    // etc.
}
@+
 :bonjour:

IP archivée


jctremblay  01 juin 2021 : 21:04

Bonsoir bebarth!

Ça, je connais. Ça permet d’uniformiser. Mais je ne veux pas ça, je veux juste changer le Yellow là ou il se trouve. Ce n’est pas tous les champs qui ont un fond Yellow.

Puis je recherche, une façon de changer le yellow pour du red aussi présent dans comme couleur de texte, de trait, etc... sachant que certains champs n’ont pas de Yellow et ne devrait pas serte modifier.

IP archivée


bebarth  01 juin 2021 : 22:54

OK !
Voici pour modifier les textes de jaune à rouge :
for (var i=0; i<this.numFields; i++) {
    var f=this.getField(this.getNthFieldName(i));
    if (color.equal(f.textColor,color.yellow)) f.textColor=color.red;
    // ou if (color.equal(f.textColor,["CMYK",0,0,1,0])) f.textColor=color.red;
}
Tu intègres dans la boucle les fonds, les traits...
@+
 :bonjour:

IP archivée


jctremblay  02 juin 2021 : 03:03

Exactement ce que je voulais. Merci.... encore une fois!


IP archivée


jctremblay  03 juin 2021 : 02:46

Pour faire suite....


Je ne comprend pas pourquoi ceci fonctionne:


var fcolo = color.blue;
var ccolo = color.yellow;
for (var i=0; i<this.numFields; i++) {
    var f=this.getField(this.getNthFieldName(i));
    if (color.equal(f.textColor,fcolo)) f.textColor=ccolo;
}


Mais que ceci ne fonctionne pas, lorsqu'on utilise un app.response

var fcolo = app.response({cDefault: "color.blue"});
var ccolo = app.response({cDefault: "color.yellow"});

for (var i=0; i<this.numFields; i++) {
    var f=this.getField(this.getNthFieldName(i));
    if (color.equal(f.textColor,fcolo)) f.textColor=ccolo;
}





IP archivée


bebarth  03 juin 2021 : 09:36

bonjour,
Parce que tes réponses fcolo et ccolo sont des chaines de caractères !
Pour que ça fonctionne il faudrait utiliser la foncion eval() :
var fcolo = app.response({cDefault: "color.blue"});
var ccolo = app.response({cDefault: "color.yellow"});
for (var i=0; i<this.numFields; i++) {
    var f=this.getField(this.getNthFieldName(i));
    if (color.equal(f.textColor,eval(fcolo))) f.textColor=eval(ccolo);
}
ou
var fcolo = eval(app.response({cDefault: "color.blue"}));
var ccolo = eval(app.response({cDefault: "color.yellow"}));
for (var i=0; i<this.numFields; i++) {
    var f=this.getField(this.getNthFieldName(i));
    if (color.equal(f.textColor,fcolo)) f.textColor=ccolo;
}
@+
 :bonjour:

IP archivée


jctremblay  03 juin 2021 : 20:17

Merci Bebarth,


Le code eval est nécessaire en raison de l’utilisation de color.equal?
Ça fonctionne bien. J’ai pu ainsi me créer un script d’application pour m’ajouter une commande de menu pour un rechercher/remplacement de couleur. :extra:


Maintenant, si je veux, faire une recherche de tout ce qui n’est pas color.transparent. Je devrait remplacer le color.equal par quoi?

IP archivée


bebarth  03 juin 2021 : 21:00

bonjour,
Le code eval est nécessaire en raison de l’utilisation de color.equal?
Non, la fonction eval() excécute une commande écrire au format texte.
Quand tu écris "var fcolo = app.response({cDefault: "color.blue"});" color.blue est écrit entre guillemets, c'est donc une chaine de caractères alors que color.blue (sans guillemets) est un élément de l'objet "color".
Si tu exécutes dans la console ce script, tu verras tous les éléments de l'objet "color" :
for (var i in color) console.println(i+": "+ color[i]);

Maintenant, si je veux, faire une recherche de tout ce qui n’est pas color.transparent. Je devrait remplacer le color.equal par quoi?
Voici par exemple pour modifier tous les champs dont le fond n'est pas transparent en transparent :
for (var i=0; i<this.numFields; i++) {
    var f=this.getField(this.getNthFieldName(i));
    if (!color.equal(f.fillColor,color.transparent)) f.fillColor=color.transparent;
}

@+
 :bonjour:

IP archivée


jctremblay  03 juin 2021 : 21:10

Wow! Merci. Que c’est agréable d’apprendre des pros comme toi et notre cher Merlin!


 :bravo:

IP archivée


bebarth  03 juin 2021 : 21:25

Merci !
Mais je ne suis pas un pro...  :geek:
@+
 :bonjour:

IP archivée


jctremblay  03 juin 2021 : 21:32

Mais je ne suis pas un pro...

Quel humilité!  :jerisjaune:

Une autre question pour toi en lien...
Si je veux changer le fond pour blue de tout les champs qui ne sont pas transparent ni blanc, je fais comment.


J’ai essayé... avec des || ou && mais rien ne fonctionne.


if (!color.equal(f.fillColor,(color.transparent || color.white))) f.fillColor=color.blue;

IP archivée


bebarth  03 juin 2021 : 21:38

Ça devrait être :
for (var i=0; i<this.numFields; i++) {
    var f=this.getField(this.getNthFieldName(i));
    if (!color.equal(f.fillColor,color.transparent) && !color.equal(f.fillColor,color.white)) f.fillColor=color.blue;
}
@+
 :bonjour:

IP archivée


jctremblay  03 juin 2021 : 21:42

Quel "amateur"!  :jerisjaune:


C'est exactement ça. C’est parfait.

IP archivée