Skip to content

文本标签控件 (SStatic)

Warning

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

You can read it through google translate.

文本标签是用于显示静态文本的基础控件,支持单行和多行文本显示,以及丰富的文本样式设置。

基本信息

  • 类名SStatic
  • 控件标签text
  • 基类SWindow
  • 功能:显示静态文本内容

属性说明

自身属性

属性名 类型 默认值 说明
interHeight int 5 多行文本的行间距(像素),仅在 multiLines="1" 时生效
wordBreak bool false 是否按"单词/数字"为单位换行。为 true 时折行处不会把单词或数字从中间断开;为 false 时按字符逐字换行
noPrefix bool false 是否忽略 & 前缀。true& 按普通字符显示,不再把后一个字符显示为带下划线的加速键提示

对通用属性 multiLines 的重写

multiLines 本身是 SwndStyle 的通用属性,但 SStatic::DrawText() 对它有特殊处理:

  • multiLines="0"(默认):调用 OnDrawLine() 单行绘制,此时 \n 不会换行;
  • multiLines="1":调用 DrawMultiLine() 按行绘制,\n 可强制换行,并且支持垂直居中(valign="middle")与底对齐(valign="bottom"),行间距由 interHeight 控制。

继承自 SWindow / SwndStyle / 布局参数的通用属性,见通用属性

使用示例

基本文本

<text pos="10,10,200,30" 
      name="text_basic"
      text="这是一个简单的文本标签"/>

多行文本

<text pos="10,40,200,100" 
      name="text_multiline"
      multiLines="1"
      interHeight="5"
      wordBreak="1"
      text="这是一个多行文本示例。\n第二行文本内容\n第三行文本内容"/>

自定义样式文本

<text pos="10,110,200,140" 
      name="text_styled"
      text="带样式的文本"
      font="face:微软雅黑,size:16,bold:1"
      colorText="#FF0000"
      align="center"
      valign="middle"/>

带背景和边框的文本

<text pos="10,150,200,180" 
      name="text_bordered"
      text="带边框的文本"
      colorBkgnd="#F0F0F0"
      colorBorder="#CCCCCC"
      margin="2,2,2,2"
      padding="5,5,5,5"/>

省略号显示文本

<text pos="10,190,200,210" 
      name="text_dotted"
      text="这是一段很长的文本,当空间不足时会显示省略号"
      dotted="1"/>

事件处理

文本标签控件支持以下事件:

事件名 EventID 说明
EVT_MOUSE_HOVER EventMouse::EventID 鼠标悬停事件
EVT_MOUSE_LEAVE EventMouse::EventID 鼠标离开事件
EVT_SETFOCUS EventSetFocus::EventID 获得焦点事件
EVT_KILLFOCUS EventKillFocus::EventID 失去焦点事件
// 事件处理示例
EVENT_MAP_BEGIN()
    EVENT_NAME_HANDLER(L"text_styled", EventMouse::EventID, OnTextMouseEvent)
EVENT_MAP_END()

void OnTextMouseEvent(IEvtArgs *pEvt)
{
    // 处理鼠标事件
}

代码操作

// 查找文本控件
SStatic *pStatic = FindChildByName2<SStatic>(L"text_basic");

// 设置文本
pStatic->SetWindowText(L"新文本内容");

// 获取文本
SStringT strText = pStatic->GetWindowText();

// 设置文本颜色
pStatic->SetAttribute(L"colorText", L"#00FF00");

// 启用/禁用省略号显示
pStatic->SetAttribute(L"dotted", L"1");

最佳实践

  1. 文本换行:对于多行文本,合理使用 interHeightwordBreak 属性
  2. 样式统一:通过 fontcolorText 属性保持界面文本风格统一
  3. 空间利用:使用 dotted 属性处理文本过长的情况
  4. 对齐方式:根据布局需要设置合适的 alignvalign 值(见通用属性

常见问题

Q: 多行文本不换行怎么办?

A: 必须先设置 multiLines="1"\n 才会换行;再用 wordBreak 属性控制折行单位(见通用属性)。

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

A: 检查控件尺寸是否足够,或使用 dotted 属性启用省略号显示(见通用属性)。

Q: 文本样式不生效怎么办?

A: 确保 fontcolorText 等属性设置正确,且没有被其他样式覆盖。

相关控件