Fórum Forms em Delphi #576773
10/03/2017
0
Estou criando uma aplicação no Delphi Seattle. Nessa aplicação tenho uma tela inicial onde é feito o login e direcionado o usuário para a tela principal do sistema, onde tenho um menu lateral com alguns ícones (na esquerda) e um painel na direita, onde serão carregados outros forms de acordo com o ícone selecionado.
O problema é que sempre que clico em um ícone, um form é carregado em cima do outro nesse painel. Eu tenho um botão de logout, que fecha os forms abertos, porém ele só fecha um dos forms, quando eu logo novamente, ainda existem forms abertos.
Eu gostaria de, a cada vez que clicar em um ícone do menu lateral, o form carregado no painel fosse substituído por outro correspondente ao ícone. Tentei várias formas, porém sem sucesso :(
Acredito que o problema do logout seria resolvido assim que conseguir 'substituir' os forms ao clicar nos ícones.
Desde já, agradeço a todos!
Bruno Guimarães
Curtir tópico
+ 0Posts
10/03/2017
Marcos Cunha
Não sei se é a forma mais fácil, mas ao meu ver, no evento OnClick do botão de atalho você tem que fazer um busca nos forms e ver se tem algum aberto, se tiver você da o comando close neles, nesse tópico fala como que faz pra ver se o form está aberto.
https://www.devmedia.com.br/dicas-saber-se-um-form-esta-aberto-ou-nao/1576
Gostei + 0
10/03/2017
Alberto
Voce precisa só mudar o tag de cada botao
com numeros sequenciais e para todos os botoes
associa o evento onclick a procedure botaoclick
Var F:TForm;
implementation
{$R *.dfm}
Uses NomeDoForm1, NomeDoForm2, NomeDoForm3;
procedure TFormPrincipal.BotaoClick(Sender: TObject);
Var n:Integer;
begin
n := (Sender as TButton).Tag; // (assumindo que seu botao é da classe TButton)
if Assigned( F ) then Begin
F.Free;
F.Destroy;
End;
case n of
1: F := TNomeDoForm1.Create( Panel1 );
2: F := TNomeDoForm2.Create( Panel1 );
3: F := TNomeDoForm3.Create( Panel1 );
end;
F.Show
end;
Gostei + 0
13/03/2017
Bruno Guimarães
Ainda estou começando a aprender a linguagem, então não sei se minhas rotinas de create, close, free, destroy etc estão da maneira mais adequada, porém por enquanto está funcionando! :p
Obrigado a todos.
Gostei + 0
13/03/2017
Alberto
a realidade da sua aplicação, tais como, mudar o nome dos formularios,
verificar a classe do botao, declarar a procedure corretamente, etc.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)