En el ejemplo que te dí, la BPL como tal no la invocas.
Es decir, no la inicializas como a una dll
Código Delphi
[-]
Handle := LoadLibrary('libraryname');
if Handle <> 0 then
begin
@GetTime := GetProcAddress(Handle, 'GetTime');
if @GetTime <> nil then
begin
GetTime(Time);
with Time do
Writeln('The time is ', Hour, ':', Minute, ':', Second);
end;
FreeLibrary(Handle);
end;
En ese ejemplo se usa en el proyecto como una unidad mas y como se compilas con la opción "Link with runtime packages", en "Runtime packages" está establecido que cargará la BPL PkgForm0 en tiempo de ejecución. Lo que hace que el ejecutable generado no contenga el formulario del cual se hereda sino que esté dentro de la BPL.
Para tu caso, puedes agregar un formulario en una BPL y solo usarlo, como lo harías normalmente.
Código Delphi
[-]
Unit UForm1;
..
implementation
uses
UForminBPL;
..
TForm1.ButtonClick1(Sender: TObject);
begin
with TFormInBPL.Create(Application) do
try
if ShowModal then
begin
end;
finally
free;
end;
end;
Tip: Puedes establecer que en Debug, no use los paquetes en tiempo de ejecución. Eso te ayuda a modificar la BPL y realizar las pruebas antes de generar el paquete completo para release