We start with all fields
collapsed:
And we can expand each ‘Panel’ as
desired:
If we expand the panels beyond the bottom of the
form, we get a scroll bar:
We can also have Panels within Panels to show or
hide more fields, like so:
Note that the resized field is not hidden, but
actually resized:
The Panels above could easily be set to be
visible depending on a field entry, this making a very dynamic form
possible instead of a blank space being left.
Note too that we can, of course, resize the form,
and if Panels are also anchored appropriately, they will
resize:
The way we have managed the dynamic nature of
this form is rather unintuitive from a design point of view.
Essentially, there are two Panel fields to every visible panel, and
the first controls the visibility of the second. They are all (with
the exception of the third displayed panel’s dynamic fields)
docked to the top of the form, and set in the order of display. As
far as we can determine, this is the only way to get this kind of dynamic behaviour
working.
It must also be noted that the only way to
re-order panels when docked to the same container edge is to use
the ‘send to back’ and ‘send to front’
actions from the context menu. This can make it very difficult to
order panels effectively, and can lead to many mistakes, some of
which require running through the entire panel list again. This is
neither intuitive nor easy to use. I would like the tab order to be
used for ordering docked panels. If done correctly, it would be
very intuitive, as the tab order would naturally follow left to
right, top to bottom (that may be an issue with right to left text
implementations). It would also be a great deal easier to manage at
design time than it is currently.