Also hier das
Kochrezept:
man nehme ein
TDrawGrid mit:
ColCount = 9
RowCount = 9
DefaultColWidth = 34
DefaultRowHeight = 34
Dann eine
TImagelist auf das Formular mit Height und Width auf 32 setzen.
Dann diverse schwarze und weisse Spielfigueren in die Imageliste einfügen.
PS: falls jemand alle Schachfiguren in Schwarz und Weiss als 32*32 Bitmap hat, dann her damit.
Sodann diesen Code einbasteln:
Delphi-Quellcode:
type
TForm1 = class(TForm)
DrawGrid1: TDrawGrid;
ImageList1: TImageList;
Button1: TButton;
procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
type
TChessField = array[1..8, 1..8] of Smallint;
var
chessField : TChessField;
implementation
{$R *.DFM}
procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState);
var
figur : Smallint;
bkcolor : TColor;
begin
if ACol = 0 then
begin
// Beschriftung vertikal
if ARow <> 0 then
DrawGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, IntToStr(ARow));
end
else if ARow = 0 then
begin
// Beschriftung horizontal
DrawGrid1.Canvas.TextRect(Rect, Rect.Left+2, Rect.Top+2, chr(Ord('A')+ACol-1));
end
else
begin
// "eigentliches" Schachbrett
// Hintergrund Farbe ermitteln
if Odd(ACol+ARow) then
bkcolor := clLime
else
bkcolor := clWhite;
// Hintergrund zeichnen
DrawGrid1.Canvas.brush.Color := bkcolor;
DrawGrid1.Canvas.FillRect(rect);
// Spielfigur zeichen
figur := chessField[ACol, ARow];
ImageList1.Draw(DrawGrid1.Canvas, Rect.Left, Rect.Top, figur);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
chessField[4,3] := 1;
chessField[3,4] := 2;
chessField[5,4] := 3;
DrawGrid1.Invalidate;
end;
end.