Récupérer couleur / police dans une cellule de DBGrid
BernieNoel68
Messages postés92Date d'inscriptionvendredi 12 octobre 2007StatutMembreDernière intervention20 novembre 2009
-
27 nov. 2008 à 11:29
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 2021
-
28 nov. 2008 à 14:11
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)
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!
A voir également:
Récupérer couleur / police dans une cellule de DBGrid
beckerich
Messages postés302Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention17 septembre 20132 28 nov. 2008 à 12:07
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;
Vous n’avez pas trouvé la réponse que vous recherchez ?
beckerich
Messages postés302Date d'inscriptionjeudi 29 septembre 2005StatutMembreDernière intervention17 septembre 20132 28 nov. 2008 à 12:27
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...
cs_cantador
Messages postés4720Date d'inscriptiondimanche 26 février 2006StatutModérateurDernière intervention31 juillet 202113 28 nov. 2008 à 14:11
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