[Lazarus-es] Listado de todos los formularios de la aplicación

Antonio Évora aevorar en gmail.com
Vie Jul 13 13:54:00 CEST 2012


El 12/07/12 17:52, Maxi escribió:
> No se como usar rtti, pero yo hice algo similar con delphi para cargar
> dinamicamente, nombres de procedimientos guardados en una base de
> datos y dentro de ese procedimiento creo los formularios que necesito.
>
> //Los metodos deben ser published para que los puedas rastrear.
>
>     published
>        Procedure LoadFormCargaPractAmbulatorio;
>        Procedure LoadFormCargaPractInternado  ;
>        Procedure LoadFormCargaPractIntContextual;
>        Procedure LoadFormCargaPractIntContextualGrilla;
>
> //Creas tipos de procedimientos para ejecutar segun los parametros que tengan
> Type
>    TExecute0 = procedure of object;
>    TExecute1 = procedure (aPerms:Integer)of object;
>    TExecute2 = procedure (aParams:string;aPerms:Integer)of object;
>
>
> //buscar el nombre del metodo en el codigo y lo ejecutas por el puntero
>
> Procedure TIWUserSession.ExecByName(aFormName:string);//,aParams:string;aPermisos:Integer);
> var
>    Routine: TMethod;
> begin
>    // Acceder al procedimiento
>    Routine.Code := MethodAddress(aFormName);
>    try
>      if Assigned(Routine.Code) then  // Encontrado?
>    {$WARNINGS OFF}
>       TExecute0(Routine)//(aParams,aPermisos);
>    {$WARNINGS ON}
>      else
>        Application.MessageBox(pchar(format('No se encuentra la función
> "%s".',[aFormName])),'Información',MB_OK+MB_ICONHAND);
>        {$ENDIF}
>    except
>      raise Exception.CreateFmt('Error al cargar la función "%s".',[aFormName]);
>    end;
> END;
>
>
>
Muchas gracias Maxi.

Ya veré como me busco la vida metiendo manualmente los formulario e 
intentando usar/adaptar el codigo que me pasaste.

Un cordial saludo, gracias a todos y buen fin de semana.





More information about the Lazarus-es mailing list