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
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..
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
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