PDA

Ver la Versión Completa : Como definir Funciones Globales


destrukthor
07-07-2006, 12:30:46
Hola a tods.
Nuevamente yo los molesto con preguntas q a lo mejor ya estan respondidas de muy basicas, pero soy principiante como antes mensione en otras preguntas.
Bien , al punto quiero definir una funciones globales q retornen valores tantos Booleano como numericos mi problema radica donde las creo ya q las ocupare en distintos formularios y como son todas iguales solo con mandar los valores me comprobaria sus validaciones o resultados.
Si me puedes ayudar, ¿lo mismo tendria q hacer con los procedimientos q son similares? desde ya Gracias.

Bicho
07-07-2006, 12:53:09
Si lo que deseas es que tu crees una funcion/procedimiento en una unit y sea accesible desde otras, lo más sencillo es que declares estas funciones en la parte public de la unit. Y en las demás units (siempre que sean del mismo proyecto) que tengan que usar las funciones debes añadir en el uses de cada unit, el nombre de la unit que contiene esas funciones, y ya podrás usarlas.

Un ejemplo:


unit Unit1;

interface

uses
....

type
...
private
...
public
procedure miprocedimiento(parametro1: string);
function mifuncion(parametro2:integer) : Boolean;
end;

implementation
...
//aqui pones la funcion y/o procedimientos



Y para usarla desde otro formulario tuyo (del mismo proyecto)

unit Unit2;

interface

uses Unit1
....

type
...
procedure Boton1Click(Sender: TObject);
private
...
end;

implementation
...

procedure Boton1Click(Sender : TObject);
begin
//para usar tu funcion de la unit
Form1.Miprocedimiento(edit.text);
end;


Espero haya quedado claro.

Saludos

Lepe
07-07-2006, 13:05:08
Aclarar que al hacerlo así tienes que incluir el código de la rutina en cada Formulario.

La otra solución es crear una Unidad (File -> New -> Unit), igual que en un Formulario, y allí en la parte interface pones el prototipo de la funcion, despues en la parte implementation añades el código.

La ventaja es que esa funcion no pertenece a un objeto determinado, ni a Form1, ni al Form2 etc; por tanto con solo añadir el "uses" de esa nueva unidad, ya puedes usarla en cualquier ventana.

Saludos

destrukthor
07-07-2006, 14:07:57
Muhcas gracias a los dos.
Ati bicho por el proceso para declarar las funciones.
Y a ti lepe por el proceso global q me entregas, y esta es la q buscaba ya q la puedo llamar de cualquier parte del proyecto.
Vale muchas gracias..
... sin grande otro prblema resuelto por ustedes.
Cuidense y hasta otra oportunidad y espero aprender mucho para ayudar a otro en este foro.

destrukthor
07-07-2006, 14:12:18
Use este ejemplo sencillo y rapido para verificar su utilidad, y lo precento para aquellos novatos como yo lo pruebe para resolver algun problema similar al mio.



unit ProcGlob;
interface
FUNCTION f_VerMsg(f_Num :Integer): Boolean;
implementation
FUNCTION f_VerMsg(f_Num :Integer): Boolean;
BEGIN
IF f_Num=0 THEN
Result:=True
ELSE
Result:=False;
END;
end.



Otro Formulario lo llamo asi


IF f_VerMsg(0)=True THEN
ShowMessage('Es Igual a 0')
ELSE
ShowMessage('Es Distinto a Cero');