[Lazarus-es] Listado de todos los formularios de la aplicación
Maxi
maximiliano.duarte en gmail.com
Jue Jul 12 17:52:57 CEST 2012
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;
--
El que pregunta aprende, y el que contesta aprende a responder.
No a la obsolecencia programada:
http://dimensionargentina.blogspot.com/2011/01/todo-esta-disenado-para-romperse.html
Linux User #495070
http://domonetic.com/blog
More information about the Lazarus-es
mailing list