Saudações pessoal, Estou atualmente convertendo um de meus sistemas que carregava forms de pacotes delphi dinamicamente, uma interface era usada para carregar a janela de forma que o meu form MDI nunca se preoculpava com o form dinamicamente carregado. Agora estou portando o uso de pacotes delphi para DLLS, e estou tendo o problema de excessões quando tento abrir mais de uma instância de uma janela, ou quando fecho o form e o abro novamente. Na minha MDI para um item de menu tem a seguinte chamada:
type TGetJanela = function (ANomJanela: PChar; Appli: Pointer): TpJanelaPBase; stdcall;
...
@GetJan := GetProcAddress(Handle, PChar('GetJanela'));
SetLength(Aux, (Length(AJanClassName) + 1));
StrCopy(PChar(Aux), PChar(AJanClassName));
Janela := GetJan(PChar(Aux), Pointer(Application));
E em minha DLL tem o seguinte:
function GetJanela(ANomJanela: PChar; Appli: Pointer): TpJanelaPBase; stdcall;
var
n: String;
begin
Application := TApplication(Appli);
n := ANomJanela;
if n = 'FCadastroMaterial' then
Result := TFCadastroMaterial.Create(nil)
else if n = 'FCadastroSimples' then
Result := TFCadastroSimples.Create(nil)
else
Result := nil;
end;
Então resumidamente, como fazer para uma DLL retornar um form que eu possa manipular em uma MDI, e possa também abrir várias instâncias deste form ? A minha idéia é preservar a característica de meu sistema atual, onde meu form MDI se comunica com o form (de uma DLL dinamicamente carregada) através de uma interface ou de uma classe ancestral básica. Atualmente minhas janelas que estão retornando pela DLL utilizam interfaces em suas declaração, no meu form MDI eu as utilizava e também ocorria as excessões ao tentar abrir nova instâncias, ou ao fechar e abrir novamente a jenala. Alguém saberia oque pode ser feito ? Desde já, obrigado pela atenção.