U Dll-u sam kreirao formu i data modl. Testirano, radi ok.
U OnShow event-u forme (u Dll-u) otvaraka konekcije na bazu, postavlja neke parametre...
Prebacio sam prikaz forme u TabSheet-u, sada zablokira program. Forma se prikaže ok, ali je nedostupna, ne može se pristupiti niti jednoj edit kontroli na njoj. Još jednom: kada nisam postavljao formu na TabSheet, kada joj nisam odredio parent, sve je radilo OK.
Probao sam kreirati formu u glavnog programu, ne pozivati ovu iz Dll-a, na isti način je prikati na TabSheet-u, tada radi.
Debugirao sam Dll, OnShow prođe cijeli, nigdje ne blokira.
Iz osnovne forme:
function IzOnlineUAdresar(ID: integer; ParentControl: HWND): integer; stdcall; external 'C:\projekti\Xe\MySQLConnection\Win32\Debug\MySQLConnection.dll';
...
i := IzOnlineUAdresar(i, TabSheet2.Handle);
if i > 0 then ShowMessage('New IO:' + i.ToString);
Funkcija u Dll-u:
function IzOnlineUAdresar(id: integer; ParentControl: HWND): integer; stdcall;
begin
frmUpisUAdresar := TfrmUpisUAdresar.CreateParented(ParentControl);
// ovo sam dodao, mada ne treba...
frmUpisUAdresar.ParentWindow := ParentControl;
// Ovako je radilo:
// frmUpisUAdresar := TfrmUpisUAdresar.Create(nil);
result := frmUpisUAdresar.ShowModal;
end;
Ima li tko pojma o čemu se radi? Forma mora biti u TabSheet-u. Sada sve testiram u XE 10.1, a kasnije će program koji poziva funkciju iz Dll-a biti u D2007.