IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Colorer une cellule sélectionnée dans un DBCtrlGrid contenant des TDBMemo


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut Colorer une cellule sélectionnée dans un DBCtrlGrid contenant des TDBMemo
    Bonjour,

    Sous Delphi 7, j’utilise deux DBCtrlGrid liés entre eux :

    • DBCtrlGrid2 affiche les catégories (chaque cellule contient un TDBMemo)
    • DBCtrlGrid1 affiche les produits en fonction de la catégorie sélectionnée.



    Je souhaite que lorsqu’on clique sur une cellule (un TDBMemo) dans DBCtrlGrid2, le texte (ou l’arrière-plan) de cette cellule soit mis en surbrillance, par exemple en changeant sa couleur, pour indiquer visuellement qu’elle est sélectionnée.

    Existe-t-il un moyen simple de faire cela ? Peut-on changer dynamiquement la couleur du TDBMemo sélectionné dans le DBCtrlGrid ?

    Merci d’avance pour votre aide.
    Images attachées Images attachées  

  2. #2
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 471
    Par défaut
    Citation Envoyé par LandGreen Voir le message
    Peut-on changer dynamiquement la couleur du TDBMemo sélectionné dans le DBCtrlGrid ?
    Je dirais que non. La solution consiste à personnaliser le dessin du panel qui contient le contrôle, en utilisant par exemple l'événement OnPaintPanel du DBCtrlGrid.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;
      Index: Integer);
    var
      R: TRect;
    begin
      // Récupère la zone du panel
      R := DBCtrlGrid.ClientRect;
     
      // Si le panel en cours est celui sélectionné
      if Index = DBCtrlGrid.PanelIndex then
      begin
        // Si vous utilisez un style de bordure relevé, ajustez la zone
        if DBCtrlGrid.PanelBorder = gbRaised then
          InflateRect(R, -2, -2);
        // Assignez la couleur désirée pour la sélection
        DBCtrlGrid.Canvas.Brush.Color := clYellow; // Par exemple, jaune pour la sélection
        DBCtrlGrid.Canvas.FillRect(R);
      end
      else
      begin
        // Pour les autres panels, vous pouvez redessiner avec la couleur par défaut
        DBCtrlGrid.Canvas.Brush.Color := clWindow;
        DBCtrlGrid.Canvas.FillRect(R);
      end;
    end;
    Nom : Video_2025_05_24-1_edit_0.gif
Affichages : 45
Taille : 244,0 Ko
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.
    Ce n’est pas un bogue - c’est une fonctionnalité non documentée.

  3. #3
    Membre très actif
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2018
    Messages
    481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2018
    Messages : 481
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    procedure TForm1.DBCtrlGrid1PaintPanel(DBCtrlGrid: TDBCtrlGrid;
      Index: Integer);
    var
      R: TRect;
    begin
      // Récupère la zone du panel
      R := DBCtrlGrid.ClientRect;
     
      // Si le panel en cours est celui sélectionné
      if Index = DBCtrlGrid.PanelIndex then
      begin
        // Si vous utilisez un style de bordure relevé, ajustez la zone
        if DBCtrlGrid.PanelBorder = gbRaised then
          InflateRect(R, -2, -2);
        // Assignez la couleur désirée pour la sélection
        DBCtrlGrid.Canvas.Brush.Color := clYellow; // Par exemple, jaune pour la sélection
        DBCtrlGrid.Canvas.FillRect(R);
      end
      else
      begin
        // Pour les autres panels, vous pouvez redessiner avec la couleur par défaut
        DBCtrlGrid.Canvas.Brush.Color := clWindow;
        DBCtrlGrid.Canvas.FillRect(R);
      end;
    end;


    Merci beaucoup pour ta réponse rapide, claire et efficace. J’ai passé 2 heures à galérer sur ChatGPT / DeepSeek sans rien trouver de concret, et là en 2 minutes tu m’as débloqué. Chapeau !

  4. #4
    Membre expérimenté
    Avatar de XeGregory
    Homme Profil pro
    Passionné par la programmation
    Inscrit en
    Janvier 2017
    Messages
    471
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Passionné par la programmation
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Janvier 2017
    Messages : 471
    Par défaut
    Vous ne pouvez pas faire confiance à un code que vous n'avez pas totalement rédigé vous-même.
    Ce n’est pas un bogue - c’est une fonctionnalité non documentée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] colorer une cellule selon si la couleur existe dans une plage
    Par Nouky95 dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 19/06/2019, 11h31
  2. Réponses: 7
    Dernier message: 12/07/2017, 14h04
  3. comment colorer une cellule dans un JTable sous NerBeans?
    Par khadi8 dans le forum Composants
    Réponses: 1
    Dernier message: 22/04/2012, 17h39
  4. Réponses: 1
    Dernier message: 15/01/2007, 18h32
  5. Table : rendre une cellule éditable dans un tableau
    Par mollig dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 15/08/2006, 00h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo