Показать сообщение отдельно
  #3  
Старый 19.01.2011, 18:08
Аватар для dr. F.I.N.
dr. F.I.N. dr. F.I.N. вне форума
I Like it!
 
Регистрация: 12.12.2009
Адрес: Россия, г. Новосибирск
Сообщения: 663
Версия Delphi: D6/D7
Репутация: 26643
По умолчанию

К панели можно "прицепить" канвас:
Код:
unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
    procedure Panel1Click(Sender: TObject);
    procedure Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  a: TControlCanvas;
  mp: TPoint;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  a := TControlCanvas.Create;
  a.Control := Panel1;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  a.Control := nil;
  a.Free;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  with a do
  begin
    Brush.Color := clRed;
    RoundRect(10, 10, 50, 50, 5, 5);
    Brush.Color := clGreen;
    RoundRect(30, 30, 70, 70, 5, 5);
    Brush.Color := clBlue;
    RoundRect(50, 50, 90, 90, 5, 5);
  end;
end;

procedure TForm1.Panel1Click(Sender: TObject);
begin
  ShowMessage(ColorToString(a.Pixels[mp.X, mp.Y]));
end;

procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  mp := Point(X, Y);
end;

end.
__________________
Грамотно поставленный вопрос содержит не менее 50% ответа.
Грамотно поставленная речь вызывает уважение, а у некоторых даже зависть.
Ответить с цитированием