2015-05-19 3 views
1

У меня есть дочерняя форма MDI, которая при открытии не максимизируется сразу. Я вижу, что datagrid на нем создан, а затем форма максимальнаяMDI child not maximizing on create

Я использую следующий конструктор для создания формы.

Properties: 
FormStyle = fsMDIChild 
Position = poDefaultPosOnly 
WindowState = wsMaximized 

constructor TfrmJsContacts.Create(aOwner: TComponent); 
begin 
    WindowState := wsMaximized; 
    inherited Create(aOwner); 
    TimerDelay.Enabled := True; 
end; 

Проблема заключается в визуальной проблеме, так сказать, - все работает так, как должно. Просто выглядит неправильно, что форма отображается до того, как она будет максимальной. Что действительно может быть приятно, так это иметь событие AfterShow для игры. Я думаю, что это поможет мне в этой ситуации.

+0

Почему вы не ждать, пока форма не показывает, максимальна, а затем тратить время, делая выборки данных сетки? –

+0

Все данные сначала извлекаются, когда таймер заканчивается, поэтому это не должно быть проблемой. Но я буду тестировать с большим таймером. – OZ8HP

+0

В этом случае я не понимаю вашу проблему. Возможно, кто-то другой будет. Или, может быть, вопрос может быть уточнен. –

ответ

2

Всплывающие окна MDIChild имеют небольшую анимацию.

Если MDIChild.Position установлен в

  • poDefaultPosOnly
  • poDefaultSizeOnly
  • poScreenCenter
  • poDesktopCenter
  • poMainFormCenter
  • poOwnerFormCenter

Top и Left рассчитаны на создание

предположить Top = 300 и Left = 400 Теперь

на on Show MDIChild теперь являются частью MdiParent и так

Top = 300 и Left = 400 теперь Внутри MdiParent.

Среднее левое верхнее угло MDIChild сейчас находится в центре MDIParent вид.

с wsMaximized анимация показана с середины справа налево вверх.

Теперь используйте Положение

  • poDesigned
  • poDefault

и с Top и Left установлен 0 анимация не будет больше рассматриваться.

constructor TfrmJsContacts.Create(aOwner: TComponent); 
begin 
    Top := 0; 
    Left := 0; 
    WindowState := wsMaximized; 
    inherited Create(aOwner); 
    .... 
end; 

В режиме конструктора, когда выбран frmJsContacts, посмотрите на инспекторе объектов.

  • IF недвижимости WindowState установлен в wsMaximized

Вы можете увидеть в течение короткого промежутка времени вся форма!

Если изменения следующим образом, можно видеть, в течение короткого промежутка времени только название бара, не вся форма.

  • комплект, инспектор объекта: имущество WindowState до wsNormal.
  • код путешествия WindowState := wsMaximizedinherited Create(aOwner).

код хотел

constructor TfrmJsContacts.Create(aOwner: TComponent); 
begin 
    Top := 0; 
    Left := 0; 
    inherited Create(aOwner); 
    WindowState := wsMaximized; 
    .... 
end; 
+0

Спасибо - теперь намного лучше – OZ8HP

+0

@ OZ8HP: Рад помочь. ;-) –

Смежные вопросы