Para hacer eso, la dll no debe tener el formato de una aplicación, sino un formulario. Puedes tener los formularios que quieras. Te pongo un ejemplo:
La dll:
Código Delphi
[-]
library Formdll;
uses
SysUtils, Windows,
Classes,
Unit1 in 'Unit1.pas' ;
{$R *.res}
procedure Init;
var
Form1: TForm1;
begin
Form1:= TForm1.Create(nil);
Form1.ShowModal();
Form1.free;
end;
begin
Init;
end.
En la aplicación que ejecuta la dll:
Código Delphi
[-]
procedure TForm2.Button1Click(Sender: TObject);
var
Dll: String;
begin
Dll:= ExtractFilePath(ParamStr(0)) + 'Formdll.dll';
LoadLibrary(PCHAR(Dll));
end;
Saludos.