Practic componenta Stringgrid. utilizate pentru a afișa informațiile șir în celula lor. Dar, atunci când programele de scriere au de multe ori dorința de a le face mai confortabil, subliniind coloane individuale, linii sau zone de celule în diferite culori, sau adăugarea de imagini la celula StringGrid. Înseamnă Object Inspector pentru a efectua această sarcină nu este. formular separat setările pentru aceasta, de asemenea, nu este prevăzută în componenta.
Cu toate acestea, această problemă este rezolvată ușor de software-ul. În acest scop, OnDrawCell eveniment componentă este declanșat atunci când redarea fiecare celulă a tabelului. Astfel, în cazul în care utilizarea termenilor lor de numire a unui anumit culoare, puteți „picta“ tabel după cum este necesar.
În acest scop, o componentă instalată Stringgrid atribuie eveniment OnDrawCell. Procedura creată prin adăugarea următorului cod atribuie culoarea celulei, și culoarea fontului textului, precum și să-i atragă:
Procedura TForm1.MyStringGridDrawCell (Expeditor: TObject; AcOI, Arow: Integer; Dreptunghi: TRect; Stat: TGridDrawState);
începe
MyStringGrid.Canvas.Brush.Color: = clBlue; // culoarea celulei de destinație
MyStringGrid.Canvas.FillRect (Rect); // perierea celula selectată culoare
MyStringGrid.Canvas.Font.Color: = clWhite; // alege o culoare de font
MyStringGrid.Canvas.TextOut (Rect.Left, Rect.Top, MyStringGrid.Cells [AcOI, Arow]); // redare de text în celula selectată
se încheie;
Acest cod va vopsi toate celulele într-o singură culoare.
ar trebui să utilizați termeni pentru a evidenția rânduri individuale, coloane sau celule:
Procedura TForm1.MyStringGridDrawCell (Expeditor: TObject; AcOI, Arow: Integer; Dreptunghi: TRect; Stat: TGridDrawState);
începe
if (AcOI> 0) și (Arow> 0) apoi începe // Prima coloană și rând lăsați nemodificat
if (AcOI = 1) sau (AcOI = 3), atunci
MyStringGrid.Canvas.Brush.Color: = clBlue; // coloana de albastru doua și a patra
if (AcOI = 2) sau (4 = AcOI) atunci
MyStringGrid.Canvas.Brush.Color: = clGreen; // a treia și a cincea - verde
dacă Arow = MyStringGrid.RowCount-1 atunci
MyStringGrid.Canvas.Brush.Color: = clRed; // ultima linie - roșu
în cazul în care gdFocused în stat atunci
MyStringGrid.Canvas.Brush.Color: = clYellow; // celula selectată curent este colorat galben
MyStringGrid.Canvas.FillRect (Rect);
MyStringGrid.Canvas.Font.Color: = clWhite;
MyStringGrid.Canvas.TextOut (Rect.Left, Rect.Top, MyStringGrid.Cells [AcOI, Arow]);
se încheie;
se încheie;
Rezultatul este un tabel ale cărui celule vor avea culori diferite. Trebuie remarcat faptul că secvența de condiții, în acest caz se referă la numirea de culoare ultimul rând de coloane, astfel încât se transformă aceeași culoare.
Figura: „pictate» StringGrid
Dacă aveți nevoie pentru a schimba culoarea de celule fixe pot fi uneori convenabil de a utiliza termenii de verificare a numerelor de rânduri și coloane. Acest lucru poate fi cazul dacă fix va fi mai multe rânduri sau coloane. Aici este necesar să se utilizeze o altă condiție, inspecția este un parametru al fixării celulei:
Procedura TForm1.MyStringGridDrawCell (Expeditor: TObject; AcOI, Arow: Integer; Dreptunghi: TRect; Stat: TGridDrawState);
începe
în cazul în care gdFixed în stat atunci
MyStringGrid.Canvas.Brush.Color: = clBlue;
MyStringGrid.Canvas.FillRect (Rect);
MyStringGrid.Canvas.Font.Color: = clWhite;
MyStringGrid.Canvas.TextOut (Rect.Left, Rect.Top, MyStringGrid.Cells [AcOI, Arow]);
se încheie;
În mod similar, se poate identifica imediat întregul șir:
Procedura TForm1.MyStringGridDrawCell (Expeditor: TObject; AcOI, Arow: Integer; Dreptunghi: TRect; Stat: TGridDrawState);
începe
în cazul în care gdSelected în stat atunci
MyStringGrid.Canvas.Brush.Color: = clBlue;
MyStringGrid.Canvas.FillRect (Rect);
MyStringGrid.Canvas.Font.Color: = clWhite;
MyStringGrid.Canvas.TextOut (Rect.Left, Rect.Top, MyStringGrid.Cells [AcOI, Arow]);
se încheie;