Fórum Evento OnShow (Cencelar aparecimento do form) #262453
17/12/2004
0
Joananjr
Curtir tópico
+ 0Post mais votado
17/12/2004
PostMessage(Form.Handle, WM_Close, 0, 0);
Onde:
[b:555a619a37]Form[/b:555a619a37] é o nome do seu formulário atual[/b]
Tinorj
Gostei + 1
Mais Posts
17/12/2004
Gandalf.nho
Gostei + 0
17/12/2004
Rafs
Mas você podería colocar um Timer no formulário, coloque sua propriedade Interval para 1 e no evento OnTimer chame o método Close.
Daí você verifica se o formulário deve ou não ser apresentado e seta a propriedade Enabled do Timer para True ou False, conforme a necessidade
Gostei + 0
17/12/2004
Massuda
Gostei + 0
17/12/2004
Rafs
Estranho.... Testei aqui, antes de postar, e no momento em que executava o método Close me retornava o erro de que não é possível chamar Hide ou mudar a propriedade Visible. Mas veja que eu chamei o método Close.
Vou fazer o teste novamente e volto a postar....
Gostei + 0
17/12/2004
Rafs
Chamando-o com Show ocorre o erro descrito acima, mas se chamá-lo com ShowModal o erro não ocorre, mas também o comando Close não é executado.
Gostei + 0
18/12/2004
Massuda
Estranho.... Testei aqui, antes de postar, e no momento em que executava o método Close me retornava o erro de que não é possível chamar Hide ou mudar a propriedade Visible. Mas veja que eu chamei o método Close.[/quote:529be22614]
Fiz alguns testes... na verdade, chamar TForm.Close dentro do evento TForm.OnShow dá problema [b:529be22614]a não ser que[/b:529be22614] você trate o evento TForm.OnClose e defina um valor para Action diferente de caHide (que é o default). Portanto, o código...
type TForm1 = class(TForm) procedure FormShow(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); // ... end; // ... procedure TForm1.FormShow(Sender: TObject); begin Close; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin Action := caFree; end;
type TForm1 = class(TForm) procedure FormShow(Sender: TObject); // ... end; // ... procedure TForm1.FormShow(Sender: TObject); begin Close; end;
Moral da estória: dá para chamar Close no OnShow se...[list:529be22614][*:529be22614]no OnClose você fizer Action caHide OU[*:529be22614]o form for o form principal do programa.[/list:u:529be22614]
Gostei + 0
18/12/2004
Rafs
Gostei + 0
21/12/2004
Tinorj
Gostei + 0
21/12/2004
Paulo_amorim
Se essa função funciona a contento então o problema foi resolvido. A discussão foi em torno de ser ou não possível fazer Close em um evento Form.OnShow, e não qual rotina é melhor.
Até+
Gostei + 0
21/12/2004
Dopi
Eu tb tive alguns problemas usando o Close.... as vezes não fechava, ou dava erro...
Estou usando:
Application.Terminate
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)