Prikazi cijelu temu 10.11.2010 01:36
zxz Van mreze
Administrator
Registrovan od:03.02.2009
Lokacija:Tuzla


Predmet:Delphi-String Grid u boji
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 koristit ćemo događaj "OnDrawCell". U sledećem kodu prikazat ćemo vam kako da obojite pozadinu ćelija u crvenu boju. Pozadina druge kolone ćelija ?e biti obojena u zelenu boju.
PreuzmiIzvorni kôd (Delphi):
  1.  
  2. procedure TForm1.StringGrid1DrawCell(Sender:
  3.       TObject; ACol, ARow: Integer;
  4.       Rect: TRect; State: TGridDrawState);
  5. Const         //ovde defini?ete boju. Naravno mo?ete ostaviti
  6.                  //i default boje.
  7.       clPaleGreen = TColor($CCFFCC);
  8.       clPaleRed =   TColor($CCCCFF);
  9. begin
  10. //Ukoliko ?elija ima fokus oboji?ete je u drugu boju
  11. if (gdFocused in State) then begin    
  12.       StringGrid1.Canvas.Brush.Color := clBlack;
  13.       StringGrid1.Canvas.Font.Color := clWhite;
  14. end
  15. else      //Ukoliko ?elija nema fokus mo?ete koristiti
  16.            //sopstvene boje
  17.       If ACol = 2      //druga kolona ?e biti obojena u
  18.                             //zeleno
  19.                then StringGrid1.Canvas.Brush.color := clPaleGreen
  20.                else StringGrid1.canvas.brush.Color := clPaleRed;
  21. //Sada bojimo ?elije, ali samo, ukoliko ?elija
  22. //nije naslovna - Row/Column
  23. If (ACol > 0) and (ARow>0) then
  24.       begin
  25.             //Painting the Background
  26.             StringGrid1.canvas.fillRect(Rect);
  27.             //Bojimo tekst. Ovde mo?ete
  28.             //koristiti i poravnavanje
  29.             StringGrid1.canvas.TextOut(Rect.Left,
  30.             Rect.Top,StringGrid1.Cells[ACol,ARow]);
  31.       end;
  32. end;
Ukoliko želite da obojite vaÅ¡e ćelije u zavisnosti od vrednosti u ćelijama možete zamijeniti prethodne 3 linije (if Acol = 2 ...), sa sledećim:

PreuzmiIzvorni kôd (Delphi):
  1.     if StringGrid1.Cells[ACol,ARow] = 'highlight it'
  2.           then StringGrid1.Canvas.Brush.color := clPalered
  3.           else StringGrid1.canvas.brush.Color := clwhite;

Podrska samo putem foruma, jer samo tako i ostali imaju koristi od toga.