salut
jai une table client(code,nom,prenom,adresse)
je voudrer colorer en rouge seulement les enregistrement(ligne de dbgrid) qui en un nom egale a le contenue d'un edit.text.
merci bien
salut
jai une table client(code,nom,prenom,adresse)
je voudrer colorer en rouge seulement les enregistrement(ligne de dbgrid) qui en un nom egale a le contenue d'un edit.text.
merci bien
un peu de recherche dans
FAQ
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
Bonjour
Voici un exemple :
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 procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin begin if PA.FieldByName('Manque').AsInteger = 0 then begin DBGrid1.Canvas.Brush.Color:= cllime; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; if (PA.FieldByName('Manque').AsInteger <> 0) and (PA.FieldByName('Coupe').Asstring <> '') then begin DBGrid1.Canvas.Brush.Color:= Clred; DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; end; end;
Voici la réponse:
puis dans l'evènnement :
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 Const Couleur_De_Selection=clBlue; Couleur_1=clWhite; Couleur_2=clRed; procedure DrawGRID(Valeur TEdit;Const MyGrid:TDBGrid;Const State:TGridDrawState; Const Rect: TRect; DataCol: Integer; Column: TColumn); begin with MyGrid do begin if gdSelected in State then begin Canvas.Brush.Color := Couleur_De_Selection end else begin if DataSource.DataSet['nom']=Valeur.Text then Canvas.Brush.Color := Couleur_2 else Canvas.Brush.Color := Couleur_1 end; DefaultDrawColumnCell(rect,datacol,column,state); end end;
essayez d'appelez la procédure comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part DBGridDrawColumnCell
a+
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 DrawGRID(edit1,DBGrid,State,Rect,DataCol,Column) // où "edit1" contient la valeur recherchée..
N'oublie pas ,
au lieu de faire ou
et efin !! sinon, en reste toujours ..
salut
j'ai le meme problème , mais enfin j'ai trouvé ce que cherche,mais il ya 2 problèmes
pour le dernier code
1-est ce qu'il est possible d'appeler la procedure DrawGRID à partir d'un evènement Onclick d'un TButton (avec quels paramètres)
2-lorsque je cherche une chaine de caractère ,il ne marche pas, mais lorsque je cherche une valeur (entier) tout va bien
et merci d'avance
Pour ton point deux, j'utilise :
pour des integer et
Code : Sélectionner tout - Visualiser dans une fenêtre à part PA.FieldByName('Manque').AsInteger
pour les chaines de caractères.
Code : Sélectionner tout - Visualiser dans une fenêtre à part PA.FieldByName('MaChaineDeCaractere').AsString
Enjoy
merci infiniment pour votre reponse
en fait j'ai essayé le 1er code mais j'ai pas compris c quoi le PA
...j'ai essayé le 2eme code avec :
mais toujours ne marche pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part if DataSource.DataSet.fieldbyname('nom').asstring=Valeur.Text
pouvez vous m'aider SVP
PA c'est ,à priori, le nom d'une table ou d'une Query.
Effectivement , sur différent en relisant différents sources , je viens de m'apercevoir que moi aussi j'utilise le nom de la table plutôt que
DataSource.DataSet. etc...
Paresse ou mauvaise Habitude ou autre ?
voici un exemple
peut-être comme ceci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TCdeForm.ResumeDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); begin case DataCol of 2,3 : with (Sender as TDBGrid).Canvas do begin Brush.Color:=clWindow; if BlignesETAT_LIGNE.AsString='M' then Brush.Color:=clRed; if BlignesETAT_LIGNE.AsString='S' then Brush.Color:=clYellow; Font.Color:=clBlack; FillRect(Rect); TextOut(Rect.Left, Rect.Top,Column.Field.AsString); end; else Resume.DefaultDrawColumnCell(Rect,DataCol,Column,State); end; //CASE
Code : Sélectionner tout - Visualiser dans une fenêtre à part if DataSource.DataSet['nom'].asstring=Valeur.Text
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
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager