OrangeUI

ListBox通常是垂直排列显示列表项的,
当然,水平排列显示也是可以的,
接下来就给大家演示一下列表项水平排列显示的ListBox,
目标效果如下图所示:

先拖一个ListBox到窗体上,
双击ListBox,添加7个列表项,
设置列表项的Caption为“周一”至“周日”,
设置列表项的Detail为对应的日期,
把第一个列表项的Selected设置True,
表示该列表项为选中状态,

添加完是这个样子的:

因为ListBox默认是垂直排列显示列表项的,
所以要把ListBox拉高一点,才能看到其他列表项:

要让ListBoxItem水平排列显示列表项,
需要设置ListBox.Properties.ItemLayoutType为iltHorizontal,
再设置ListBox.Properties.ItemWidth为60,
设置ListBox.Properties.ItemHeight为50,


还需要排列一下Caption和Detail的绘制位置,
让Detail显示在Caption下面,并且两者都水平居中,
Caption的字体偏大,颜色为黑色,
Detail的字体偏小,颜色为灰色#FF878787,
当选中的时候Caption和Detail的字体颜色均为#FF46D2DC
在SelfOwnMaterial.DrawItemCaptionParam中设置列表顶标题的字体,
在SelfOwnMaterial.DrawItemDetailParam中设置列表项Detil的字体,
先设置Caption的显示:

再设置当列表项选中时Caption的字体颜色:

再接下来设置Detail的显示:

再设置当列表项选中时Detail字体颜色:

现在效果如下:

还需要添加一个效果,
就是列表项选中的时候宽度变宽,并且底下有一条青色的线,
如下图:

先设置列表项选中的宽度,
将ListBox的ItemWidthCalcType为isctSeparate,
将ListBox的SelectedItemWidth为120,


再设置DrawItemBackColorParam.FillColor为#FF46D2DC,
PushedEffect.EffectTypes把drpetIsFillChange打勾,
PushedEffect.IsFill设置为True,

先看一下效果,
发现背景色充满整个了列表项,都看不见Caption和Detail了:

因为这个DrawItemBackColorParam是设置列表项的背景颜色的,
要把它变细一点,
在DrawItemBackColorParam.DrawRectSetting中设置,
高度设置为5个像素,位置在底部,


把”周五”选中看看效果:

默认ListBox是垂直排列显示列表项的,可以上下拖动的,
水平排列显示ListBox需要可以左右拖动,
需要设置垂直滚动条类型为sbstNone,表示没有垂直滚动条,因此不允许上下拖动,


 
 
 
 
 
 
 
 
 
 
 
 
 
[o1]改成:需要设置垂直滚动条类型为sbstNone,表示没有垂直滚动条,因此不允许上下拖动,
设置水平滚动条类型为sbstHide,表示隐藏水平滚动条,但允许左右拖动