Ver Mensaje Individual
  #1  
Antiguo 06-02-2015
rarratia rarratia is offline
Miembro
 
Registrado: sep 2004
Posts: 50
Reputación: 20
rarratia Va por buen camino
Función de Clase para iniciar formulario

Estimados, se puede crear una función de clase para crear y llamar a un formulario de una manera bien cómoda, por ejemplo definir la siguiente función de clase para un formulario modal:

Código Delphi [-]
class function Tf_smName.MostrarVentana(ATag : Integer) : TModalResult;
begin
    with Create(Application) do
    Try
      Tag      := ATag;
      Result   := ShowModal;
    finally
      Free;
    end;
end;

Luego dejas tu formulario no como autocreado sino disponible y en cualquier parte de tu código llamas a la función de clase:

Código Delphi [-]
Tf_smName.MostrarVentana(nroTag);

Para el ejemplo lleno la variable tag para que el formulario sepa debido a qué se le llama.

El problema es que en el evento OnCreate del formulario que hereda esta funcionalidad debo poner:
Código Delphi [-]
f_smName := Self;

Esto es como todos ustedes bien saben, porque las funciones de clase dan funcionalidad a la clase y no instancias objetos, por lo que el único objeto que queda instanciado con esta llamada es Self, luego debo apuntar Self al objeto de formulario con su respectivo nombre.
¿A alguien se le ocurre alguna forma que en el formulario con la funcionalidad básica y del cual se heredan todos los formularios de una aplicación quedara instanciado el nombre y no que tenga que colocar el puntero Self al nombre en cada OnCreate de cada formulario?
No se si se entiende bien la pregunta, pero esa es una duda que dejo de inquietud. (Ojo, la inicialización de la variable Tag no está disponible en el OnCreate, si en el resto del programa).
Responder Con Cita