Colorier une cellule lorque l'on clique dessus

Résolu
grandyaka54 Messages postés 97 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 18 décembre 2013 - 28 févr. 2008 à 09:35
grandyaka54 Messages postés 97 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 18 décembre 2013 - 28 févr. 2008 à 17:26
Bonjour,

J'ai un DBGrid relié a un DataSource lui meme relié à un IBQuery et IBUpdateSql.

Malgrès les nombreux exemples sur ce forum je n'arrive pas a colorier la cellule que je sélectionne avec la souris et qui reste en couleur pendant la saisie.

Merci de l'aide...

5 réponses

grandyaka54 Messages postés 97 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 18 décembre 2013 5
28 févr. 2008 à 17:06
Merci pour l'aide mais malheureusement, ça n'a pas fonctionné malgres  DBGrid.defaultDrawing = False.

Par contre, j'ai écrit qui marche puisque au moment où la cellule perd le focus (Touche tab ou entrée), il met le contenu saisie en rouge si elle ne respecte pas les conditions et reste en noir dans le cas contraire.

-----------------------------------------------------------------------------------------------------------------

  //Le contenu de la colonne [9] en rouge si condition non respecter
  if not (gdFocused in State) then
  begin


    if Column.Index = 9 then  
    with DBGrid do
    begin


      if (Length(TField(Column.Field).AsString) <> 8) and (Length(TField(Column.Field).AsString) <> 11)  then
      begin
        Canvas.Font.Color := clRed;
        Canvas.Font.Style := [fsBold];
        Canvas.Font.Size := 10;
      end;
    end;
  end;

  //On applique les modifications.
  DBGrid.DefaultDrawColumnCell(Rect,DataCol, Column, State);

-------------------------------------------------------------------------------------------------------------------

Merci pour l'aide.
3
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
28 févr. 2008 à 16:45
Bonjour,

// Désactiver le coloriage par défaut :
NomDBGrid.defaultDrawing à false!!!

Ensuite, dans le OnDrawColumnCell de ta DBGrid fais comme ceci:

procedure TFrmPrin.NomDBGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
begin  If (State [gdSelected]) Or (State [gdSelected, gdFocused])
  Then NomDBGrid.Canvas.Brush.Color  := clGreen;

  // Appel de la fonction par défaut :
  NomDBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

Voilá
A+
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
28 févr. 2008 à 17:10
A mon avis c' est ici qui a un problème : 
if not (gdFocused in State) then

tu dois faire :
if (gdFocused in State) then


A+
0
cs_MAURICIO Messages postés 2106 Date d'inscription mardi 10 décembre 2002 Statut Modérateur Dernière intervention 15 décembre 2014 5
28 févr. 2008 à 17:11
Ou alors pour la cellule seleccionnée mais sans focus:
if (gdSelected in State) then
0

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

Posez votre question
grandyaka54 Messages postés 97 Date d'inscription vendredi 19 octobre 2007 Statut Membre Dernière intervention 18 décembre 2013 5
28 févr. 2008 à 17:26
Alors avec :
  if (gdFocused in State) then
ou alors
  if (gdSelected in State) then
ou encore
  if not (gdSelected in State) then

avec DBGrid.defaultDrawing = False ou True, je n'ai aucun changement.

Mais ça marche seulement comme dans mon exemple : 
   if not (gdFocused in State) then
0
Rejoignez-nous