[Lazarus] TSplitter

Bernd Kreuss prof7bit at googlemail.com
Sat Aug 21 21:40:04 CEST 2010


On 21.08.2010 20:59, Hans-Peter Diettrich wrote:

> So why should it be intuitive to add an splitter first, and to add the 
> splitted components later - provided that you don't forget to do so?

No. It doesn't matter in what order you add them.

You add them all and then you connect them like components in a circuit
diagram. You anchor each of the two controls at the [sibling control
that ultimately determines the position, namely the] splitter.

Let me explain what was going on with the synaptic connections in my
brain while understanding the anchors and the siblings:

(observation) there are anchors on each side of every control

(thinking process) they must have something to do with sizing the
controls, lets see how they behave (some quick experimenting)

(new connection in my brain) Thy behave like what they already suggest
with their naming: with the anchoring and the siblings I can force one
side of the control be determined relative to the position of another
control or the corresponding border of the client area itself.

[...]

(observation) there exists a splitter

(thinking process) a splitter is moved by the user and the surrounding
controls determine their size from its position. (invoking previously
learned wisdom) controls can be sized with anchors and siblings,
translated to a splitter this would mean I anchor the right side of the
left and the left side of the right control at the splitter. (some
hypothesis testing) (some counterintuitive hurdles with the splitter
default settings and Align which is a different concept) (success)

(new connection in my brain) anchoring works with splitters the *exact*
same way it works with all other controls. No need for Align (for now).

* the sheer existence of anchors has made me completely ignore and
forget and dislike the Align property which reminds me of antique and
clumsy nesting of box sizers and the like.

> Please write up your ideas about intuitive GUI layouts, and compare 
> these to the established layout management procedures, as implemented in 
> e.g. in the Java, gtk2 or other layout managers.

No need for that. Lazarus implemented them already the way I find them
much more intuitive than I have ever seen in any of the above mentioned
frameworks. The only thing that was counterintuitive was the anchoring
default setting of Align for TSplitter, a control that is meant to be
used for determining the sizes of other controls and not meant to be
glued to a form border. A control that I would intuitively place in the
middle between the two other controls. When set to alNone the Splitter
behaves like i would have expected and one can freely position it and
anchor other controls at it to let their sizing be determined by the
splitter (see above brain-dump).

Everything works, only the default setting for Align was wrong for my
understanding (in am environment where there exist the more adequate
anchors).

Bernd




More information about the Lazarus mailing list