Имейте в виду, что все функции в 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) DOBEGINEdit1.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) DOBEGINStrPCopy(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]