2013-04-23 1 views
-1

У меня есть приложение с формами MDI, и я пытаюсь создать эффект создания ребенка, с Animatewindow().Delphi Создайте Maximized MDI Child с AnimateWindow

Мой вопрос, все мои MDI формы с Windowstate=wsMaximized, и не знаю, как создать форму без отображения по умолчанию классическое окно для изменения размера и с анимацией ...

Это то, что я пытаясь:

procedure FORMCREATOR(t_form:tformclass); 
var form:tform; 
begin 
    frmain.sPanel5.Hide; 
    frmain.LockClientWindowUpdate;  
    form:=t_form.Create(frmain); 

// кстати, если я делать "t_form.Create (приложение)" вместо "t_form.Create (frmain);" он дает ошибку .. и с ".... (frmain)" я не могу получить доступ к форме типа "form.button1.caption: = 'test'" вне этой процедуры, нарушение доступа! .. помогите plox!

frmain.UnlockClientWindowUpdate; 

    AnimateWindow(form.Handle,500,AW_CENTER or AW_SLIDE or AW_VER_POSITIVE); 
end; 

Так что, когда я называю это, просто создать форму, как не было Animatewindow() ... она показывается только максимально без эффекта :(..

Ребята, пожалуйста, дайте мне немного руки !. Благодаря

+0

нет ответа, поскольку он не является uasable как есть, но, возможно, playgroud: с TForm4.Create (self) do begin Formstyle: = fsNormal; visible: = false; Ширина: = Application.Mainform.ClientWidth; Высота: = Application.Mainform.ClientWidth; Родитель: = self; AnimateWindow (ручка, 2000, AW_CENTER или AW_SLIDE или AW_VER_POSITIVE); Родитель: = nil; FormStyle: = fsMDIChild; конец; – bummi

+0

Работает как шарм .. но я внесла некоторые изменения в код, и я хочу опубликовать решение .. но мне нужно подождать 8 часов? :/ –

+1

Да: http://meta.stackexchange.com/questions/89063/answering-own-question-now-has-8-hour-limit, но нет необходимости торопиться ... – bummi

ответ

0

с идеей @bummi «s ..

Я изменил к этому:

procedure tfrmain.FORMCREATOR(t_form:tformclass); 
var form:tform; 
nome_form:string; 
begin 
    frmain.sPanel5.Hide;  

    frmain.lockClientWindowUpdate; 

    With t_form.Create(frmain) do 
    begin 
     visible := false; 
     Formstyle := fsNormal; //Now i'll make all my forms as fsnormal 
     Parent := self; 

     Width := frmain.sPanel5.width; 
     Height := frmain.sPanel5.height;  
     left:=frmain.sPanel5.left; 
     top:=frmain.sPanel5.Top; 

// Это Spanel5 является предполагаемый клиент область, где будет MDI ребенок, вот почему я скрыть это на самого начало процедуры

  frmain.UnlockClientWindowUpdate; 

     AnimateWindow(handle,1000, AW_CENTER or AW_SLIDE or AW_HOR_NEGATIVE); 

     frmain.lockClientWindowUpdate; 

     Parent := frmain; 
     FormStyle := fsMDIChild; 
     windowstate:=wsmaximized; 

     frmain.unlockClientWindowUpdate; 
    end;  
end; 

И .... Да! Он отлично работает, нет мерцания изображения и таких вещей !! ;) Большое спасибо!

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

  • Нет связанных вопросов^_^