Random Disappearing Scrollbars on a MDI Child form
Posted on 2001-09-14
We have an MDI document in VB6 with a main menubar on the side and a bunch of kiddie forms that appear in the MDI when items on the menubar are clicked. Most of the child forms are forms with embedded Excel-like spreadsheets (to be more precise they are Formula One ActiveX spreadsheets).
The child forms are all loaded when the application starts up and are hidden until they are needed. When the user clicks a menu item, the appropriate form is brought up and the data loaded into it.
In most cases, the child form is larger than the available space in the MDI form - hence, logicially, scrollbars should appear so you can view the entire child form. half the time, the scrollbars are there and everything is good. At completely random times, when the child form is loaded, the scrollbars will be completely absent. You can still view the whole child form by using the arrow keys and moving from cell to cell on the spreadsheet but you can't scroll.
The ONLY way you can get the scrollbars back when this happens is to resize the form (whether it be minimizing then restoring, maximizing then restoring, or simply manually resizing the form with the mouse). Once you do this, the scrollbars will appear.
Through trial and error, we're pretty confident that it's a MDI problem and has nothing to do with the spreadsheet itself (because resizing the MDI corrects the problem). We've tried forcing the scrollbars on in just about every MDI event possible. Refreshing everything does nothing...
We've even tried workarounds including changing the size of the form through code as in the example below:
mdiMain.Height = mdiMain.Height * 0.1
mdiMain.Height = mdiMain.Height / 0.1
Which works except when the form is maximized (in which case you can't alter the .height property).
We've tried the following as well( where frmWorkbook is the child form):
frmWorkbook.Height = frmWorkbook.Height * 0.1
frmWorkbook.Height = frmWorkbook.Height / 0.1
and it works when it's maximized except sometimes you get double scrollbars appearing - one set on the child form and the other set on the MDI frame. We've even gone as far as hiding the form, maximizing the form and normalizing the form, then making the form visible again. This doesn't work if the form is hidden - works if it's visible but obviously it's not pretty to look at.
We can't be the only ones suffering from this!! Thanks in advance.