El problema está en que Canvas es protected.
La solución mejor es que pases como parámetro el canvas en lugar de un TGraphicControl.
Pero si lo anterior no puede ser, entonces un truco puede ser el siguiente:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TG = class(TGraphicControl);
TForm1 = class(TForm)
Button1: TButton;
Image1: TImage;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure graf(G: TgraphicControl);
begin
TG(G).Canvas.Rectangle(1,30, 60, 60); end;
procedure TForm1.Button1Click(Sender: TObject);
begin
graf(Image1);
end;
end.
Saludos.