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

А можно еще интереснее - добавить свойство Canvas классу TPanel
Код:
unit Unit1;

interface

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

type
  TPanel = class(ExtCtrls.TPanel)
  private
    FCanvas: TControlCanvas;
    function GetCanvas: TCanvas;
  public
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override;

    property Canvas: TCanvas read GetCanvas;
  end;

  TForm1 = class(TForm)
    Panel1: TPanel;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{ TPanel }

constructor TPanel.Create(AOwner: TComponent);
begin
  inherited;
  FCanvas := TControlCanvas.Create;
  FCanvas.Control := Self;
end;

destructor TPanel.Destroy;
begin
  FCanvas.Free;
  inherited;
end;

function TPanel.GetCanvas: TCanvas;
begin
  Result := FCanvas;
end;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  Panel1.Canvas.Rectangle(10, 10, 50, 50);
end;

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