Delphi: заметки программиста. Часть 1

Листинг 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. 

возврат

Наш канал на Youtube

1999 1 2 3 4 5 6 7 8 9 10 11 12
2000 1 2 3 4 5 6 7 8 9 10 11 12
2001 1 2 3 4 5 6 7 8 9 10 11 12
2002 1 2 3 4 5 6 7 8 9 10 11 12
2003 1 2 3 4 5 6 7 8 9 10 11 12
2004 1 2 3 4 5 6 7 8 9 10 11 12
2005 1 2 3 4 5 6 7 8 9 10 11 12
2006 1 2 3 4 5 6 7 8 9 10 11 12
2007 1 2 3 4 5 6 7 8 9 10 11 12
2008 1 2 3 4 5 6 7 8 9 10 11 12
2009 1 2 3 4 5 6 7 8 9 10 11 12
2010 1 2 3 4 5 6 7 8 9 10 11 12
2011 1 2 3 4 5 6 7 8 9 10 11 12
2012 1 2 3 4 5 6 7 8 9 10 11 12
2013 1 2 3 4 5 6 7 8 9 10 11 12
Популярные статьи
КомпьютерПресс использует