Fórum Formulário MDI #365110

15/10/2008

0

Olá amigos, minha dificuldade é o seguinte: tenho uma aplicação que funciona com formulários MDI...

Gostaria que o usuário pudesse abrir diversas janelas, mas caso ele clique para abrir uma janela que já esteja aberta o sistema apenas trazesse ela para frente e não abrisse uma duplicata da janela...

Testeis umas funções que buscam os formulários na memória, mas nenhuma funcionou corretamente...

Se alguém tiver alguma dica agradeço,
Lex.


Buenolex

Buenolex

Responder

Posts

15/10/2008

Rasn

buenolex,

Por favor, poste o código-fonte exemplo da chamada de um form para que eu possa tentar ajudá-lo.


Responder

Gostei + 0

15/10/2008

Rodrigo Lopez

Tente assim

if Assigned(form1) then
form1.show;


Responder

Gostei + 0

15/10/2008

Buenolex

Estou tentando o seguinte:

if Formexiste(frmCadEmpresa)= false then
frmCadEmpresa := tfrmCadEmpresa.Create(Self);

----------

function TfrmTelaPrincipal.Formexiste(nomejanela: Tform): boolean;
var
I : integer;
begin
Formexiste := false;
for i := 0 to componentcount - 1 do
if Components[i] is TForm then
if TForm(Components[i]) = nomejanela then
Formexiste := true
else
begin
nomejanela.WindowState := WsNormal;
nomejanela.BringToFront;
nomejanela.Setfocus;
end;
end;


Tentei verificar se já existe e existindo chamar para primeiro plano... Não funcionou certo pois dá um erro ao tentar abrir outro formulário...
Lex.


Responder

Gostei + 0

15/10/2008

Wdrocha

Eu não cheguei a testar....

mas o seu código para verificar se o form existe tem possivelmente um erro..



Function TfrmTelaPrincipal.Formexiste(nomejanela: Tform): boolean; 
var 
I : integer; 
begin 
Formexiste := false; 
for i := 0 to componentcount - 1 do 
if Components[i] is TForm then 
if TForm(Components[i]) = nomejanela then //AQ NESTA LINHA
Formexiste := true 
else 
begin 
nomejanela.WindowState := WsNormal; 
nomejanela.BringToFront; 
nomejanela.Setfocus; 
end; 
end; 




Acho q vc poderia ter feito assim...


Function TfrmTelaPrincipal.Formexiste(nomejanela: Tform): boolean; 
var 
I : integer; 
begin 
Formexiste := false; 
for i := 0 to componentcount - 1 do 
if Components[i] is TForm then 
if TForm(Components[i]).Name = nomejanela.Name  then//TROQUE AQ NESTA LINHA 
Formexiste := true 
else 
begin 
nomejanela.WindowState := WsNormal; 
nomejanela.BringToFront; 
nomejanela.Setfocus; 
end; 
end; 



ou até mesmo assim...

Antes do End final da Unit do form MDI vc pode fazer assim...


Initialization 
     RegisterClass(ClasseDoSeuForm);


E na hora d verificar fazer como o colega disse..


If Assigned (ClasseDoSeuForm) Then
   Form.Show



Espero ter ajudado...


Flw


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar