[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