W poradzie
Określanie koloru dla wybranej komórki StringGrid jest tak:
- Kod: Zaznacz cały
- Â
- void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
- Â Â Â int ARow, TRect &Rect, TGridDrawState State)
- {
- Â if(ARow == 2)
- Â {
- Â if(ACol == 1) StringGrid1->Canvas->Brush->Color = clYellow;
- Â if(ACol == 2) StringGrid1->Canvas->Brush->Color = clRed;
- Â if(ACol == 3) StringGrid1->Canvas->Brush->Color = clBlue;
- Â if(ACol == 4) StringGrid1->Canvas->Brush->Color = clGreen;
- Â StringGrid1->Canvas->FillRect(Rect);
- Â StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, StringGrid1->Cells[ACol][ARow]);
- Â }
- }
- Â
Odrysowaniem koloru steruje zdarzenie OnDrawCell, które jest wywoływane każdorazowo, gdy zachodzą jakieś zmiany w obiekcie StringGrid.
Zastanów się jak można sterować kolorem komórki? Przecież to banalnie proste, wystarczy zdefiniować zmienną globalną typu TColor i to za jej pomocą zmieniać kolor komórki:
plik nagłówkowy np. Unit1.h
- Kod: Zaznacz cały
- Â
- public:
- Â Â Â Â TColor kolor;
- Â
plik źródłowy np. Unit1.cpp
- Kod: Zaznacz cały
- Â
- void __fastcall TForm1::Button1Click(TObject *Sender)
- {
- Â kolor = clRed;
- Â StringGrid1->Repaint();
- }
- //-----------------------------------------------------------------------------------
- void __fastcall TForm1::Button2Click(TObject *Sender)
- {
- Â kolor = clYellow;
- Â StringGrid1->Repaint();
- }
- //-----------------------------------------------------------------------------------
- void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
- Â Â Â int ARow, TRect &Rect, TGridDrawState State)
- {
- Â if(ARow == 2)
- Â {
- Â if(ACol == 1) StringGrid1->Canvas->Brush->Color = kolor; // tutaj zmienna steruje kolorem
- Â StringGrid1->Canvas->FillRect(Rect);
- Â StringGrid1->Canvas->TextOut(Rect.Left, Rect.Top, StringGrid1->Cells[ACol][ARow]);
- Â }
- }
- Â
Ten prosty przykład powinien dać Tobie ogląd na sprawę, a jeżeli nie zrozumiałeś, to już nie pomogę.