Want to protect your cyber security and still get fast solutions? Ask a secure question today.Go Premium


Open form inside a MDI form

Posted on 2003-03-11
Medium Priority
Last Modified: 2010-05-01
I tried to open a form inside a MDI. TO open the form i used:
  load myform

My problem is that myform not opened with the size that I put in the properties of the form. The only way that i fourn to do that is put the real size in the load event.

Anybody know other way to do that.

Question by:aleycris
  • 2
LVL 22

Expert Comment

ID: 8112500
I've found this to be quite an annoyance.  One way that has worked for me (with smaller forms) is to maximize the MDI form, load/show the child form, then restore the MDI form.

Actually, I think that I shoved the MDI form to the lower right corner, set its width/height to a large number, loaded the child form, then reset the MDI form to its previous location/size.  I did this so it wouldn't flash on the screen.


Author Comment

ID: 8112789
I used that but it doesn't work

Any idea?
LVL 22

Expert Comment

ID: 8112958
It seems that there are two things that control it, but mainly it's the start-up size of the MDI form.

If you start with the MDI form at maximum size in design mode, then the this code seems to work:

Private Sub MDIForm_Load()
  Me.WindowState = vbNormal


  ' resize the MDI form to match the child window, it desired, or whatever size you choose
  Me.Width = Form1.Width + (Me.Width - Me.ScaleWidth)
  Me.Height = Form1.Height + (Me.Height - Me.ScaleHeight)
End Sub

Again, the MDI form has to be sufficiently large in design mode for this to work.

Accepted Solution

QJohnson earned 150 total points
ID: 8116586
VB has its own ideas about the size and locations with which Child forms should show themselves.

But you can override this behavior simply by setting those properties in the Form_Load event.

My own preference it to have form-level variables for the default height and width so that I can also use them to prevent re-sizing to lower values.  But you certainly don't need to incorporate that.

If you do:

In General Declarations:
Private mnStartWidth as Long
Private mnStartHeight as Long

In Form_Load:
mnStartWidth = 6000    ' or whatever value you set at design time
mnStartHeight = 3500   ' your design time height

me.move 0, 0, mnStartWidth, mnStartHeight

this assumes you want to show the form in the top left corner of your MDI parent (i.e, at 0,0).  If you want the form centered, you have to just use something like:

me.move (MDIFormName.ScaleWidth - mnStartWidth) / 2, _
               (MDIFormName.ScaleHeight - mnStartHeight) / 2, _
               (mnStartWidth, mnStartHeight)

Featured Post

Upgrade your Question Security!

Your question, your audience. Choose who sees your identity—and your question—with question security.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Have you ever wanted to restrict the users input in a textbox to numbers, and while doing that make sure that they can't 'cheat' by pasting in non-numeric text? Of course you can do that with code you write yourself but it's tedious and error-prone …
You can of course define an array to hold data that is of a particular type like an array of Strings to hold customer names or an array of Doubles to hold customer sales, but what do you do if you want to coordinate that data? This article describes…
Get people started with the process of using Access VBA to control Excel using automation, Microsoft Access can control other applications. An example is the ability to programmatically talk to Excel. Using automation, an Access application can laun…
Show developers how to use a criteria form to limit the data that appears on an Access report. It is a common requirement that users can specify the criteria for a report at runtime. The easiest way to accomplish this is using a criteria form that a…
Suggested Courses
Course of the Month11 days, 7 hours left to enroll

564 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question