Dbgrid multiselect & couleurs

impossibleok Messages postés 54 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 26 juin 2009 - 3 déc. 2008 à 14:49
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 - 6 déc. 2008 à 18:38
bjr;
je reste toujours sur la dbgrid mysterieuse de delphi!!!
peut on colorier en vert juste les lignes selectionnées!
sinon ! peut on acceder a la valeur (selectionnée/non) d'une ligne dans l'evenement ondrawcolumncell ???
merci

10 réponses

cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 déc. 2008 à 15:53
bonjour,

PROCEDURE TForm1.DBGrid1DrawColumnCell(Sender: TObject; CONST Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
i: integer;
begin
if (gdFocused in State) or (gdSelected in State) then
   begin
  For i:=0 to Columns.Count do
    if Column.Field  = Query1.Fields[i] then
      begin
      Canvas.Font.Style:= ?
      Canvas.Brush.Color := ?
      Canvas.Font.Color   := ?
      end;
   end;
end;

cantador
0
impossibleok Messages postés 54 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 26 juin 2009
3 déc. 2008 à 16:02
re:
Query1 ???
je veus juste colorier quand je selectionne en maintenant la touche ctrl !!!

merci.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 déc. 2008 à 16:05
il manque :
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
dans le drawcell

mais ça ne répond pas à ta question puisque ça permet de colorier les colonnes mais pas les lignes..
G
tu veux pas utiliser un StringGrid ???

cantador
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 déc. 2008 à 16:19
Voilà ça marche :

PROCEDURE TForm1.DBGrid1DrawColumnCell(Sender: TObject; CONST Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
VAR
  i, CumulLongueur: integer;
BEGIN
  IF gdSelected IN State THEN
    TDBGrid(Sender).Canvas.Brush.Color := clNavy


  ELSE
  BEGIN
    IF TDBGrid(Sender).DataSource.DataSet.FieldByName('PhoneExt').Value > 100 THEN
      TDBGrid(Sender).Canvas.Brush.Color : = clLime
    ELSE
      TDBGrid(Sender).Canvas.Brush.Color := clWhite;
  END;
  TDBGrid(Sender).DefaultDrawColumnCell(rect, datacol, column, state);
END;

test effectué sur le champ "PhoneExt" de la table "employee" de la base DBDEMOS de Borland

cantador
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
impossibleok Messages postés 54 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 26 juin 2009
3 déc. 2008 à 17:36
re:
bin! tout court , il me faut juste une ligne de code qui traduit le fait qu'une ligne a ete selectionné.
genre(si dbgrid.ligne est selectionnée).

merci.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
3 déc. 2008 à 19:33
Ohhh !!! ben tu l'as avec : TGridDrawState

TGridDrawState représente l'information utile lors de la restitution de la cellule d'une grille.
Unité
Grids ou QGrids
Syntaxe Delphi :
type TGridDrawState = set of (gdSelected, gdFocused, gdFixed);
Syntaxe C++ :
enum Grids__3 { gdSelected, gdFocused, gdFixed };
typedef Set<Grids_3, gdSelected, gdFixed> TGridDrawState;
Description


TGridDrawState représente l'information d'état de la cellule d'une grille qui est en cours de restitution. Il s'agit d'un ensemble comprenant 0 ou plus de :


Valeur Signification



gdSelected La cellule est actuellement sélectionnée.
gdFocused La cellule détient la focalisation d'entrée.
gdFixed La cellule est dans une région fixe de la grille.




tu as déjà la première mouture du code...

cantador
0
impossibleok Messages postés 54 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 26 juin 2009
4 déc. 2008 à 15:33
re:
tout ce code me semble un peu surchargé!
pourtant mon interogation etait bien claire et nette.
une ligne de code traduisant: "si ligne de dbgrid est selectionnée" !!!

merci.
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
4 déc. 2008 à 22:21
Tu as la réponse !
mercredi 3 décembre 2008 à 15:53:22 | Re : dbgrid multiselect & couleurs

il suffit de lire et ce que je t'ai fourni ce n'est pas du code.

mais l'aide de delphi... (F1)

cantador
0
impossibleok Messages postés 54 Date d'inscription lundi 27 mars 2006 Statut Membre Dernière intervention 26 juin 2009
5 déc. 2008 à 00:59
re:
franchement je suis dans l'incapacité de déduire quoi que ses soit sur cet aide.
ssssssssssssssssssoooooooooooooooooosssssssssssssssssss
0
cs_cantador Messages postés 4720 Date d'inscription dimanche 26 février 2006 Statut Modérateur Dernière intervention 31 juillet 2021 13
6 déc. 2008 à 18:38
C'est Noël !!!

if (gdFocused in State) or (gdSelected in State)

cantador
0
Rejoignez-nous