Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Pasar formulario como paramentro (https://www.clubdelphi.com/foros/showthread.php?t=24524)

Hugorr 24-08-2005 14:59:51

Pasar formulario como paramentro
 
Buenas tardes Señores/as

Bueno tengo el siguiente problemilla quiero crear un funcion la que recibe dos parametros 1 es un string y otro es un objeto (Un formulario) y esta devuelve un booleano. Lo que quiero que me ayudasen es a como definir funciones para pasarle objetos y si me ponen un ejemplo pues maravilloso. o darme algun enlace dondo pueda obtener dicha informacion.


Espero haberme explicado bien...

Caro 24-08-2005 15:10:54

Hola:

Código Delphi [-]
function funcion(cadena:String;formulario:TForm):Boolean;
var
    resultado:Boolean;
begin
       ...........       
       result:=resultado;
end;

Saludos

dec 24-08-2005 15:12:30

Hola,

No tiene misterio. Igual que pasas parámetros de tipo "string", "integer" u otro tipo "simple", puedes pasar parámetros del tipo del formulario que prefieras. Como ejemplo mira la función siguiente, la cual mostrará el formulario cuyo tipo se le pase como parámetro, cuyo título estará determinado por el primero de los parámetros y el resultado dependerá del "ModalResult" del formulario en cuestión:

Código Delphi [-]
 function TForm1.MuestraForm(tituloForm: string; form: TForm2): boolean;
 begin
   form.Caption := tituloForm;
   Result := form.ShowModal = mrOk;
 end;

Lepe 24-08-2005 15:13:33

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
// si sabemos que es un form podemos hacer un moldeado de tipos
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

Hugorr 24-08-2005 15:38:37

Duda resuelta
 
Muchas gracias a todos.

Este si que es un foro efectivo y rapido :p


La franja horaria es GMT +2. Ahora son las 04:51:25.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi