Marco Web Center |
Home: Code Repository: Mastering Delphi 5Project THLOCK
Project StructureTHLOCK.DPRprogram Thlock; uses Forms, MainForm in 'MainForm.pas' {Form1}, paintth in 'paintth.pas'; {$R *.RES} begin Application.CreateForm(TForm1, Form1); Application.Run; end. MAINFORM.PASunit MainForm; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, Paintth; type TForm1 = class(TForm) Button1: TButton; Button2: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Private declarations } PT: TPainterThread; public { Public declarations } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.Button1Click(Sender: TObject); begin Button1.Enabled := False; Button2.Enabled := True; PT := TPainterThread.Create (False); // start end; procedure TForm1.Button2Click(Sender: TObject); begin PT.Free; Button1.Enabled := True; Button2.Enabled := False; end; procedure TForm1.FormMouseDown( Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Canvas.Lock; try Canvas.Pen.Color := clYellow; Canvas.Brush.Color := clYellow; Canvas.Ellipse (x - 30, y - 30, x + 30, y + 30); finally Canvas.Unlock; end; end; end. PAINTTH.PASunit paintth; interface uses Classes; type TPainterThread = class(TThread) protected procedure Execute; override; end; implementation { TPainterThread } uses MainForm, Graphics; procedure TPainterThread.Execute; var X, Y: Integer; begin Randomize; repeat X := Random (300); Y := Random (Form1.ClientHeight); with Form1.Canvas do begin Lock; try Pixels [X, Y] := clBlue; finally Unlock; end; end; until Terminated; end; end. MAINFORM.DFMobject Form1: TForm1 Left = 274 Top = 89 Width = 370 Height = 293 Caption = 'Thread Lock' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] OnMouseDown = FormMouseDown PixelsPerInch = 96 TextHeight = 13 object Button1: TButton Left = 272 Top = 16 Width = 75 Height = 25 Caption = 'Start' TabOrder = 0 OnClick = Button1Click end object Button2: TButton Left = 272 Top = 48 Width = 75 Height = 25 Caption = 'Stop' Enabled = False TabOrder = 1 OnClick = Button2Click end end
|
||
© Copyright Marco Cantù, 1995-2020, All rights reserved |