Chamada de Form em BPL por Show e não ShowModal
Acompanhando os exemplos apresentados no Site DevMedia sobre a modularização de aplicações, percebi
que todos que fazem os exemplos fazendo chamadas ShowModal. Então tenho essa situação no form dentro da BPL
em seguida faço a declaração do procedimento
procedure Exec_form_SModal(const NomeConex: TSQLConnection); StdCall;
begin
Application.CreateForm(Tfr_CadP, fr_CadP);
fr_CadP.ConexaoSQL := NomeConex;
fr_CadP.ShowModal;
fr_CadP.Free;
end;
No lado da aplicação, eu tenho a seguinte situação ao chamar o form
Vejam que passo um parâmetro que é a conexão de banco de dados. No ShowModal funciona belamente. Porém, como poderia fazer a mesma coisa só que chamando o form com Show. Se substituo por Show no form da BPL ele é fechado automaticamente. Tenho que fazer alguma configuração extra? Alguém poderia me dar uma luz?
Obrigado desde já.
que todos que fazem os exemplos fazendo chamadas ShowModal. Então tenho essa situação no form dentro da BPL
procedure Exec_form_SModal(const NomeConex: TSQLConnection); StdCall;
Exports Exec_form_SModal;
em seguida faço a declaração do procedimento
procedure Exec_form_SModal(const NomeConex: TSQLConnection); StdCall;
begin
Application.CreateForm(Tfr_CadP, fr_CadP);
fr_CadP.ConexaoSQL := NomeConex;
fr_CadP.ShowModal;
fr_CadP.Free;
end;
No lado da aplicação, eu tenho a seguinte situação ao chamar o form
procedure Tf_Principal.ac_CadPacExecute(Sender: TObject);
type
TExecModule = procedure(const NomeConex: TSQLConnection); stdCall;
var
myHandle : THandle;
ExecMo : TExecModule;
begin
myHandle := LoadLibrary('C_CadP.bpl');
if myHandle > 0 then
begin
@ExecMo := GetProcAddress(myHandle,'Exec_form_SModal');
ExecMo(dmConex.Conexao);
FreeLibrary(myHandle);
end;
end;
Vejam que passo um parâmetro que é a conexão de banco de dados. No ShowModal funciona belamente. Porém, como poderia fazer a mesma coisa só que chamando o form com Show. Se substituo por Show no form da BPL ele é fechado automaticamente. Tenho que fazer alguma configuração extra? Alguém poderia me dar uma luz?
Obrigado desde já.
Dalton Corbetta
Curtidas 0
Respostas
Francisco Macário
26/06/2013
Olá.
Você está alterando nesse ponto?
Se for, você precisa mudar a forma de liberação do form (fr_CadP.Free) para um outro evento.
At.
Você está alterando nesse ponto?
procedure Exec_form_SModal(const NomeConex: TSQLConnection); StdCall; begin Application.CreateForm(Tfr_CadP, fr_CadP); fr_CadP.ConexaoSQL := NomeConex; fr_CadP.Show;//fr_CadP.ShowModal; fr_CadP.Free; end;
Se for, você precisa mudar a forma de liberação do form (fr_CadP.Free) para um outro evento.
At.
GOSTEI 0
Dalton Corbetta
26/06/2013
Bem, eu consegui uma função que carrega o modulo de acordo e faz o devidor upload do pacote.
O problema é que agora o sistema me exige uma conexão definida por um parâmetro que coloquei na inicialização.
um evento usa LoadPackage e o outro usa loadlibrary.
O problema é que agora o sistema me exige uma conexão definida por um parâmetro que coloquei na inicialização.
um evento usa LoadPackage e o outro usa loadlibrary.
GOSTEI 0