Bonjour a tous je souhaiterais mettre du text dans une TdrawGrid. est ce possible??? si c'est impossible je voudrais savoir comment faire pour pouvoir colorier les cases d'un tstring grid en fonction de leur contenu...
merci d'avance de votre aide
Bonjour a tous je souhaiterais mettre du text dans une TdrawGrid. est ce possible??? si c'est impossible je voudrais savoir comment faire pour pouvoir colorier les cases d'un tstring grid en fonction de leur contenu...
merci d'avance de votre aide
Bonjour,
Tu peux colorier les cases d'un TStringGrid (qui semble mieux adapté à tes besoins) en agissant sur l'évènement OnDrawCell. Utilises alors StringGrid1->Canvas->FillRect pour dessiner le fond et StringGrid1->Canvas->TextRect pour écrire le texte.
Ex:
Règle aussi la valeur de DefaultDrawing selon tes besoins (cf doc).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { TCanvas *pCanvas = ((TStringGrid *)Sender)->Canvas; pCanvas->Brush->Color = clSilver; pCanvas->FillRect(Rect); pCanvas->Font->Color = clBlack; pCanvas->TextOut(Rect.Left+5,Rect.Top+2, ((TStringGrid *)Sender)->Cells[ACol][ARow]); }
merci, ca a l'air d'etre sa mais je n'arrive pas a colorier toute les case indépendament. sa vien sans doute de moi (je suis pas sure d'avoir bien compris le fonctionnement de la chose...). un peu d'explication suplémentaire ne serait pa de refus...
merci quand meme
Pour colorier les cases différemment, tu dois modifier les couleurs de la police et/ou de la brosse en fonction de ARow et ACol.
EX:
pour colorier la ligne numéro 2 en rouge.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pCanvas->Brush->Color = (ARow == 2 ? clRed : clSilver); pCanvas->FillRect(Rect);
Déja merci beaucoup josse95 pour ton aide,
Ta méthode ma beaucoup aidé, il ne me reste plus qu'un probleme, c'est que j'arive a colorier les case que je veu en rouge comme je je voulais, mais leur contenu reste vide...j'ai bien éssayé d'y remettre mon text aprés mais je ne marche pas
La ligne que j'utilise est celle-ci (juste apres celle que tu ma donné plus haut)
code : (pCanvas->TextOut(i, j, IntToStr(Montext[i][j]));
j'ai aussi éssayé en utilisant un TextRect mais sa ne marche pas on plus...
Que valent i et j ?
As tu défini la couleur de la police ?
As tu essayé?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 pCanvas->TextOut(Rect.Left+5,Rect.Top+2, IntToStr(Montext[i][j]));
I et J son mes lignes et colonnes
oui j'ai défini le couleur de ma police: pCanvas->Font->Color = clBlue;
J'ai essayer le code de ton dernier message et sa marche comme je veu.
Encore merci beaucoup![]()
Partager