Menu

DBGRID et couleurs

2020-01-16
2025-03-26
  • Petitpainauchocolat

    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
  • BARRAL Philippe

    BARRAL Philippe - 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
  • neuts-jl

    neuts-jl - 2020-01-16

    Ho bonne mère!
    Non dédious ! (en chti)
    Sapristi !
    Je réfléchis....

     

    Last edit: neuts-jl 2020-01-16
  • BARRAL Philippe

    BARRAL Philippe - 2020-01-17

    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

     
  • neuts-jl

    neuts-jl - 2020-01-17

    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

    if Name contains "a" then clred clback 1
    if ParentId=-1 then clGreen clWhite 0
    if ParentId>1 then clFuchsia clWhite 0
    
     

    Last edit: neuts-jl 2020-01-17
  • Petitpainauchocolat

    Je va tester ça, tout soudain.

     
  • BARRAL Philippe

    BARRAL Philippe - 2020-01-18

    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
  • neuts-jl

    neuts-jl - 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
    • BARRAL Philippe

      BARRAL Philippe - 2020-01-20

      Le ConditionalFormatting fonctionne parfaitement en mode script LUA.
      Merci.

       
  • Petitpainauchocolat

    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%

     
  • neuts-jl

    neuts-jl - 2020-01-19

    Rien d'autre , pas de nouvelle demande d'évol ??

     
  • Petitpainauchocolat

    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.

     
  • neuts-jl

    neuts-jl - 2020-01-19

    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
  • Petitpainauchocolat

    Merci pour ces renseignements.

     
  • Petitpainauchocolat

    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

     
  • Neuts-jl

    Neuts-jl - 2025-03-26

    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

     
    • Petitpainauchocolat

      Bonjour,
      Merci pour l'info, et désolé pour le français approximatif, je devais être dans un état second.

       

Log in to post a comment.

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.