begin process at 2010 03 19 05:37:21
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Débutant(e)

 > 

Colorier une cellule lorque l'on clique dessus


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Colorier une cellule lorque l'on clique dessus

jeudi 28 février 2008 à 09:35:03 | Colorier une cellule lorque l'on clique dessus

grandyaka54

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

jeudi 28 février 2008 à 16:45:01 | Re : Colorier une cellule lorque l'on clique dessus

MAURICIO

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+
jeudi 28 février 2008 à 17:06:08 | Re : Colorier une cellule lorque l'on clique dessus

grandyaka54

Réponse acceptée !

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.

jeudi 28 février 2008 à 17:10:38 | Re : Colorier une cellule lorque l'on clique dessus

MAURICIO

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+

jeudi 28 février 2008 à 17:11:42 | Re : Colorier une cellule lorque l'on clique dessus

MAURICIO

Ou alors pour la cellule seleccionnée mais sans focus:
if (gdSelected in State) then
jeudi 28 février 2008 à 17:26:07 | Re : Colorier une cellule lorque l'on clique dessus

grandyaka54

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


Cette discussion est classée dans : cellule, clique, dessus, colorier, lorque


Répondre à ce message

Sujets en rapport avec ce message

Colorier une cellule d'un grid [ par lapucedu88 ] Bonjour, J'aurai souhaiter savoir comment il faut que je fasse pour que lorsque je clique dans une cellule d'un Grid celle ci change de couleur.Je pen COLORIER UNE CELLULE BIEN DEFINIE D'UN STRINGGRID [ par guy jeuniaux ] bonjour,Je tourne en rond sur tous les forums et je n'arrive pas à écrire ce petit bout de code.Je voudrais tout simplement lorsque je clique sur un b Pb avec une SavePictureDialog. [ par Becracker ] Salut les gars, J'ai un ptit -et étrange- prob avec une SavePictureDialog. J'ai mis dams mon application la possibilité de sauvegarder des images : K Label en avant plan [ par kleline ] Je souhaite affiché un label au dessus (en avant plan) d'un composant planner. Un peu a la façon de photoshop, un calque au dessus d'un autre. Mais so Recuperer la valeur d'une cellule dans un dbgrid / Bloquer une cellule [ par vaginator120 ] Bonjour tout le monde,Mon problème est simple, je souhaite recuperer la valeur d'un cellule ou de bloàquer celle-ci.J'arrive a recuperer la ligne et l controler la saisie dans une cellule d'un dbgrid? [ par kam81 ] Bonjour,Est il possible de controler la saisie d'une donnée dans une cellule d'un dbgrid.par exemple n'autoriser que la saisie des chiffres pour modif problême avec les nombres dans un classeur OpenOffice [ par darky93 ] Bonjour!Je fait un  programme qui doit "fonctionné" aussi bien avec Excel et OpenOffice. Avec Excel "j'ai pas trop de problèmes", mais avec OpenOffice cellule de dbgrid [ par deubal ] bonjour,Voila, j'ai un dbgrid lie a une table qui affiche 3 champs (code, libelle, serial), les utilisateurs selectionnent le code ou le libelle et je Double clique sur un TPageControl [ par Indelphini ] Bonjour j'ai une appli multi documents, les documents étant accessibles par les onglets d'un TPageControl. Un clique droit sur un onglet ouvre un menu changer le text a chaque clic [ par hitman94440 ] Bonjour a tous.... Je suis nouveau donc je suis le nul des nuls. Voila je veux faire sa: j'ai une texte1 et un bouton puis moi je veux que chaque fois


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mars 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,234 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales