En ese caso no tienes más que interceptar el evento OnMouseDown y comprobar el parámetro Button de dicho evento (este Button se refiere al bottón del Mouse, no a tu botón):
Código:
TForm1 = class(TForm)
...
public
procedure AlPulsarMouse (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X,Y : Integer);
procedure CreaBoton;
...
end;
...
procedure TForm1.AlPulsarMouse (Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X,Y : Integer);
begin
if (Button = mbRight) AND (Sender is TButton) then
FPropiedades.Show // o lo que sea
...
end;
// al crear dinámicamente tu botón le asignas el método
procedure TForm1.CreaBoton;
begin
With TButton.Create (Self) do
begin
Parent := Self;
OnMouseDown := AlPulsarMouse;
...
end;
La asignación
OnMouseDown := AlPulsarMouse; es posible porque ambos eventos son del mismo tipo (los mismos parámetros).