Delphi.Заметки программиста
f65d50f6

Текст формы в 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.



Содержание раздела