Bis vor einiger Zeit war eine Anpassung der Dialogobjekte bei Größenänderungen des Dialogs nur über das Ereignis EvtPosChanged
möglich. Durch die Verwendung einiger Eigenschaften kann nun, bis auf in einigen Spezialfällen, darauf verzichtet werden. In diesem Artikel möchte ich Ihnen die Möglichkeiten hierfür aufzeigen.
Alle Objekte mit Unterobjekten enthalten die Eigenschaft wpGrouping
. Diese Eigenschaft bewirkt, dass alle Unterobjekte gleichmäßig auf die Breite (_WinGroupingTileHorz
) oder Höhe (_WinGroupingTileVert
) des Objektes verteilt werden. Werden die untergeordneten Objekte beispielsweise auf die Breite verteilt, werden sie so hoch gezeichnet, wie das Eltern-Objekt hoch ist.
Wird nur die Eigenschaft wpGrouping
gesetzt, wird der verfügbare Platz gleichmäßig auf die untergeordneten Objekte aufgeteilt. Um eines der untergeordneten Objekte entweder nicht mit anzupassen, oder mit einer festen Höhe / Breite zu versehen kann die Eigenschaft wpAlignGrouping
verwendet werden. Diese wird beim jeweiligen untergeordneten Objekt gesetzt.
Bei _WinAlignGroupingLeft
und _WinAlignGroupingRight
wird das Objekt mit der festen Breite aus der Eigenschaft wpAlignWidth
und bei _WinAlignGroupingTop
und _WinAlignGroupingBottom
mit der festen Höhe der Eigenschaft wpAlignHeight
am jeweiligen Rand gezeichnet.
Im oben angezeigten Bild ist beim Dialog die Eigenschaft wpGrouping
auf _WinGroupingTileVert
gesetzt. Die Eigenschaft wpAlignGrouping
ist beim oberen Button auf _WinAlignGroupingTop
und beim unteren auf _WinAlignGroupingBottom
gesetzt. Das bewirkt, dass diese Objekte mit einer festen Höhe dargestellt werden. Beim mittleren Button hat die Eigenschaft wpAlignGrouping
den Wert _WinAlignGroupingTiled
. Alle Objekte mit diesem Wert werden gleichmäßig im restlichen freien Platz vergrößert.
Falls diese Eigenschaften das Fenster nicht fein genug vergrößerbar machen, kann ein Objekt durch Verwendung von GroupSplit
und GroupTile
-Objekten in Teilbereiche aufteilen. Über die Eigenschaften wpWidth
und wpHeight
kann ein Verhältnis gegenüber einem anderen GroupTile
angegeben werden. Wird ein negativer Wert eingetragen, erhält das GroupTile
eine feste Höhe oder Breite.
Die Verwendung der automatischen Positionierung von Dialogobjekten ist meist schneller als die Verwendung des Ereignisses EvtPosChanged
.