begin process at 2012 02 09 09:42:49
  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 Administrateur CodeS-SourceS
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 Administrateur CodeS-SourceS
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 Administrateur CodeS-SourceS
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. Problème Violation d'accès drag&drop entre 2 tableaux [ par Flash11 ] Bonjour , Je vais tenter d'être le plus clair et je remercie d'avance tout ceux qui vont m'aider. Voila j'ai un programme composé de : -2 TDBGrid - Un petit Proxy fait maison [ par beloubelou ] Bonjour, Ce petit programme fonctionne comme un proxy. Il utilise deux composants delphi: THttpserver de FPiette et TAlWinhttp de Alcinone. Le premi


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

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 : 1,310 sec (3)

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