Show

Delphi

11/11/2003

Preciso exibir um pequeno form (tipo caixa de diálogo) quando o form for exibido. Chamei o método FormModal para este pequeno form no evento OnShow do form maior. O problema é que este form menor está abrindo antes do form maior. Como faço para que primeiro abra o form maior e depois o menor?


Raserafim

Raserafim

Curtidas 0

Respostas

Delphistar

Delphistar

11/11/2003

ao inves de usar o evento OnShow use o OnActivate


GOSTEI 0
Nigro

Nigro

11/11/2003

O problema de você fazzer algum código no on activate é que esse evento é disparado toda vez que um componente contido nesse form recebe o foco para fazer o teste coloque vários edit no form e no evento onactivate desse form coloque um showmessage qualauqer, mas vamos a sua dúvida.
Veja a ordem em autocreate dos forms, coloque o form maior criado antes do form menor


GOSTEI 0
Beppe

Beppe

11/11/2003

O OnShow deveria se chamar BeforeShow, já que ele é disparado antes de realmente mostrar o form. Chamando ShowModal passa o processamento ao outro form, sem dar chance do form principal se mostrar. Mas há 3 saídas:

1) Usar Show ao invés de ShowModal;
2) Ativar um timer que no seu OnTimer se auto-desativa e exibe o form. Em alguns sistemas(lentos) isto pode não ser conveniente.
3) Manter uma variável(JaAtivou) inicializada como False e usar o OnActivate. Neste evento, se JaAtivou é False, então mostre o diálogo e sete JaAtivou para True.


GOSTEI 0
POSTAR