Fórum Fechar form em Modal no onShow? Tem como? #352582
28/01/2008
0
Estou com um problema, preciso fechar um form em Modal no seu próprio onShow. Sei que se eu colocar Close no onShow de um form em Show, isso da certo, ao abrir o form, ele se fecha automaticamente, agora com o ShowModel, mesmo executando o Close, ele se abre. Isso é por causa do Modal, teria como eu quebrar o modal do Form e conseguir fechar ele no onShow? Ou teria algum outro evento após o onShow que pudesse me fazer isso???
Valew
Seu_madruga
Curtir tópico
+ 0Posts
28/01/2008
Felipeucc
Gostei + 0
28/01/2008
Seu_madruga
Gostei + 0
28/01/2008
Junior Miranda
O que exatamente faz este formulário ???
[]´s
Gostei + 0
28/01/2008
Seu_madruga
Gostei + 0
28/01/2008
Rodc
PostMessage(this.Handle, WM_CLOSE, 0, 0);
Gostei + 0
28/01/2008
Junior Miranda
Esta sem dúvida não é a forma mais correta da coisa ser feita. Mas tenta isto:
PostMessage(Self.Handle, WM_CLOSE, 0, 0);
Gostei + 0
28/01/2008
Rodc
PostMessage(this.Handle, WM_CLOSE, 0, 0);
Opa!! Foi mal... ´this´ é no C++, o correto é ´Self´ mesmo.
Gostei + 0
28/01/2008
Onjahyr
Gostei + 0
28/01/2008
Onjahyr
Ou, quem sabe, capturar o retorno (código de erro) de [b:6d31f849b2]PostMessage[/b:6d31f849b2]
Gostei + 0
28/01/2008
Micheus
um ex.:
type TForm1 = class(TForm) ... public ... function CanShowForm :boolean; end; ... function TForm1.CanShowForm :boolean; begin If <condições OK> then Result := True else Result := False; end;
na hora do uso:
procedure TMainForm.MenuItem1Click(Sender :TObject); begin Form1 := TForm1.Create(Self); try if Form1.CanShowForm then Form1.ShowModal; finally Form1.Free; end; end;
voce poderia ainda, mostrar ou não o form lá mesmo na função, principalmente ser vc precisar do retorno dele (valor de ModalResult). É questão de opção.
Se a verificação só pode ser feita com ele criado, acho que fica mais elegante deste modo.
Abraços
Gostei + 0
29/01/2008
Rodc
Considerando que ele está usando ShowModal(), a mensagem WM_CLOSE avisa o form para ele fechar e quando o form processar a mensagem (após a inicialização) ele será fechado e a função que chamou o ShowModal se responsabiliza em destruir o formulário.
Nota: Quando se clica no ´X´ do form, ele envia um WM_CLOSE para o fomulário.
Gostei + 0
21/09/2011
Rangel Alves
Form1 - Evento OnShow
--
Timer1.Enabled := true;
--
Coloque um Timer no Form com Interval de 100 (num da tempo nem piscar) e Enabled false;
No OnTimer
--
Timer1.Enabled := false;
Close;
--
Prontinho, simples e fácil como o Delphi deve ser!
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)