begin process at 2010 02 10 08:47:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Delphi

 > 

Divers

 > 

Aide et documentation

 > 

Récupérer couleur / police dans une cellule de DBGrid


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

Récupérer couleur / police dans une cellule de DBGrid

jeudi 27 novembre 2008 à 11:29:46 | Récupérer couleur / police dans une cellule de DBGrid

BernieNoel68

Bonjour a tous!

J'ai un petit problème pour récupérer la couleur et la police d'une cellule dans un DBGrid.

Je m'explique : pour rendre l'affichage plus agréable dans mon DBGrid je modifie la couleur et la police en fonction de la valeur d'un champ (via OnDrawColumnCell)

-------------------------------------------------------------------------
procedure
TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
If TDBGrid(Sender).DataSource.DataSet.FieldByName('MonChamp').AsInteger=1Then
begin
//alorsonmetlacelluledelaligneàclRed et la police en clWhite
TDBGrid(Sender).Canvas.Brush.Color := clRed;
TDBGrid(Sender).Canvas.Font.Color := clWhite;
end else
begin
//SinononmetlacelluleàclWhite et la police en clBlack
TDBGrid(Sender).Canvas.Brush.Color := clWhite;
TDBGrid(Sender).Canvas.Font.Color := clBlack;
end;
//Onappliquelesmodifications.
TDBGrid(Sender).DefaultDrawColumnCell(rect,datacol,column,state);
end;
-------------------------------------------------------------------------


Jusque là pas de problème tout fonctionne!

Pour un export, je souhaite récupérer la valeur des champs (de ce coté la pas de problème, j'arrive a exporter le contenu de mon DBGrid)
mais je souhaiterais récupérer également la couleur des cellules et la police!

J'ai essayé pas mal de truc, mais je n'arrive pas!

Avez vous une idée?

Merci d'avance!

vendredi 28 novembre 2008 à 00:23:46 | Re : Récupérer couleur / police dans une cellule de DBGrid

beckerich

salut,

comment parcours-tu les enregistrements pour l'export :

par un ?

while not Dataset.Eof do
begin
  fonction d'export du record;
  Next;
end;

dans ce cas, tu dois faire les mêmes test que dans l'évènement
DBGrid1DrawColumnCell

pour spécifier la couleur de la cellule et de la police.

Luc.


vendredi 28 novembre 2008 à 08:37:29 | Re : Récupérer couleur / police dans une cellule de DBGrid

BernieNoel68

Merci de ta reponse! En effet ca aurait été la solution logique, mais ca ne va pas dans mon cas malheureusement.

Le but est de faire une fonction générique d'export pour un DBGrid :

procedure TForm1.ExportDBGrid( aGrid: TDBGrid );
begin
while not aGrid.DataSource.Dataset.Eof do
begin
  //fonction d'export du record;
  Next;
end;

end;
Donc je ne connait pas les critères de coloration du DBGrid et c'est bien là le problème! Il faudrait que je puisse les retrouver dynamiquement.

Si queluqu'un a une idée je suis preneur!
vendredi 28 novembre 2008 à 12:01:41 | Re : Récupérer couleur / police dans une cellule de DBGrid

cantador

Membre Club
bonjour,
une idée comme ça..
pourquoi ne pas boucler sur les records du dbgrid lui même ?

cantador
vendredi 28 novembre 2008 à 12:07:49 | Re : Récupérer couleur / police dans une cellule de DBGrid

beckerich

je suis entrain de bosser la dessus, cantador:

procedure TFM_DOCFOU.ACT_OOExecute(Sender: TObject);
  procedure TestCells;
  var
    sl: TStringList;
    i_row, i_col: integer;
    f_colenter: TNotifyEvent;
  begin
    i_row := 0;
    i_col := 0;
    sl := TStringList.Create;
    try
      DGD_TRFDOC.DataSource.DataSet.First;
      f_colenter := DGD_TRFDOC.OnColEnter;
      DGD_TRFDOC.OnColEnter := DGD_TRFDOCColEnter;
      try
        while not DGD_TRFDOC.DataSource.DataSet.Eof do
        begin
          for i_col := 0 to DGD_TRFDOC.Columns.Count - 1 do
          begin
            DGD_TRFDOC.SelectedIndex := i_col;
            sl.Add(format('ligne %d colonne %d texte %s', [i_row, i_col, DGD_TRFDOC.SelectedField.AsString]));
            // je ne trouve pas de propriété ou de méthode renvoyant la cellule active, on trouve bien la colonne (selectedindex) mais pas la cellule
          end;
          DGD_TRFDOC.DataSource.DataSet.Next;
          Inc(i_row);
          i_col := 0;
        end;
      finally
        DGD_TRFDOC.OnColEnter := f_colenter;
      end;
      sl.SaveToFile('toto.txt');
    finally
      sl.Free;
    end;
  end;
begin
  SCB_TRI.ItemIndex := 3;
  SCB_TRIClick(Self);
  with DTB_TRFDOC do
  begin
      TestCells;
  end;
end;
vendredi 28 novembre 2008 à 12:27:17 | Re : Récupérer couleur / police dans une cellule de DBGrid

beckerich

j'ai regardé l'implémentation de TCustomGrid dans l'unité Grids.
Il n'y a pas de notion de cellule active dans les propriétés privées ou protégées.
Il faudrait réécrire un composant en y ajoutant cette notion, mais bonjour le boulot, et puis la routine de BernieNoel68 ne serait plus indépendante...

j'abandonne,
Luc.
vendredi 28 novembre 2008 à 13:32:16 | Re : Récupérer couleur / police dans une cellule de DBGrid

cantador

Membre Club
et pourquoi pas un transtypage :

  TStringGrid(DBgrid1).Cells[ACol, ARow]

cantador
vendredi 28 novembre 2008 à 13:45:37 | Re : Récupérer couleur / police dans une cellule de DBGrid

beckerich

 				 						property 				 				 						Cells 				 [ACol, ARow: Integer]: string;

renvoie une chaîne de caractères et non pas une référence à une cellule

luc
vendredi 28 novembre 2008 à 14:11:16 | Re : Récupérer couleur / police dans une cellule de DBGrid

cantador

Membre Club
hé oui..le TDBGrid est trop pauvre en ce domaine...

avec Le TcxGrid on a en revanche :

procedure TFAffaire.cxGrid1DBTableView1CustomDrawCell(
  Sender: TcxCustomGridTableView; ACanvas: TcxCanvas;
  AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean);
begin

et
procedure TFAffaire.cxGrid1DBTableView1StylesGetContentStyle(
  Sender: TcxCustomGridTableView; ARecord: TcxCustomGridRecord;
  AItem: TcxCustomGridTableItem; out AStyle: TcxStyle);
begin

cantador


Cette discussion est classée dans : récupérer, couleur, sender, police, tdbgrid


Répondre à ce message

Sujets en rapport avec ce message

Fenêtre pour police, couleur ... [ par Ramses__987 ] Slt,Est-ce que qqn sait comment ouvrir la fenêtre de word, pour choisir la police, la couleur etc ... ? Mci d'avance, ++ Couleur moyenne d'une image [ par Paic_citron ] Voila, j'aimerais récupérer la couleur moyenne d'une image, dans le but de réaliser un logiciel de Mozaik Art, c'est comme le Ascii Art, mais à la pla dbgrid,couleur.... [ par exyacc ] salut, j'utilise ce code pour changer la couleur de selection d'un dbgrid. procedure TForm1.RxDBGrid3DrawColumnCell(Sender:TObject;const Rect:TRect;D Couleur de la police d'une ligne d'un ListView [ par rguef ] Bonjour, Je cherche à changer la couleur de police d'une ligne dans un ListView ? Est-ce possible ?WezzaR Récupérer la couleur d'une cellule stringGrid? [ par ataeallah ] Bonjour,Comment récupérer la couleur d'une cellule dans une stringGrid (Par exemple la premier cellule de la deuxième ligne)?Merci d'avance.ABDA@+ Couleur separation colonne TDBGrid [ par patdimby ] Bonjour a tousJe me demande comment peut on modifier la couleur de la ligne quisepare deux colonnes(champs) d'un TDBGrid.Merci de me repondre. couleur et police d'un menu [ par may2008 ] Bonjour, j'aimerais svoir s'il ya une possibilté de modifier couleur et police d'un menu créer en delphi 6Merci. Changer l'apparence des noms des fichiers (couleur du texte) [ par smailyyy ] Bonjour à tous ! Y a une application qui sert à changer la couleur des noms des fichier ou des dossiers (le nom du fichier en couleur). svp je veux bi


Nos sponsors


Sondage...

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
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 : 2,122 sec (4)

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