Lo ideal es concretar el tipo de objeto se le está pasando:
Código Delphi
[-]
function Uno(var NombreCliente:string; Ventana:TForm):Boolean;
function Uno(var NombreCliente:string; Ventana:TCustomForm):Boolean;
Algunas veces no es posible, así que usamos el ancestro más genérico:
Código Delphi
[-]
function Uno(var NombreCliente:string; Ventana:Tcomponent):Boolean;
function Uno(var NombreCliente:string; Ventana:TObject):Boolean;
begin
TForm(Ventana).****
end;
los asteriscos puede ser cualquier propiedad o método que tenga esa ventana.
El único problema es que por error envies un Grid a esa rutina, en tiempo de compilación no obtendrás fallos, pero cuando llegue a TForm(Ventana), como en realidad es un grid, tendrás un fallo de acceso a memoria. Así que cuidadin con lo que haces
.
¿Te suena de algo
Sender:TObject? Es simplemente el Grid, TForm etc. , que está lanzando ese evento, y como es un evento genérico para todos las clases de delphi, se usa tambien como TObject.
Un saludo