Forum > Portuguese

Ajuda com TPopUpMenu

<< < (3/3)

meulinux:
Você usa halt; para sair do aplicativo?
Em um programa GUI, a boa programação diz para sair com close; ou application.terminate;

O halt é usado mais no .lpr antes de Application.Run;

Será que estou errado?
Tinha de postar aqui, mesmo não sendo o assunto tratado, pois a dica era para o autor do tópico. Se errei, desculpem.

nightrider:
Perguntas:

1. Se estiver com 2 ou + Form abertos Close resolve? Creio que nao.

2. Application.Terminate mata a execução no ato? Quando uso o Halt é com esta intencao

3. Pq somente antes do Application.Run?

Eu programo sozinho e resolvo os problemas do jeito que consigo. Tenho um monte de duvidas mas nao tenho pra quem perguntar ou nao quero ficar amolando as pessoas que sabem muito + que eu. Nao sei se me entendes. Tb lembro de ter feito perguntas que agora sei que eram bem simples neste forum e ninguem ter respondido.

Grato pelas dicas. Me responda as perguntas acima e paro de usar o halt.

[ ]

Eu agradeco a tua intervencao.

meulinux:

--- Quote ---1. Se estiver com 2 ou + Form abertos Close resolve? Creio que nao.

--- End quote ---

Sim, resolve, desde que no evento onClose do MainForm você faça a verificação se os demais forms estão abertos, se estão abertos feche-os.


--- Code: ---if Form1 <> nil then
  Form1.Close;
if Form2 <> nil then
  Form2.Close;

// Lembrar de colocar um "Form1:= Nil" após sair de um form

--- End code ---


--- Quote ---2. Application.Terminate mata a execução no ato? Quando uso o Halt é com esta intencao

--- End quote ---

Halt fecha a aplicação de forma anormal, não liberando a memória alocada pelos objetos, recursos consumidos, etc. O seu único parâmetro é o ExitCode retornado ao sistema operacional, e não tem relação com a quantidade de forms abertos.

Terminate fecha a aplicação, assegurando que tudo que foi alocado seja liberado. Em outras palavras, chama o método Free para todos os componentes, que chamarão Free para os componentes que são seus ´filhos´ (definidos através do parâmetro Owner no construtor). Também dispara uma mensagem para o Windows/Linux, para garantir que tudo seja destruído na ordem certa. Por essa razão Terminate pode demorar alguns segundos para fechar a aplicação, enquanto Halt é imediato.

Existe a propriedade Terminated, da classe TApplication, que pode ser usada para saber se a aplicação está em processo de shut down. Isso pode ser útil para não executar nenhum código quando a aplicação estiver sendo finalizada.

O método Close da classe TCustomForm chama Application.Terminate caso o formulário seja o MainForm da aplicação. Portanto, ambos têm o mesmo efeito nesse caso.

Portanto, na maioria dos casos, use Terminate ou Close, se o form for o principal.



--- Quote ---Grato pelas dicas. Me responda as perguntas acima e paro de usar o halt.

--- End quote ---

Ora, você para se quiser e não se eu responder, kkkkkkk

Sim, antes do Application.Run porque nada foi gerado ainda, aí nesse caso o Halt vai funcionar porque não precisa destruir nada. A não ser que criou, muito difícil...

Navigation

[0] Message Index

[*] Previous page

Go to full version