Size policy for ComboBoxes
You can use the SIZEPOLICY attribute for a COMBOBOX.
Starting with version 1.30 you can use the SIZEPOLICY attribute for COMBOBOXes.
COMBOBOX
form items had a special behavior in versions prior to 1.30,
because they adapted their size to the maximum item of the value list. On one hand, this
is very convenient because the programmer doesn't have to find the biggest string in the
value list, and to estimate how large it will be on the screen (with proportional fonts
the string with the highest number of characters is not automatically the largest string).
On the other hand, this behavior often led to an unpredictable layout if the programmer
didn't reserve enough space for the COMBOBOX
.
The SIZEPOLICY
attribute gives better control
of the result.
<G "Combo makes edit2 too big" >
[edit1]
[combo ]
[edit2 ]
...
ATTRIBUTES
EDIT edit1=formonly.edit1;
COMBOBOX combo=formonly.combo,
ITEMS=((0,"Veeeeeeeery Loooooooooooooooong Item"),(1,"hallo")),
DEFAULT=0;
EDIT edit2=formonly.edit2;
END
In this case, the "combo"
field gets very large
as does "edit2
", because it ends in the same grid
column. It will confuse the end user if he can input only eight characters
and the field is apparently much bigger. Two possibilities exist to
surround this:
Use an HBox to prevent the edit2
from growing,
and use HBoxes for all fields which start together with combo
and
are as large or bigger than combo
:
<G "Edit2 in HBox doesn't grow" >
[edit1]
[combo :]
[edit2 :]
...
Use the new SIZEPOLICY
attribute, and set it to fixed
to prevent combo
from getting bigger than the initial six characters
(6+Button):
<G "Combo has a fixed size">
...
[combo ]
[edit2 ]
...
ATTRIBUTES
...
COMBOBOX combo=formonly.combo,
ITEMS = ((0,"Veeeeeeeery Looooooooooooooooong Item"),(1,"hallo")),
DEFAULT=0, SIZEPOLOCY=FIXED ;
....
In this example the edit2
dictates the maximum size of combo
,
because even if the SIZEPOLICY is fixed, the elements are aligned by the Grid.
To prevent this and have exactly six characters (numbers) in the ComboBox, you need
to de-couple combo
from edit2
by using an HBox.
<G "Combo has a fixed size,sample 0,in HBox"
...
Combo [combo :]
Edit2 [edit2 :]
...
COMBOBOX combo=formonly.combo,
ITEMS = ((0,"12345678 Looooooooooooooooong Item"),(1,"hallo")),
DEFAULT=0, SIZEPOLICY=FIXED, SAMPLE="0";
Now the wanted six numbers are displayed and combo
does not grow to the
size of edit2
.