TLama

Untitled

Feb 5th, 2014
513
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 2.32 KB | None | 0 0
  1. unit Unit1;
  2.  
  3. interface
  4.  
  5. uses
  6.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  7.   Dialogs, ExtCtrls, Grids;
  8.  
  9. type
  10.   TCellData = record
  11.     Text: string;
  12.     Value: Integer;
  13.     Active: Boolean;
  14.   end;
  15.   TCellDataArray = array[0..127] of array[0..127] of TCellData;
  16.  
  17. type
  18.   TForm1 = class(TForm)
  19.     Timer1: TTimer;
  20.     DrawGrid1: TDrawGrid;
  21.     procedure FormCreate(Sender: TObject);
  22.     procedure Timer1Timer(Sender: TObject);
  23.     procedure DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
  24.       State: TGridDrawState);
  25.     procedure DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  26.       Y: Integer);
  27.   private
  28.     FCellDataArray: TCellDataArray;
  29.   end;
  30.  
  31. var
  32.   Form1: TForm1;
  33.  
  34. implementation
  35.  
  36. {$R *.dfm}
  37.  
  38. procedure TForm1.FormCreate(Sender: TObject);
  39. var
  40.   X, Y: Integer;
  41. begin
  42.   Randomize;
  43.  
  44.   DrawGrid1.FixedCols := 0;
  45.   DrawGrid1.FixedRows := 0;
  46.   DrawGrid1.ColCount := 128;
  47.   DrawGrid1.RowCount := 128;
  48.  
  49.   for Y := Low(FCellDataArray) to High(FCellDataArray) do
  50.     for X := Low(FCellDataArray[Y]) to High(FCellDataArray[Y]) do
  51.     begin
  52.       FCellDataArray[Y][X].Text := Format('Cell [%d;%d]', [X, Y]);
  53.       FCellDataArray[Y][X].Value := Random(1000);
  54.       FCellDataArray[Y][X].Active := FCellDataArray[Y][X].Value >= 500;
  55.     end;
  56. end;
  57.  
  58. procedure TForm1.DrawGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect;
  59.   State: TGridDrawState);
  60. begin
  61.   if FCellDataArray[ARow][ACol].Active then
  62.     TDrawGrid(Sender).Canvas.Brush.Color := clGreen
  63.   else
  64.     TDrawGrid(Sender).Canvas.Brush.Color := $000080FF;
  65.   TDrawGrid(Sender).Canvas.FillRect(Rect);
  66.   TDrawGrid(Sender).Canvas.TextOut(Rect.Left + 8, Rect.Top + 5, FCellDataArray[ARow][ACol].Text);
  67. end;
  68.  
  69. procedure TForm1.DrawGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,
  70.   Y: Integer);
  71. var
  72.   Coords: TGridCoord;
  73. begin
  74.   Coords := TDrawGrid(Sender).MouseCoord(X, Y);
  75.   if (Coords.X <> -1) and (Coords.Y <> -1) then
  76.   begin
  77.     FCellDataArray[Coords.Y][Coords.X].Active := not FCellDataArray[Coords.Y][Coords.X].Active;
  78.     TDrawGrid(Sender).Invalidate;
  79.   end;
  80. end;
  81.  
  82. procedure TForm1.Timer1Timer(Sender: TObject);
  83. begin
  84.   FCellDataArray[1][1].Active := not FCellDataArray[1][1].Active;
  85.   DrawGrid1.Invalidate;
  86. end;
  87.  
  88. end.
Advertisement
Add Comment
Please, Sign In to add comment