| Код | #define LEFT 100 // по X #define TOP 101 // по Y #define W 40 // ширина клетки поля #define H 40 // высота клетки поля
#define MR 10 #define MC 10
TPoint selPos(0, 0); bool bSelect = false;
void __fastcall TForm1::FormPaint(TObject *Sender) { ShowPole(0); } //---------------------------------------------------------------------------
// Показывает поле void __fastcall TForm1::ShowPole(int status) { for ( int row = 0; row < MR; row++ ) for ( int col = 0; col < MC; col++ ) Kletka(row, col, status); } // рисует на экране клетку void __fastcall TForm1::Kletka(int row, int col, int status) { int x = LEFT + col* W; int y = TOP + row* H; // клетка - серый квадрат Canvas->Brush->Color = clBtnFace; Canvas->Rectangle(x-1,y-1,x+W,y+H); if(bSelect && selPos.x == col && selPos.y == row) { Canvas->MoveTo(x, y); Canvas->LineTo(x+W, y+H); Canvas->MoveTo(x+W, y); Canvas->LineTo(x, y+H); } return; }
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if(Button == mbLeft) { int posX = (X-LEFT) / W, posY = (Y-TOP) / H;
if(X < LEFT || posX >= MR || Y < TOP || posY >= MC) { bSelect = false; } else { bSelect = true; selPos.x = posX; selPos.y = posY; } Paint(); } } |
|