Hola adebonis
Respecto a la primera pregunta, si creas los formularios en tiempo d ejecución, no lo creo
Respecto a la segunda, sí que se puede
Codigo app
Código:
const MyDLL = 'Project2.dll';
var
Form1: TForm1;
LanzaProcedure : procedure (Param : string ) stdcall;
implementation
procedure TForm1.LanzaProcClick(Sender: TObject);
var
Handle: THandle;
begin
Handle := LoadLibrary(MyDLL);
if Handle <> 0 then
begin
@LanzaProcedure := GetProcAddress(Handle, 'LanzaProcedure');
try
if @LanzaProcedure <> nil then
begin
LanzaProcedure('Hola, esto es el parametro que se le pasa al procedure');
end;
finally
FreeLibrary(Handle);
end;
end;
end;
Código DLL
Código:
procedure LanzaProcedure(Param : string); stdcall; export;
begin
// aquí la creación del formulario/report y su lanzamiento
end;
exports
LanzaProcedure,
Puedes pasarle los parámetros que quieras (como conexión a la BD, usuario, contraseña, condición SQL a lanzar,..........)