Bon, je viens faire état de mon avancement pour ceux que ca intéresse !
Alors pour la couleur de fond des cellules, la solution consistant a utiliser CopyRect et Pixels fonctionne, mais c'est assez lourd à mettre en œuvre pour avoir un truc "réutilisable". Pour récupérer la police, je n'ai pas trouver de solution satisfaisante. J'ai donc abandonné cette piste.
Effectivement la solution consistant à enregistrer la couleur et la police directement dans la chaine de cellule était une bonne piste, mais c'est pareil je ne l'ai pas approfondie plus que ça car trop lourde à mettre en place dans mes projets.
Finalement j'en suis arrivé a une solution qui ne correspond pas vraiment a ce que je souhaitais au départ, mais qui me convient bien pour le moment :
Je définit un type de fonction :
typedef void MaFonctionDeColoration( TDBGridColumns *col, TFont *f, TColor &c ) ;
Et ma fonction d'export qui etait avant :
void DBGridToExcel( TDBGrid * aGrid, AnsiString aDestinationFileName )
devient :
void DBGridToExcel( TDBGrid * aGrid, AnsiString aDestinationFileName, MaFonctionDeColoration*aFunction )
Donc dans mes projets j'implémente une fonction :
1 2 3 4 5
| void ColorCellule( TDBGridColumns *aCol, TFont *aFont, TColor &aColor )
{
// TESTE ET RENVOI LA COULEUR ET LA POLICE ADEQUAT
// (fonction équivalente à ce qui se trouve dans OnDrawColumnCell)
} |
Ca me permet sans trop de modif (j'ai juste a écrire la fonction ColorCellule en m'inspirant très fortement de OnDrawColumnCell) de pouvoir faire un export vers EXCEL Coloré!
Cette solution me satisfait pour mes besoins personnels.
Je ne met pas ce post en [Résolu] pour le cas où une personne passerait par là et proposerait une autre solution, mais de mon coté j'ai résolu mon problème.
Merci encore a tous.
Partager