procedure
TForm1
.
StringGrid1DrawCell(Sender: TObject; ACol, ARow:
Integer
;
Rect: TRect; State: TGridDrawState);
var
Grid: TStringGrid;
Can: TCanvas;
Color: TColor;
s:
string
;
Col, Row:
Integer
;
begin
Grid := (Sender
as
TStringGrid);
Can := Grid
.
Canvas;
if
not
Odd(ACol
xor
ARow)
then
Color :=
$CCFFFF
else
if
Odd(ACol)
then
Color :=
$99FF66
else
Color := clWhite;
if
clrd
then
begin
Col :=
1
;
Row := (Grid
.
RowCount -
1
)
and
not
1
;
while
(Row >= ARow)
and
(Col <= ACol)
do
begin
if
(ACol = Col)
and
(ARow = Row)
then
begin
Color :=
$6666FF
;
Break;
end
;
if
(Row <
2
)
or
((Row >=
2
)
and
(Col <= (Grid
.
ColCount -
3
))
and
(StrToIntDef(Grid
.
Cells[Col +
2
, Row],
0
) <
StrToIntDef(Grid
.
Cells[Col, Row -
2
],
0
)) )
then
begin
Inc(Col,
2
);
if
(ACol = Col -
1
)
and
(ARow = Row)
then
begin
Color :=
$6699FF
;
Break;
end
;
end
else
begin
Dec(Row,
2
);
if
(ACol = Col)
and
(ARow = Row +
1
)
then
begin
Color :=
$6699FF
;
Break;
end
;
end
;
end
;
end
;
Can
.
Brush
.
Color := Color;
Can
.
FillRect(Rect);
s := Grid
.
Cells[ACol, ARow];
Can
.
TextOut((Rect
.
Right + Rect
.
Left - Can
.
TextWidth(s))
div
2
,
(Rect
.
Bottom + Rect
.
Top - Can
.
TextHeight(s))
div
2
, s);
if
gdFocused
in
State
then
DrawFocusRect(Can
.
Handle, Rect);
end
;
procedure
TForm1
.
StringGrid1SetEditText(Sender: TObject; ACol,
ARow:
Integer
;
const
Value:
string
);
begin
StringGrid1
.
Repaint;
end
;
procedure
TForm1
.
Button4Click(Sender: TObject);
begin
if
(StringGrid1
.
Cells[
1
, StringGrid1
.
RowCount -
2
] <>
''
)
then
begin
clrd :=
True
;
StringGrid1
.
Repaint;
end
else
ShowMessage(
'Табица заполнена не полностью!'
);
end
;