Bonjour,
Le DBGRID permet de changer les couleur du fond, polices, etc. Je me demandais s'il est possible de modifier ces options pour une cellule donnée, selon l'idée de formatage conditionnel que l'on trouve par exemple dans LibreOffice ou Excel. ex: les cells positives prennent la couleur verte, les cells négatives la couleur rouge.
Bonjour Petitpainauchocolat,
Tout comme vous j'aime bien participer à l'enrichissement de NSBASE.
Tout comme vous je suis en faveur, en demande... d'une possibilité de formatage conditionnelle dans le composant DBGrid. C'est une excellente demande.
Je constate au fil de mes publications et demandes dans ce forum que beaucoup les lisent les publications (993 vues tout recemment pour l'ensemble des post) et, qu'en revanche, peu les commentent ... en dehors de Survite bien sur...
Cordialement,
BPH30
Last edit: BARRAL Philippe 2020-01-16
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bonjour à tous,
DBGrid étant un composant important de NSBASE , je propose qu'il devienne, un thème, un fil de discussion de même niveau que "Général Discussion". Ou alors de le placer dans "Général Discussion". Dans ce dernier cas l'actuel fil de discussion "DBGRID et couleurs" pourrait être rebaptisé "DBGRID".
Qu'en pensez vous ?
Cordialement,
BPH30
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Ouf c'est fait
J'ai rajouté la propriété ConditionalFormatting qui permet d'écrire un scénario de filtrage
suivant les valeurs des champs et <,>,<>,= contient (Contains) et ne contient pas (NotContain) .
Agit sur la couleur de fond , de fonte et style de chaque cellule
Bonjour,
J'ai testé sur ma base, à partir de votre exemple, sans succes :
* Avec self.setProperty("DBGrid1.ConditionalFormatting",'if FAIRE contains "FAIRE" then clred clback 1') je n'obtiens rien
* Avec l'utilitaire de saisie des propriétés ( if FAIRE contains "FAIRE" then clred clback 1) et lorsque j'enregistre et passe en mode exécution : l'espace d'affichage du DBGRid est complètement vide et au bout de quelques secondes NSBASE se ferme tout seul sans aucun préavis.
j'ai présenté le scenario conditonnel de toutes façons possibles en changeant les double-cotes par des simple-cotes, avec une variable contenant le scénario .... j'obtiens toujours la même réaction : soit rien soit plantage... Bien sur le champ FAIRE comporte plusieurs valeurs égales à "FAIRE".
J'ai tenté à nouveaux sur une autre base et un autre formulaire avec DBGrid dont le script onload() est moins chargé :
- cela fonctionne parfaitement avec l'utilitaire de saisie des propriétés ... aucun plantage
- le code LUA ** self.setProperty("DBGrid1.ConditionalFormatting","if Moy_Ales > 9 then clGreen clWhite 0")** n'a pas d'effet quelquesoit l'évenement dans lequel il est invoqué ?
Y a t'il une faute dans ma façon de décrire ou de placer le scenario de condition?
Merci d'avance pour votre aide,
Cordialement,
BPH30
Last edit: BARRAL Philippe 2020-01-18
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
1) La version de samedi midi (la V1.4.1.a) corrige ce probléme de "Freeze" observé sur les valeurs nulles, merci de m'indiquer si cette version régle le "Freeze"
Dans les exemples que j'ai testé, il n'y a pas forcément tous les cas, notamment des valeurs nulles
2) La propriété ConditionalFormatting est du type TStringlist qui sont par défaut des propriétés statiques, donc uniquement activées au chargement du composant, j'ai rajouté le dynamisme sur celle ci (dans la prochaine version), de manière à pouvoir être assignée par script LUA
4) 3) Pour info, votre syntaxe est bonne
Last edit: neuts-jl 2020-01-18
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Pour le problème de freeze ca à l'air d'être bon de mon côté. Par contre j'ai un truc qui m'embête qui est que selon la manière dont je reviens sur une fenêtre en mode édition j'ai un blocage de l'application et la seule manière de sortir de là est de tuer le processus. Je met une image du machin. J'ai l'impression que cela se passe quand un menu contexuel est encore ouvert et que je passe à un autre formulaire mais je suis pas certain a 100%
En ce qui me concerne pour l'instant il faut que je digère déjà les nouvelles versions et que je mette en place dans le programme que j'écris les demandes que j'ai adressée. Ca va se faire dans les prochains jours. Par contre j'ai pas encore essayé, il y a une opion "fichier de données séparée" dans projet/paramètres/données/ Et j'aimerais savoir deux choses. la première est: si je développe une base avec cette option décochée, que ce passe-t-il. La deuxième question est: est-il possible de partager une base avec la même application ouverte sur deux ordinateurs différents. sans parler de vérouillage.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Si vous utilisez l'option decochée pour créer votre application, les données seront dans votre base avec votre code.
Au moment ou vous cochez, la base à vide est crée et le projet rechargé,, il faut passer ensuite dans chaque table en mode edition et les enregistrer pour créer physiquement les tables.
ensuite vous passez de l'un à l'autre sans probléme (attention aux modif de structure, il faudra réditer et enregistrer pour appliquer les modifs, les données ne sont pas perdues, sauf si vous supprimer des colonnes, bien sûr...).
Je me sert des données intégrées pour mettre au point l'application.
Ensuite vous pouvez partager la base par plusieurs clients, le verrouillage se fait au niveau du record par SQLITE
Last edit: neuts-jl 2020-01-19
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bonjour tous,
Après un certain temps, je reviens sur cette propriété ConditionalFormatting, qui fonctionne bien et j'aurais aimé savoir s'il est possible d'utiliser cette propriété pour modifier le style de toute une ligne sur un critère tiré d'une seule cellule ? J'ai créé une table qui contient des comptes pour une comptabilité en partie double, et pour pouvoir améliorer la lecture j'aimerais que certaines lignes soient d'une couleur spécifiques par exemple pour les comptes de passifs ou d'actifs. Chaque compte à un numéro, et l'idée et d'utiliser ce numéro pour assigner une style à toute une ligne. merci pour les réponses prochaines
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bonjour
Cela existe, un extrait de la doc :
if FieldName=Value then bgColor Color FontStyle [FieldNameToFormat]
FieldNameToFormat is optional
empty = FieldName
* = all fieldnames (row)');
Donc si vous mettez * c'est toute la ligne qui est concernée, exemple :
if nom contains "du" then clRed clWhite 0 *
La ligne sera rouge,ecriture blanche si nom contient "du"
Cordialement
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Bonjour,
Le DBGRID permet de changer les couleur du fond, polices, etc. Je me demandais s'il est possible de modifier ces options pour une cellule donnée, selon l'idée de formatage conditionnel que l'on trouve par exemple dans LibreOffice ou Excel. ex: les cells positives prennent la couleur verte, les cells négatives la couleur rouge.
Last edit: Petitpainauchocolat 2020-01-16
Bonjour Petitpainauchocolat,
Tout comme vous j'aime bien participer à l'enrichissement de NSBASE.
Tout comme vous je suis en faveur, en demande... d'une possibilité de formatage conditionnelle dans le composant DBGrid. C'est une excellente demande.
Je constate au fil de mes publications et demandes dans ce forum que beaucoup les lisent les publications (993 vues tout recemment pour l'ensemble des post) et, qu'en revanche, peu les commentent ... en dehors de Survite bien sur...
Cordialement,
BPH30
Last edit: BARRAL Philippe 2020-01-16
Ho bonne mère!
Non dédious ! (en chti)
Sapristi !
Je réfléchis....
Last edit: neuts-jl 2020-01-16
Bonjour à tous,
DBGrid étant un composant important de NSBASE , je propose qu'il devienne, un thème, un fil de discussion de même niveau que "Général Discussion". Ou alors de le placer dans "Général Discussion". Dans ce dernier cas l'actuel fil de discussion "DBGRID et couleurs" pourrait être rebaptisé "DBGRID".
Qu'en pensez vous ?
Cordialement,
BPH30
Ouf c'est fait
J'ai rajouté la propriété ConditionalFormatting qui permet d'écrire un scénario de filtrage
suivant les valeurs des champs et <,>,<>,= contient (Contains) et ne contient pas (NotContain) .
Agit sur la couleur de fond , de fonte et style de chaque cellule
Last edit: neuts-jl 2020-01-17
Je va tester ça, tout soudain.
Bonjour,
J'ai testé sur ma base, à partir de votre exemple, sans succes :
* Avec self.setProperty("DBGrid1.ConditionalFormatting",'if FAIRE contains "FAIRE" then clred clback 1') je n'obtiens rien
* Avec l'utilitaire de saisie des propriétés ( if FAIRE contains "FAIRE" then clred clback 1) et lorsque j'enregistre et passe en mode exécution : l'espace d'affichage du DBGRid est complètement vide et au bout de quelques secondes NSBASE se ferme tout seul sans aucun préavis.
j'ai présenté le scenario conditonnel de toutes façons possibles en changeant les double-cotes par des simple-cotes, avec une variable contenant le scénario .... j'obtiens toujours la même réaction : soit rien soit plantage... Bien sur le champ FAIRE comporte plusieurs valeurs égales à "FAIRE".
J'ai tenté à nouveaux sur une autre base et un autre formulaire avec DBGrid dont le script onload() est moins chargé :
- cela fonctionne parfaitement avec l'utilitaire de saisie des propriétés ... aucun plantage
- le code LUA ** self.setProperty("DBGrid1.ConditionalFormatting","if Moy_Ales > 9 then clGreen clWhite 0")** n'a pas d'effet quelquesoit l'évenement dans lequel il est invoqué ?
Y a t'il une faute dans ma façon de décrire ou de placer le scenario de condition?
Merci d'avance pour votre aide,
Cordialement,
BPH30
Last edit: BARRAL Philippe 2020-01-18
1) La version de samedi midi (la V1.4.1.a) corrige ce probléme de "Freeze" observé sur les valeurs nulles, merci de m'indiquer si cette version régle le "Freeze"
Dans les exemples que j'ai testé, il n'y a pas forcément tous les cas, notamment des valeurs nulles
2) La propriété ConditionalFormatting est du type TStringlist qui sont par défaut des propriétés statiques, donc uniquement activées au chargement du composant, j'ai rajouté le dynamisme sur celle ci (dans la prochaine version), de manière à pouvoir être assignée par script LUA
4) 3) Pour info, votre syntaxe est bonne
Last edit: neuts-jl 2020-01-18
Le ConditionalFormatting fonctionne parfaitement en mode script LUA.
Merci.
Pour le problème de freeze ca à l'air d'être bon de mon côté. Par contre j'ai un truc qui m'embête qui est que selon la manière dont je reviens sur une fenêtre en mode édition j'ai un blocage de l'application et la seule manière de sortir de là est de tuer le processus. Je met une image du machin. J'ai l'impression que cela se passe quand un menu contexuel est encore ouvert et que je passe à un autre formulaire mais je suis pas certain a 100%
Rien d'autre , pas de nouvelle demande d'évol ??
En ce qui me concerne pour l'instant il faut que je digère déjà les nouvelles versions et que je mette en place dans le programme que j'écris les demandes que j'ai adressée. Ca va se faire dans les prochains jours. Par contre j'ai pas encore essayé, il y a une opion "fichier de données séparée" dans projet/paramètres/données/ Et j'aimerais savoir deux choses. la première est: si je développe une base avec cette option décochée, que ce passe-t-il. La deuxième question est: est-il possible de partager une base avec la même application ouverte sur deux ordinateurs différents. sans parler de vérouillage.
Si vous utilisez l'option decochée pour créer votre application, les données seront dans votre base avec votre code.
Au moment ou vous cochez, la base à vide est crée et le projet rechargé,, il faut passer ensuite dans chaque table en mode edition et les enregistrer pour créer physiquement les tables.
ensuite vous passez de l'un à l'autre sans probléme (attention aux modif de structure, il faudra réditer et enregistrer pour appliquer les modifs, les données ne sont pas perdues, sauf si vous supprimer des colonnes, bien sûr...).
Je me sert des données intégrées pour mettre au point l'application.
Ensuite vous pouvez partager la base par plusieurs clients, le verrouillage se fait au niveau du record par SQLITE
Last edit: neuts-jl 2020-01-19
Merci pour ces renseignements.
Bonjour tous,
Après un certain temps, je reviens sur cette propriété ConditionalFormatting, qui fonctionne bien et j'aurais aimé savoir s'il est possible d'utiliser cette propriété pour modifier le style de toute une ligne sur un critère tiré d'une seule cellule ? J'ai créé une table qui contient des comptes pour une comptabilité en partie double, et pour pouvoir améliorer la lecture j'aimerais que certaines lignes soient d'une couleur spécifiques par exemple pour les comptes de passifs ou d'actifs. Chaque compte à un numéro, et l'idée et d'utiliser ce numéro pour assigner une style à toute une ligne. merci pour les réponses prochaines
Bonjour
Cela existe, un extrait de la doc :
if FieldName=Value then bgColor Color FontStyle [FieldNameToFormat]
FieldNameToFormat is optional
empty = FieldName
* = all fieldnames (row)');
Donc si vous mettez * c'est toute la ligne qui est concernée, exemple :
if nom contains "du" then clRed clWhite 0 *
La ligne sera rouge,ecriture blanche si nom contient "du"
Cordialement
Bonjour,
Merci pour l'info, et désolé pour le français approximatif, je devais être dans un état second.