Показать сообщение отдельно
  #5  
Старый 02.07.2010, 09:05
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

PHP код:
unit Unit1;

interface

uses
  ExtCtrls
,
  
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;

type
  TForm1 
= class(TForm)
    
procedure FormCreate(Sender: TObject);
  private
    
procedure PaintBoxPaint(Sender: TObject);
    
procedure PaintBoxClick(Sender: TObject);
    
procedure PaintBoxLinePaint(Sender: TObject);
    
procedure PaintBoxLineClick(Sender: TObject);
  public
  
end;

var
  
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
  
paintbox: TPaintBox;
  
x1, y1, x2, y2: Integer;
begin
  Randomize
;
  
// 1
  
paintbox:=TPaintBox.Create(Self);
  
paintbox.Parent:=Self;
  
paintbox.Left:=10;
  
paintbox.Top:=10;
  
paintbox.Color:=Random($ffffff);
  
paintbox.OnPaint:=PaintBoxPaint;
  
paintbox.OnClick:=PaintBoxClick;
  
x1:=paintbox.Left+paintbox.Width;
  
y1:=paintbox.Top;
  
// 2
  
paintbox:=TPaintBox.Create(Self);
  
paintbox.Parent:=Self;
  
paintbox.Left:=200;
  
paintbox.Top:=10;
  
paintbox.Color:=Random($ffffff);
  
paintbox.OnPaint:=PaintBoxPaint;
  
paintbox.OnClick:=PaintBoxClick;
  
x2:=paintbox.Left;
  
y2:=paintbox.Top+paintbox.Height;
  
// line
  
paintbox:=TPaintBox.Create(Self);
  
paintbox.Parent:=Self;
  
paintbox.Left:=x1;
  
paintbox.Top:=y1;
  
paintbox.Width:=x2-x1;
  
paintbox.Height:=y2-y1;
  
paintbox.Color:=Random($ffffff);
  
paintbox.OnPaint:=PaintBoxLinePaint;
  
paintbox.OnClick:=PaintBoxLineClick;
end;

procedure TForm1.PaintBoxPaint(Sender: TObject);
var
  
paintbox: TPaintBox;
begin
  paintbox
:=TPaintBox(Sender);
  
paintbox.Canvas.Pen.Color:=paintbox.Color;
  
paintbox.Canvas.FillRect(paintbox.ClientRect);
end;

procedure TForm1.PaintBoxClick(Sender: TObject);
var
  
paintbox: TPaintBox;
begin
  paintbox
:=TPaintBox(Sender);
  
paintbox.Color:=Random($ffffff);
  
paintbox.Invalidate;
end;

procedure TForm1.PaintBoxLinePaint(Sender: TObject);
var
  
paintbox: TPaintBox;
begin
  paintbox
:=TPaintBox(Sender);
  
paintbox.Canvas.Pen.Color:=paintbox.Color;
  
paintbox.Canvas.Pen.Width:=4;
  
paintbox.Canvas.MoveTo(paintbox.ClientRect.Left, paintbox.ClientRect.Top);
  
paintbox.Canvas.LineTo(paintbox.ClientRect.Right, paintbox.ClientRect.Bottom);
end;

procedure TForm1.PaintBoxLineClick(Sender: TObject);
var
  
i: Integer;
  
paintbox: TPaintBox;
  
c: TColor;
begin
  paintbox
:=TPaintBox(Sender);
  if 
paintbox.Canvas.Pixels[paintbox.ScreenToClient(Mouse.CursorPos).X, paintbox.ScreenToClient(Mouse.CursorPos).Y]=paintbox.Color then
  begin
    c
:=Random($ffffff);
    for 
i:=0 to ComponentCount-1 do
    
begin
      
if Components[i] is TPaintBox then
      begin
        paintbox
:=TPaintBox(Components[i]);
        
paintbox.Color:=c;
        
paintbox.Invalidate;
      
end;
    
end;
  
end;
end;

end. 
http://data.cod.ru/62299
Ответить с цитированием