[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