Skip to content

表头控件 (SHeaderCtrl)

Warning

The current page still doesn't have a translation for this language.

You can read it through google translate.

表头控件用于显示列表或表格的标题栏,支持列宽调整、排序等功能。它通常作为列表控件的一部分,也可以独立使用。

基本信息

  • 类名SHeaderCtrl
  • 控件标签headerctrl
  • 基类SWindow
  • 功能:提供表格列表的标题栏功能

属性说明

基本属性

属性名 类型 默认值 说明
align string - 水平对齐,可选值:left,center,right
itemSwapEnable bool - 是否允许列交换
fixWidth bool - 列宽是否固定
sortHeader bool - 是否支持排序
itemWidth int 60 默认列宽

外观属性

属性名 类型 默认值 说明
colorText color - 文本颜色
font string - 文本字体
itemSkin string - 列项皮肤

尺寸属性

属性名 类型 默认值 说明
itemHeight int - 行高
separatorWidth int 1 分隔线宽度
separatorColor color C0C0C0 分隔线颜色

使用示例

基本表头

<headerctrl name="hdrBasic" 
            pos="10,10,510,40" 
            itemWidth="100"
            align="center"
            font="bold:1">
    <items>
        <item width="80">列标题1</item>
        <item width="120">列标题2</item>
        <item width="150">列标题3</item>
    </items>
</headerctrl>

(删除此块,因为已包含在ctrl.xml示例中)

(删除此块,因为已包含在ctrl.xml示例中)

(删除此部分,因为代码操作部分已包含在ctrl.xml示例中)

事件处理

表头控件支持以下事件:

事件名 EventID 说明
EVT_HEADER_CLICK EventHeaderClick::EventID 表头点击事件
EVT_HEADER_SIZECHANGED EventHeaderSizeChanged::EventID 表头尺寸改变事件
EVT_HEADER_SWAPPED EventHeaderSwapped::EventID 表头交换事件
// 事件处理示例
EVENT_MAP_BEGIN()
    EVENT_NAME_HANDLER(L"hdrBasic", EventHeaderClick::EventID, OnHeaderClick)
    EVENT_NAME_HANDLER(L"hdrBasic", EventHeaderSizeChanged::EventID, OnHeaderSizeChanged)
EVENT_MAP_END()

void OnHeaderClick(IEvtArgs *pEvt)
{
    EventHeaderClick *pRealEvt = sobj_cast<EventHeaderClick>(pEvt);
    int nItem = pRealEvt->nItem;
    // 处理表头点击
}

void OnHeaderSizeChanged(IEvtArgs *pEvt)
{
    EventHeaderSizeChanged *pRealEvt = sobj_cast<EventHeaderSizeChanged>(pEvt);
    int nItem = pRealEvt->nItem;
    int nWidth = pRealEvt->nWidth;
    // 处理表头尺寸改变
}

(删除样式定制部分,因为ctrl.xml中未定义相关样式属性)

最佳实践

  1. 对齐方式:根据数据类型选择合适的对齐方式,文本通常左对齐,数字通常右对齐
  2. 交互设计:通过 itemSwapEnable 属性控制是否允许用户调整列顺序
  3. 宽度控制:使用 fixWidth 属性控制列宽是否固定
  4. 排序功能:根据需要启用 sortHeader 属性提供排序功能
  5. 视觉效果:通过 colorTextfont 属性优化表头视觉效果

常见问题

Q: 表头列宽无法调整怎么办?

A: 确保父控件允许调整大小,并且没有设置 fixWidth 为 1。

Q: 表头文本显示不完整怎么办?

A: 检查 itemHeight 是否足够显示文本,或调整列宽度。

Q: 排序功能不工作怎么办?

A: 确保设置了 sortHeader 为 1,并正确处理排序事件。

相关控件