Színváltó sejtek delphi stringgrid

Alapvetően Stringgrid komponenst. megjelenítésére a húr az információt a cellába. De ha írásban programok gyakran a vágy, hogy kényelmesebb legyen, hangsúlyozva az egyes oszlopok, vonalak vagy területek sejtek különböző színekben, vagy új képeket StringGrid sejt. Jelenti az Object Inspector kell elvégezni ezt a feladatot nem. Külön formája az itt található beállításokat is, nem biztosított az alkatrész.

Azonban ez a probléma könnyen megoldható szoftver. Erre a célra OnDrawCell komponens kiváltó esemény, amikor téve minden cellája. Így, ha a használatát a kinevezésük feltételeit egy adott szín, akkor „festeni” a táblázat szükség szerint.

Erre a célra telepített komponens Stringgrid rendelni esemény OnDrawCell. Az eljárás által létrehozott hozzá a következő kódot hozzárendeli a színe a sejt, és a betűtípus színét szöveg, valamint felhívni őket:

eljárás TForm1.MyStringGridDrawCell (Sender: TObject; AcOI, Arow: integer; téglalap: TRect; State: TGridDrawState);
kezdődik
MyStringGrid.Canvas.Brush.Color: = clBlue; // célcellával szín
MyStringGrid.Canvas.FillRect (téglalap); // fogmosás sejt kiválasztott szín
MyStringGrid.Canvas.Font.Color: = clWhite; // válasszon egy font color
MyStringGrid.Canvas.TextOut (Rect.Left, Rect.Top, MyStringGrid.Cells [AcOI, Arow]); // teszi a szöveget a kijelölt cella
végén;

Ez a kód fog festeni az összes sejt egy szín.

akkor használja a kifejezéseket, hogy kiemelje az egyes sorok, oszlopok vagy sejtek:

eljárás TForm1.MyStringGridDrawCell (Sender: TObject; AcOI, Arow: integer; téglalap: TRect; State: TGridDrawState);
kezdődik
ha (AcOI> 0) és (Arow> 0), akkor kezdődik // Első oszlop és sor változatlanul hagyja
ha (AcOI = 1) vagy (AcOI = 3), majd
MyStringGrid.Canvas.Brush.Color: = clBlue; // a második és negyedik oszlopában kék

ha (AcOI = 2) vagy (AcOI = 4), majd
MyStringGrid.Canvas.Brush.Color: = clGreen; // harmadik és ötödik - zöld

ha Arow = MyStringGrid.RowCount-1, akkor
MyStringGrid.Canvas.Brush.Color: = clRed; // az utolsó sorban - a piros

ha gdFocused állami majd
MyStringGrid.Canvas.Brush.Color: = clYellow; // aktuális kijelölt cella sárga színű

MyStringGrid.Canvas.FillRect (téglalap);
MyStringGrid.Canvas.Font.Color: = clWhite;
MyStringGrid.Canvas.TextOut (Rect.Left, Rect.Top, MyStringGrid.Cells [AcOI, Arow]);
végén;
végén;

Az eredmény egy olyan tábla, amelynek sejtek különböző színekben. Meg kell jegyezni, hogy a sorozat a feltételek ebben az esetben fedezi a találkozó színes utolsó sorban az oszlopok, így kiderül az azonos színű.

Színváltó sejtek delphi stringgrid

Ábra: „Festett» StringGrid

Ha meg kell változtatni a színét a rögzített sejtek néha kényelmes a használata feltételeinek ellenőrzésére sorok és oszlopok. Ez lehet a helyzet, ha a fix lesz több sort vagy oszlopot. Itt meg kell használni egy másik feltétel, ellenőrzés egy paramétere sejtrögzítő:

eljárás TForm1.MyStringGridDrawCell (Sender: TObject; AcOI, Arow: integer; téglalap: TRect; State: TGridDrawState);
kezdődik
ha gdFixed állami majd
MyStringGrid.Canvas.Brush.Color: = clBlue;
MyStringGrid.Canvas.FillRect (téglalap);
MyStringGrid.Canvas.Font.Color: = clWhite;
MyStringGrid.Canvas.TextOut (Rect.Left, Rect.Top, MyStringGrid.Cells [AcOI, Arow]);
végén;

Hasonlóképpen, rögtön azonosítani lehet a teljes szöveg:

eljárás TForm1.MyStringGridDrawCell (Sender: TObject; AcOI, Arow: integer; téglalap: TRect; State: TGridDrawState);
kezdődik
ha gdSelected állami majd
MyStringGrid.Canvas.Brush.Color: = clBlue;
MyStringGrid.Canvas.FillRect (téglalap);
MyStringGrid.Canvas.Font.Color: = clWhite;
MyStringGrid.Canvas.TextOut (Rect.Left, Rect.Top, MyStringGrid.Cells [AcOI, Arow]);
végén;

Egy másik anyag ebből a szakaszból

Kapcsolódó cikkek