Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, ExtCtrls, Grids;
- type
- TCellData = record
- Text: string;
- Value: Integer;
- Active: Boolean;
- end;
- TCellDataArray = array[0..127] of array[0..127] of TCellData;
- type
- TForm1 = class(TForm)
- Timer1: TTimer;
- DrawGrid1: TDrawGrid;
- procedure FormCreate(Sender: TObject);
- procedure Timer1Timer(Sender: TObject);
- procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
- State: TGridDrawState);
- procedure DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
- Y: Integer);
- private
- FCellDataArray: TCellDataArray;
- end;
- var
- Form1: TForm1;
- implementation
- {$R *.dfm}
- procedure TForm1.FormCreate(Sender: TObject);
- var
- X, Y: Integer;
- begin
- Randomize;
- DrawGrid1.FixedCols := 0;
- DrawGrid1.FixedRows := 0;
- DrawGrid1.ColCount := 128;
- DrawGrid1.RowCount := 128;
- for Y := Low(FCellDataArray) to High(FCellDataArray) do
- for X := Low(FCellDataArray[Y]) to High(FCellDataArray[Y]) do
- begin
- FCellDataArray[Y][X].Text := Format('Cell [%d;%d]', [X, Y]);
- FCellDataArray[Y][X].Value := Random(1000);
- FCellDataArray[Y][X].Active := FCellDataArray[Y][X].Value >= 500;
- end;
- end;
- procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
- State: TGridDrawState);
- begin
- if FCellDataArray[ARow][ACol].Active then
- TDrawGrid(Sender).Canvas.Brush.Color := clGreen
- else
- TDrawGrid(Sender).Canvas.Brush.Color := $000080FF;
- TDrawGrid(Sender).Canvas.FillRect(Rect);
- TDrawGrid(Sender).Canvas.TextOut(Rect.Left + 8, Rect.Top + 5, FCellDataArray[ARow][ACol].Text);
- end;
- procedure TForm1.DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
- Y: Integer);
- var
- Coords: TGridCoord;
- begin
- Coords := TDrawGrid(Sender).MouseCoord(X, Y);
- if (Coords.X <> -1) and (Coords.Y <> -1) then
- begin
- FCellDataArray[Coords.Y][Coords.X].Active := not FCellDataArray[Coords.Y][Coords.X].Active;
- TDrawGrid(Sender).Invalidate;
- end;
- end;
- procedure TForm1.Timer1Timer(Sender: TObject);
- begin
- FCellDataArray[1][1].Active := not FCellDataArray[1][1].Active;
- DrawGrid1.Invalidate;
- end;
- end.
Advertisement
Add Comment
Please, Sign In to add comment