Листинг 9. Текст формы в DLL

unit DLLFormU; 
   
interface  
   
uses  
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons;  
   
type  
  TDLLForm = class(TForm)  
    BitBtn1: TBitBtn;  
    BitBtn2: TBitBtn;  
    procedure FormClose(Sender: TObject; var Action: TCloseAction);  
  private  
    { Private declarations }  
  CallForm: THandle; //Дескриптор вызывающей формы  
 public  
    { Public declarations }  
  end;  
   
  // Объявление экспортируемых подпрограмм  
  function ShowModalForm: Integer;  
  procedure ShowForm(Appl, Form: THandle);  
  procedure FreeForm;  
   
var  
  DLLForm: TDLLForm;  
   
implementation  
   
{$R *.DFM}  
   
function ShowModalForm: Integer;  
// Модальный вызов  
begin  
  DllForm := TDllForm.Create(Application);  
  Result := DLLForm.ShowModal;  
  DLLForm.Free;  
end;  
   
procedure ShowForm(Appl, Form: THandle);  
// Немодальный вызов  
begin  
  Application.Handle := Appl;  // Замена объекта Application  
  DllForm := TDllForm.Create(Application);  
  // Запоминаем дескриптор вызывающего окна для посылки  
  // ему сообщения о закрытии  
  CallForm := Form;  
  DLLForm.Show  
end;  
   
procedure FreeForm;  
// Уничтожение формы  
begin  
  DLLForm.Free  
end;  
   
procedure TDLLForm.FormClose(Sender: TObject;   
var Action: TCloseAction);  
begin  
  if CallForm<>0 then  
    SendMessage(CallForm, wm_User, 0, 0)  
end;  
   
end. 

возврат