Formulário MDI
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.
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
Curtidas 0
Respostas
Rasn
15/10/2008
buenolex,
Por favor, poste o código-fonte exemplo da chamada de um form para que eu possa tentar ajudá-lo.
Por favor, poste o código-fonte exemplo da chamada de um form para que eu possa tentar ajudá-lo.
GOSTEI 0
Rodrigo Lopez
15/10/2008
Tente assim
if Assigned(form1) then
form1.show;
if Assigned(form1) then
form1.show;
GOSTEI 0
Buenolex
15/10/2008
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.
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.
GOSTEI 0
Wdrocha
15/10/2008
Eu não cheguei a testar....
mas o seu código para verificar se o form existe tem possivelmente um erro..
Acho q vc poderia ter feito assim...
ou até mesmo assim...
Antes do End final da Unit do form MDI vc pode fazer assim...
E na hora d verificar fazer como o colega disse..
Espero ter ajudado...
Flw
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
GOSTEI 0