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 bojeIf 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/ColumnIf (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