Советы по Delphi

         

Помещение формы в DLL


Вы можете помещать простые формы в DLL на этапе разработки. Это можно сделать с формами, полностью готовыми к работе и не требующими доработки. Вот пример DLL, которая создает, отображает и освобождает форму. В примере была взята экстра-простая форма для того, чтобы показать, что она может быть использована любым языком, не только в Delphi. Как я и обещал, я преподнес вам идею. Гвоздь программы в том, что пока вы проектируете свое приложение, форма из вашей DLL в Delphi *не* загружается. Только не забудьте в конце разработки ее скомпилить :-)) .

Имейте в виду, что все функции в DLL-примере 32-битные. Т.е. после получения с помощью CreateTheForm указателя на форму, необходимые функции получат в свои руки полное 32-битное управление формой. Вероятно вам это и не понадобится, но это пример того, КАК нужно делать...

    Library Formdll;

uses
SysUtils, Forms, Formdllu in 'FORMDLLU.PAS' {Form1};
FUNCTION CreateTheForm: Pointer; Export;
BEGIN


Result := TForm1.Create(NIL); END;

PROCEDURE LoadTheForm(P: Pointer; S1, S2, S3: PChar); Export;
BEGIN
WITH
TForm1(P) DO BEGIN Edit1.Text := StrPas(S1); Edit2.Text := StrPas(S2); Edit3.Text := StrPas(S3); END; END;

FUNCTION ShowTheForm(P: Pointer): Boolean; Export;
CONST mrOK = 1;
BEGIN
Result := TForm1(P).ShowModal = mrOK; END;

PROCEDURE ReadTheForm(P:Pointer; S1, S2, S3: PChar); Export;
BEGIN
WITH
TForm1(P) DO BEGIN StrPCopy(S1, Edit1.Text); StrPCopy(S2, Edit2.Text); StrPCopy(S3, Edit3.Text); END; END;

PROCEDURE DestroyTheForm(P : Pointer); Export;
BEGIN
TForm1(P).Free; END;

Exports
CreateTheForm    INDEX 1, LoadTheForm      INDEX 2, ReadTheForm      INDEX 3, ShowTheForm      INDEX 4, DestroyTheForm   INDEX 5;
begin
end
.

- Neil J. Rubenking [000742]



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