Modularização do Sistema - Packages
Alguém sabe como trabalhar com Packages?
Meu problema é o seguinte :
var
Cls : TPersistentClass;
begin
phm := LoadPackage(´pk_tela1.bpl´);
Try
InitializePackage(phm);
try
Cls := FindClass(´TTela1´);
except
Cls := nil;
end;
if Cls <> nil Then
begin
if AForm = nil Then
begin
Application.CreateForm(TComponentClass(Cls), AForm);
with AForm do
begin
FormStyle := fsMDIChild;
Show;
end;
end;
end;
finally
UnLoadPackage(phm);
Quando eu executo o UnLoadPackage() neste caso onde a janela é MDI e não posso usar o ShowModal, ele Mostra a Janela e fecha em seguida gerando uma Access Violation por que não existe um ´PAUSE´ entre o SHow e o UnLoadPackage()
Alguém sabe como controlar as MDI´s que já estão abertas na memória e impedir que se abram outras.
Luiz
Meu problema é o seguinte :
var
Cls : TPersistentClass;
begin
phm := LoadPackage(´pk_tela1.bpl´);
Try
InitializePackage(phm);
try
Cls := FindClass(´TTela1´);
except
Cls := nil;
end;
if Cls <> nil Then
begin
if AForm = nil Then
begin
Application.CreateForm(TComponentClass(Cls), AForm);
with AForm do
begin
FormStyle := fsMDIChild;
Show;
end;
end;
end;
finally
UnLoadPackage(phm);
Quando eu executo o UnLoadPackage() neste caso onde a janela é MDI e não posso usar o ShowModal, ele Mostra a Janela e fecha em seguida gerando uma Access Violation por que não existe um ´PAUSE´ entre o SHow e o UnLoadPackage()
Alguém sabe como controlar as MDI´s que já estão abertas na memória e impedir que se abram outras.
Luiz
Anonymous
Curtidas 0
Respostas
Lfernandos
20/02/2003
Não sei se resolve o seu problema mas use a propriedade MDIChidCount do Form para contar quantas janelas MDI já tem na tela e se tiver mais que uma não permita criar mais janelas.
var
Cls : TPersistentClass;
begin
phm := LoadPackage(´pk_tela1.bpl´);
Try
InitializePackage(phm);
try
Cls := FindClass(´TTela1´);
except
Cls := nil;
end;
if Cls <> nil Then
begin
if (AForm = nil) and (MDIChildCount = 0 ) Then
begin
Application.CreateForm(TComponentClass(Cls), AForm);
with AForm do
begin
FormStyle := fsMDIChild;
Show;
end;
end;
end;
finally
UnLoadPackage(phm);
E mais o UnLoadPackage vc deveria usar quando fechar o form principal ou quando fechar a janela MDI. Ficaria assim:
procedure TForm1.FormClose(Sender: TObject; var Action: CloseAction);
begin
if(phm <> 0) then
begin
AForm.Free;
UnloadPackage(phm);
end;
end;
var
Cls : TPersistentClass;
begin
phm := LoadPackage(´pk_tela1.bpl´);
Try
InitializePackage(phm);
try
Cls := FindClass(´TTela1´);
except
Cls := nil;
end;
if Cls <> nil Then
begin
if (AForm = nil) and (MDIChildCount = 0 ) Then
begin
Application.CreateForm(TComponentClass(Cls), AForm);
with AForm do
begin
FormStyle := fsMDIChild;
Show;
end;
end;
end;
finally
UnLoadPackage(phm);
E mais o UnLoadPackage vc deveria usar quando fechar o form principal ou quando fechar a janela MDI. Ficaria assim:
procedure TForm1.FormClose(Sender: TObject; var Action: CloseAction);
begin
if(phm <> 0) then
begin
AForm.Free;
UnloadPackage(phm);
end;
end;
GOSTEI 0
Anonymous
20/02/2003
Valeu CAra!!
Resolveu sim... Até fiz uma função para verificar se o formulário está a berto ou não.
Luiz
Resolveu sim... Até fiz uma função para verificar se o formulário está a berto ou não.
Luiz
GOSTEI 0