Pergunta

Se eu criar um novo formulário Delphi, conectar seu evento OnResize e executar o aplicativo, o Sresize é disparado antes que a janela seja mostrada. O que eu não sei é se isso sempre acontecerá, para qualquer janela.

(Para qualquer pessoa familiarizada com a API do Windows, eu a traçava até a chamada de ShowWindow em tcustomform.sHowingChanged (Forms.Pas Line 5503 em Delphi 2007), que aparentemente desencadeia um WM_SIZE... Pelo menos, para uma nova janela sem nenhuma outra propriedade definida. Eu não vi isso documentado que o showwindow sempre dispara WM_SIZE, então não sei se posso contar com isso ou não.)

Então: Posso confiar em um tform sempre Disparar em resistência quando é mostrado pela primeira vez? Ou existem circunstâncias (talvez se a janela não for resulível, talvez se a propriedade de posição tiver certos valores, etc.), onde o mais não Fogo antes da janela ser mostrada pela primeira vez?

Foi útil?

Solução

Não, esse evento nem sempre dispara quando o formulário mostra, dependendo de coisas como BordersTyle. Por exemplo, ele dispara na startup para o Bssingle, mas não para o Bsdialog.

É fácil testar. Basta adicionar algum código de log ao evento OnResize do formulário principal, altere o BordersTyle e execute seu aplicativo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top