Muy bueno el ejemplo de Crandel. Estaba buscando algo asi, y me parecio genial la idea. No sabia que con el canvas podias hacer tanto.
En cuanto a Jorge, te comento que puedes sacar la posición en la que se encuentra el puntero del mouse con algún evento como
OnMouseDown que se activa cuando haces un click sobre el componente, o algo parecido relacionado al Mouse. Así pues se me ocurre que puedes hacer algo como esto:
suponiendo que tu componente tiene dos propiedades de tipo Integer llamados X e Y con sus respectivos seters...
Código Delphi
[-]
procedure TfMain.TShapeMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
ComponenteDeJorge.ValorX := X;
ComponenteDeJorge.ValorY := Y;
end;
y ya lo tenemos. Despues esta en vos ver que utilidad le quieres dar al shape. Investiga los eventos relacionados con el mouse, que seguro ahí tienes la solución a tu caso particular.
Espero haberte sido de ayuda.