VB6 - Centralizando um formulário MDI Child


Já tentou centralizar um formulário MDI Child ? Um formulário MDI Child esta contido no formulário MDI que é o formulário container ou Pai. Para realizar a centralização usamos a propriedade Parent. Vamos lá...

- Inicie um novo projeto no VB e inclua um formulário do tipo MDI - opção Project|Add MDI form .

- Agora no formulário padrão altere sua propriedade MDI Child para True

- Se você executar o projeto agora irá obter a tela da figura ao lado:

Vamos então centralizar o formulário - form1 .

Se você pensou em usar a propriedade - StartUpPosition - dançou !!! Veja na figura ao lado que a tentativa de atribuir a esta propriedade o valor : 2- CenterScreen gera um erro em tempo de desenho. Não dá.

Para resolver o problema vamos ter que criar uma função que faça o serviço. Esta função você pode incluir em um módulo do seu projeto ou no formulário MDI. Veja o código :

Private Sub Centraliza(Parent As Form, Child As Form)
Dim iTop As Integer
Dim iLeft As Integer
If Parent.WindowState <> 0 Then Exit Sub
  iTop = ((Parent.Height - Child.Height) \ 2)
  iLeft = ((Parent.Width - Child.Width) \ 2)
  Child.Move iLeft, iTop
End Sub

A função recebe com parêmetros o nome do formulário MDI e o nome do formulário MDI Child que desejamos centralizar. A função somente verifica se o estado visual da janela MDI é diferente de 0 , ou seja , diferente do valor padrão . ( os outros valores possíveis são : 1- Minimizado 2-Maximized )

A sintaxe para WindowState é :

object.WindowState [= value]

Os valores possíveis são :

Constante Valor Descrição
vbNormal 0 (Default) Normal.
vbMinimized 1 Minimized (minimized to an icon)
vbMaximized 2 Maximized (enlarged to maximum size)
A seguir a função move o formulário - Child.Move iLeft, iTop - centralizando-o. Veja o resultado ao lado:

Para chamar a função você pode usar o seguinte código: centraliza(MDIform1,form1)

Até a próxima... Bye...