home *** CD-ROM | disk | FTP | other *** search
/ Delphi Programming Unleashed / Delphi_Programming_Unleashed_SAMS_Publishing_1995.iso / chap09 / rectloop / main.pas < prev    next >
Pascal/Delphi Source File  |  1995-03-20  |  1KB  |  78 lines

  1. unit Main;
  2.  
  3. { Program copyright (c) 1995 by Charles Calvert }
  4. { Project Name: RECTLOOP }
  5.  
  6. { This program demonstrates:
  7.  
  8.     * Drawing rectangles to the screen with the
  9.       canvas object.
  10.  
  11.     * The Windows coordinate system.
  12.  
  13.     * Using the RGB function to create various colors.
  14. }
  15.  
  16. interface
  17.  
  18. uses
  19.   WinTypes, WinProcs,
  20.   Classes, Graphics,
  21.   Controls, Printers, Forms,
  22.   Messages, Menus;
  23.  
  24. type
  25.   TForm1 = class(TForm)
  26.     MainMenu1: TMainMenu;
  27.     Options1: TMenuItem;
  28.     Start1: TMenuItem;
  29.     Stop1: TMenuItem;
  30.     procedure Start1Click(Sender: TObject);
  31.     procedure Stop1Click(Sender: TObject);
  32.   private
  33.     Draw: Boolean;
  34.   end;
  35.  
  36. var
  37.   Form1: TForm1;
  38.  
  39. implementation
  40.  
  41. {$R *.DFM}
  42.  
  43. procedure YieldToOthers;
  44. var
  45.   Msg : TMsg;
  46. begin
  47.   while PeekMessage(Msg,0,0,0,PM_REMOVE) do begin
  48.     if (Msg.Message = WM_QUIT) then begin
  49.       exit;
  50.     end;
  51.     TranslateMessage(Msg);
  52.     DispatchMessage(Msg);
  53.   end;
  54. end;
  55.  
  56. procedure TForm1.Start1Click(Sender: TObject);
  57. var
  58.   x,y: Integer;
  59.   R: TRect;
  60. begin
  61.   Draw := True;
  62.   R := GetClientRect;
  63.   x := R.Right;
  64.   y := R.Bottom;
  65.   repeat
  66.     Canvas.Brush.Color := RGB(Random(255), Random(255), Random(255));
  67.     Canvas.Rectangle(Random(x), Random(y), Random(x), Random(y));
  68.     YieldToOthers;
  69.   until not Draw;
  70. end;
  71.  
  72. procedure TForm1.Stop1Click(Sender: TObject);
  73. begin
  74.   Draw := False;
  75. end;
  76.  
  77. end.
  78.