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 :

changer la couleur d'un mot dans un dbgrid


Sujet :

Delphi

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 118
    Points
    118
    Par défaut changer la couleur d'un mot dans un dbgrid
    Bonjour,

    Je veux sélectionner en rouge le mot "PANNE" dans toutes les lignes d'un dbgrid nommé DBGRID1 d'une table nommée TABLE1.

    je travaille en delphi7.

    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 061
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    Tout va dépendre si "PANNE" est la valeur du champ ou seulement un mot dans le champ .
    Dans le premier cas c'est simple sans le second par contre , ça risque d'être coton

    voir la et tout ce qui concerne l'évènement ondrawDataCell
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 118
    Points
    118
    Par défaut
    salut sergio,

    Malheureusement il s'agit d'un mot dans le champs et je compte toujours sur votre aide,
    Merci pour votre réponse.

  4. #4
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 061
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Bonjour,

    on pourrait au moins voir vos tentatives !

    voici , une première approche 'presque complète'
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
    procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
    var  Pvaleur : String; // chaine partielle
         taille,top,left,posPanne : integer;
     
    begin
    with (sender as TDBGrid) do
    begin
      if Column.FieldName='Champ_Panne' then
       begin
         posPanne:=pos('PANNE',Column.Field.asString);
         if posPanne>0 then
          begin
            {// cas simple
             // Canvas.Font.Color:=clRed;
             // DefaultDrawColumnCell(Rect,Datacol,Column,State);
            }
            // cas "complexe"
            // il va falloir séparer le canvas en 3 parties et calculer la taille a chaque fois
            // effacer ? 
            Canvas.FillRect(Rect);
            // 1° partie de la chaine
            pvaleur:=Copy(column.Field.asString,1,pospanne-1);
            top := rect.top +2;
            left := Rect.left + 2;
            Taille:=Canvas.TextWidth(pvaleur);
            Canvas.TextOut(Left,Top,pvaleur);
            // 2° partie de la chaine = 'PANNE'
            pvaleur:='PANNE';
            left := left+Taille;
            Taille:=Canvas.TextWidth(pvaleur);
            Canvas.font.Color:=clred;
            Canvas.TextOut(Left,top,pvaleur);
            // 3° partie
            pvaleur:=Copy(column.Field.asString,pospanne+5,length(column.Field.asString)-pospanne);
            left := left+Taille;
            Canvas.font.Color:=clwindowText;
            Canvas.TextOut(Left,Top,pvaleur);
          end;
       end
     else DefaultDrawColumnCell(Rect,Datacol,Column,State);
    end;
    end;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2005
    Messages : 100
    Points : 118
    Points
    118
    Par défaut
    salut sergio,

    j'ai essayé votre proposition , ça ne marche toujours pas
    j'ai du loupé quelque chose,
    je vais continuer mes recherches en tenant compte de ce que vous avez
    proposé et je vous tiendrai au courant.
    Merci encore.

  6. #6
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 061
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 061
    Points : 41 021
    Points
    41 021
    Billets dans le blog
    62
    Par défaut
    Pourtant , mon test (fait en D3) fonctionne .
    Je dois avouer ,n'avoir pas tester différents cas :
    valeur débutant par 'PANNE'
    valeur finissant par 'PANNE'
    je n'aime pas non plus les
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    top := rect.top +2;
    left := Rect.left + 2;
    trop 'fixes' , si jamais la hauteur des cellules n'était pas standard , cela ne serait certainement pas trop centré en hauteur .
    J'ai fait au plus 'simple' sans soucis d'optimisation (j'avais aussi tenté avec des TextRect , plus complexe)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

Discussions similaires

  1. Changer la couleur d'un mot dans une richtxtbox
    Par Lostincode dans le forum C#
    Réponses: 4
    Dernier message: 12/07/2012, 15h40
  2. changer la couleur d'un mot dans un jtextpane
    Par tamara6 dans le forum Débuter
    Réponses: 2
    Dernier message: 26/03/2010, 20h08
  3. Changer la couleur d'un mot dans un wxTextCtrl ?
    Par Poison_xtreamlua dans le forum wxWidgets
    Réponses: 1
    Dernier message: 30/06/2009, 14h52
  4. [WD10]Changer la couleur d'un mot dans un champ RTF
    Par Louis Griffont dans le forum WinDev
    Réponses: 2
    Dernier message: 15/11/2007, 03h52
  5. Changer la couleur d'une ligne dans un DBGrid
    Par fba dans le forum Composants VCL
    Réponses: 5
    Dernier message: 24/10/2005, 20h30

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