• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 675
  • Last Modified:

Stop child flickering (MDI)

I have an MDI-application with 3 loaded childs (maximized). When I want to show one of the other two childs it first appear as none-miximized then it maximizes and I get a very irritating delay in my program. How do I get rid of this flickering?

When I'm going to show an MDI child I use frmMdiChild1.zorder. Can I do it in an other way?
0
kpnkpn
Asked:
kpnkpn
  • 3
  • 3
  • 2
  • +2
1 Solution
 
mufaza2000Commented:
The last Child you load will be on top.  The main thing to check, at least when I had that problem check you Child form properties to make sure that you don't have the windowstate set to how you want the default action of the Form to show up as.  If you have it set to maximize then it will Maximize when you show it, and then you have Windowstate set to normal in Code you will have that problem. So I would change the Windowstate to Maximized this helped me.  And also you might want to make sure that you are not showing the form to soon.  Maybe :

' Call to Child
Load cfrmChild
cfrmChild.Show

cfrmChild_Load Event:

' I have seen this show a form though
cfrmChild1.WindowState = vbMaximized

Hope it helps
0
 
kpnkpnAuthor Commented:
I have allready checked all the things you said. But I can't get rid of the window animation (from normal state to maximized). I have a listview at the left with three items. When I click on the first item i write: frmChild1.zorder. And then I get this irritating window animation.
0
 
AskeeCommented:
Why not this:

Maximise it when it's hidden then show it - he mdichild?
0
Never miss a deadline with monday.com

The revolutionary project management tool is here!   Plan visually with a single glance and make sure your projects get done.

 
AskeeCommented:
Why not this:

Maximise it when it's hidden then show it - he mdichild?
0
 
amebaCommented:
Set AutoShowChildren of your MDI form to False. Then you will be able to Load form without showing it:

   Load frmChild
   frmChild.WindowState = vbMaximized
   frmChild.Show

Please, do not accept this comment as answer if it is not for A grade.
0
 
glass_cookieCommented:
Hi!

How about this (assuming the mdichild is called Child)...

'Add this code to the MDIchild form:

Private Sub Form_Load()
Child.Move 0, 0, MDIForm1.Width, MDIForm1.Height
End Sub

'Add this code to your MDIForm:

Private Sub MDIForm_Load() 'You can change it - not necessarily MDIForm_Load
Load Child
Child.WindowState = vbMaximized
End Sub

That's it!

glass cookie : )
0
 
glass_cookieCommented:
That's the best I could do to remove as much maximising animation as possible.
0
 
kpnkpnAuthor Commented:
Thankyou very much for the answers. I apologies for being indistinct. The problem isn't when I'm about to load the childs. It's when I have loaded 3 childs and want the 2nd to be shown. I then use zorder() and thats when I get the window animation.
0
 
amebaCommented:
> I then use zorder() and thats when I get the window animation.

Well, don't use frm.Zorder, use frm.Show
0
 
amebaCommented:
frm.Show
frm.SetFocus
0
 
kpnkpnAuthor Commented:
Thanks... I didn't think about that.
0

Featured Post

2018 Annual Membership Survey

Here at Experts Exchange, we strive to give members the best experience. Help us improve the site by taking this survey today! (Bonus: Be entered to win a great tech prize for participating!)

  • 3
  • 3
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now