вот тебе пример: Возьмешь кинешь на форму StringGrid а вот мой код
| Код | //---------------------------------------------------------------------------
#include <vcl.h> #include <stdio.h> #pragma hdrstop
#include "Unit1.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; char *Checked; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //---------------------------------------------------------------------------
void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow, TRect &Rect, TGridDrawState State) { TStringGrid *SG = dynamic_cast<TStringGrid *>(Sender); TCanvas *c = SG->Canvas; c->Brush->Color = 0x0FF000; c->FillRect(Rect);
if (2 == ACol) { TRect r = Rect; r.Left += 2; r.Right = r.Left + 14; if (Checked[ARow]) DrawFrameControl(c->Handle, &r, DFC_BUTTON,DFCS_BUTTONCHECK|DFCS_CHECKED); else DrawFrameControl(c->Handle,&r,DFC_BUTTON,DFCS_BUTTONCHECK); } c->TextOut(Rect.Left+18,Rect.Top+5,SG->Cells[ACol][ARow]); } //---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender) { Checked = new char[StringGrid1->RowCount]; char str[10]; for (int i = 0; i < StringGrid1->ColCount; i++) { for (int j = 0; j < StringGrid1->RowCount; j++) { sprintf(str, "Cells: %d:%d", i, j); StringGrid1->Cells[i][j] = str; } Checked[i] = 0; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { delete[] Checked; } //--------------------------------------------------------------------------- void __fastcall TForm1::StringGrid1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { int ARow, ACol;
TStringGrid *SG = dynamic_cast<TStringGrid *>(Sender);; SG->MouseToCell(X, Y, ACol, ARow); if (2 == ACol) Checked[ARow] = (0 == Checked[ARow] ? 1 : 0); } //---------------------------------------------------------------------------
| |