Hola,
Una vez declares el tipo "TPanel" del modo que se indica arriba puedes utilizarlo en tiempo de ejecución normalmente. Si por ejemplo se tratara de crear un panel en un determinado formulario (unidad) bastaría con algo así, como sabes:
Código Delphi
[-]
unit Unit1;
interface
uses
Forms, Classes, Controls, StdCtrls, ExtCtrls;
type
TPanel = class(ExtCtrls.TPanel)
public
property Canvas;
end;
type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure FormDestroy(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
var
panel: TPanel;
procedure TForm1.Button1Click(Sender: TObject);
begin
panel := TPanel.Create(Self);
panel.Parent := Self;
panel.SetBounds(10, 10, 200, 200);
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
panel.Canvas.TextOut(10, 10, 'Clubdelphi.com');
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
panel.Free;
end;
end.
Sin embargo, si te fijas he llamado al método "TextOut" de "TCanvas" desde "otro botón", y es que desde el primero, es decir, justo después de crear el objeto las cosas no funcionaban tal como esperaríamos... no me preguntes por qué, puesto que aunque supongo algo no sé nada a ciencia cierta.
En todo caso, puedes siempre derivar un clase de "TPanel" y situar esta en una unidad aparte (no como se ve arriba) y utilizar dicha unidad donde te fuera menester, de tal modo que no tuvieras que repetir la declaración del "nuevo tipo" en cada unidad en que te hiciera falta, puesto que además es algo que acaso causara problemas.
Puedes derivar un nuevo tipo al que llames "TPanelEx", por ejemplo, y publicar en el mismo la propiedad "Canvas" (que ya sabes que está ahí desde "TWinControl", pero, sin hacerse pública) y luego utilizar este nuevo tipo; o puedes hacerlo como arriba, es decir, no usar un "TPanelEx" sino el propio "TPanel", aunque en realidad uses el "interpuesto" por nosotros...
Esto último creo que tiene algún que otro inconveniente (solventable, pero, inconveniente) así que... deberás ser tú el que decida lo que mejor te conviene dependiendo de lo que te sea menester llevar a cabo en tu aplicación y cómo lo lleves a cabo.
No sé si esto que digo es una perogrullada o junto con todo lo que he dicho puede servirte de algo. Por otro lado algún compañero podrá aclarar más las cosas (todos se lo agradeceremos) y, también por otro lado, tú mismo puedes seguir exponiendo las dudas que te queden al respecto.