Delphi – Farbanje ćelija u StringGrid-u

StringGrid sa ćelijama u boji ima veoma dobar izgled, a na taj način možete informisati o korisnika o važnosti određenog sadržaja u ćeliji. Da bi obojili određene ćelije koristićemo događaj „OnDrawCell“. U sledećem kodu prikazaćemo vam kako da obojite pozadinu ćelija u crvenu boju. Pozadina druge kolone ćelija će biti obojena u zelenu boju.


procedure TForm1.StringGrid1DrawCell(Sender:
TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);

Const //ovde definišete boju. Naravno možete ostaviti
//i default boje.
clPaleGreen = TColor($CCFFCC);
clPaleRed = TColor($CCCCFF);

begin

//Ukoliko ćelija ima fokus obojićete je u drugu boju
if (gdFocused in State) then begin
StringGrid1.Canvas.Brush.Color := clBlack;
StringGrid1.Canvas.Font.Color := clWhite;
end
else //Ukoliko ćelija nema fokus možete koristiti
//sopstvene boje

If ACol = 2 //druga kolona će biti obojena u
//zeleno
then StringGrid1.Canvas.Brush.color := clPaleGreen
else StringGrid1.canvas.brush.Color := clPaleRed;

//Sada bojimo ćelije, ali samo, ukoliko ćelija
//nije naslovna – Row/Column

If (ACol > 0) and (ARow>0) then
begin
//Painting the Background
StringGrid1.canvas.fillRect(Rect);

//Bojimo tekst. Ovde možete
//koristiti i poravnavanje
StringGrid1.canvas.TextOut(Rect.Left,
Rect.Top,StringGrid1.Cells[ACol,ARow]);
end;
end;

Ukoliko želite da obojite vaše ćelije u zavisnosti od vrednosti u ćelijama možete zameniti prethodne 3 linije (if Acol = 2 ……), sa sledećim:


if StringGrid1.Cells[ACol,ARow] = ‘highlight it’
then StringGrid1.Canvas.Brush.color := clPalered
else StringGrid1.canvas.brush.Color := clwhite;

Pratite Krstaricu na www.krstarica.com