文档中心

控件开发_基础

03.常用控件

虽然控件的共性已经涵盖了每个控件的大部分功能,但是控件还有一些特性没有表明,现在从以下几个方面介绍:

a)在控件的公共属性中,值(value)和标题(caption)的具体含义,公共事件中TStringID(“modified”)事件的含义;

b)控件的风格外观:控件内部由数个显示单元组成,在风格配置文件中,每个显示单 元的对应的风格类型;

c)控件的私有标志;

d)控件的私有事件;

e)控件的私有属性和方法;

在具体控件的头文件中,也是按照这个内容来组织的。

1)窗口

窗口是最常用的控件之一,控件系统初始化时返回的根控件就是一个窗口控件,并且窗口控件的子控件也必须是窗口控件

窗口控件可以作为其他控件的父控件来组织控件,其 caption属性就是窗口标题栏上显示的文本。

对象类型

TW_WINDOW

TStringID(“window”)

风格类型

TStringID(“window”)

私有标志,括

号 里 是 对 应

布 局 文 件 中

的 字 符 串 名 字

TW_WINDOW_TYPE_NORMAL

(“window_normal”)

普通窗口类型(有边框和标题栏)

TW_WINDOW_TYPE_SPLASH

(“window_splash”)

没有边框和标题栏的窗口类型

TW_WINDOW_TYPE_DOCK (“window_dock”)

Dock窗口类型(一种不参与窗口管理的特殊窗口)

TW_WINDOW_HAS_SCROLL

(“window_scroll”)

窗口有滚动区域

TW_WINDOW_SCROLL_FIX_BG

(“window_scroll_fix_bg”)

滚动局域的背景在滚动时是固定的,不滚动

TW_WINDOW_SCROLL_GRAB_MOUSE

(“window_scroll_grab_mouse”)

可以通过在滚动局域中拖动鼠标来实现滚动

私有事件

TW_WINDOW_EVENT_REUEST_CLOSE

请求关闭

TW_WINDOW_EVENT_CHANGE_SIZE

被改变大小

TW_WINDOW_EVENT_KEY

键盘事件

TW_WINDOW_EVENT_CURSOR

光标事件

TW_WINDOW_EVENT_SHOW

在屏幕上显示出来

TW_WINDOW_EVENT_HIDE

隐藏

私 有 属 性 和

方法

TwWindowSetFocusKey()

设置焦点切换键

TwWindowSetScrollArea()

TwWindowSetScrollPos() TwWindowSetScrollPosOffset() TwWindowGetScrollPos() TwWindowSetScrollAlign() TwWindowSetScrollMaxStep()

设置滚动区域

设置滚动位置

设置相对滚动位置

得到滚动位置

设置滚动位置的对齐

设置拖动滚动时的最大惯性滑动距离(以 align为单位)

TwWindowSetAlpha()

TwWindowGetAlpha()

设置透明度

得到透明度

TwWindowRaise();

TwWindowSetAbove(); TwWindowSetBelow();

提升窗口

设置窗口长居顶端

设置窗口长居低端

函数的具体原型参见窗口控件的头文件(/tdGUI-x86/output/include/TWidget/TWindow.h)。

2)按钮

一个按钮就是一个显示单元,按钮的 caption属性未按钮上显示的文本,按钮的 value属性就是控件的状态(普通、活动、选中、无效),当按钮的状态发生变化时就会触发修改事件 TStringID(“modified”)。当获得焦点或者光标进入显示区域时,按钮是活动状态;当按钮被按下时,按钮是选中状态;当按钮被松开时, 按钮触发点击事件 TStringID(“clicked”)。

对象类型

TW_BUTTON

TStringID(“button”)

风格类型

TStringID(“button”)

私有标志(对应布

局 文 件 中 的 字 符串名字)

TW_BUTTON_NO_EVENT

(“button_no_event”)

按钮不接收事件,相当于

一个静态标签

TW_BUTTON_NO_OFFSET

(“button_no_offset”)

当按钮被按下时,不产生

偏移

TW_BUTTON_ENTER_IS_NORMAL

当光标进入按钮的显示

区域时,按钮仍然是普通 状态

私有属性和方法

TwButtonSetImage()

设置按钮上显示的图片

TwButtonSetAlpha()

TwButtonGetAlpha()

设置透明度

得到透明度

TwButtonRaise();

提升按钮

函数的具体原型参见按钮控件的头文件(/tdGUI/output/include/TWidget/TButton.h)。

3)布尔按钮

布尔按钮也是一种常用的控件,只有一个显示单元,按钮的 caption属性就是上面显示的文本,按钮的 value属性只能是 0或者 1。当获得焦点或光标进入其显示区域时,布尔按钮是活动状态;当 value等于 1时,是选中状态。当 value发生变化时,触发修改事件 TStringID(“modified”)。

注意:布尔钮的风格显和一般控不一样。一般控件就是直接设置风格中和自己的状态相符的内容。而布尔按钮首先设置风格中普通状态的内容,然后如果自己的状态是活动状态或选中状态,那么就再设置风格中活动状态的内容,最后如果自己的状态是选中状态,再设置风格中选中状态的内容。

对象类型

TW_BOOLBUTTON

TStringID(“bool_button”)

风格类型

TStringID(“bool_button”)

私有标志(对应布

局 文 件 中 的 字 符串名字)

TW_BOOLBUTTON_KEEP

(“boolbutton_keep”)

当按钮的值为 0时,点击按钮值变

为 1;当按钮的值为 1时,点击按钮值不变;(默认行为)

TW_BOOLBUTTON_TOGGLE

(“boolbutton_toggle”)

当按钮的值为 0时,点击按钮值变

为 1;当按钮的值为 1时,点击按钮值变为 0;

注意:调用 TwSetValue()主动设置 bool按钮的值不触发 modified事件。

在实际使用过程中,可能需要把多个布尔按钮作为一个组,一组中的布尔按钮同时只能有一个值为 1,当点击其他布尔按钮时,被点击的按钮值变为 1,同组中前一个值为 1的按钮自动变为 0。为了实现这种多选一的功能,提供了一个单选组对象:

系统全局函数

void twRadioGroupAdd(void *group_space, void *bool, char *group);

把一个 bool按钮加入到一个名字为 group的组中。相同的 group_space中,group 相同的是一组,同一个组中最多只有一个布尔按钮的值为 1。

group_space可以是任意非 NULL指针,只起到标识的作用,不会访问它。group可以是 NULL。

4)进度条

进度条控件用来指示进度,进度条内部是由三个显示单元叠在一起组成,最下面的显示单元是底框,中间一个是进度,上面是滑块。表示进度的显示大小是根据进度值实时计算的,滑块是可以隐藏的。进度条的 value属性就是进度值,caption属性就是进度条上显示的文本。当进度条的进度发生变化时,触发修改事件 TStringID(“modified”)。

对象类型

TW_PROCESSBAR

TStringID(“processbar”)

风格类型

TW_STRING(processbar_h_carrier)

水平进度条的底框

TW_STRING(processbar_h_proces

s)

水平进度条的进度

TW_STRING(processbar_h_thumb)

水平进度条的滑块

TW_STRING(processbar_v_carrier)

垂直进度条的底框

TW_STRING(processbar_v_proces

s)

垂直进度条的进度

TW_STRING(processbar_v_thumb)

垂直进度条的滑块

私有标志(对应布

局文件中的字符串名字)

TW_PROCESSBAR_H

(“processbar_h”)

创建水平滚动条(默认)

TW_PROCESSBAR_V

(“processbar_v”)

创建垂直进度条

TW_PROCESSBAR_LT

(“processbar_lt”)

进度从水平进度条的左边或

垂直进度条的上边开始

TW_PROCESSBAR_RB (“processbar_rb”)

进度从水平进度条的右边或

垂直进度条的下边开始

TW_PROCESSBAR_HIDE_THUMB

(“processbar_hide_thumb”)

隐藏滑块

TW_PROCESSBAR_HIDE_PROCESS

(“processbar_hide_process”)

隐藏进度

TW_PROCESSBAR_CLICK_MODIFY

(“processbar_click_modify”)

点击进度条的任意位置会直

接改变进度值,否则只有拖动 滑块才改变进度值。

私有属性和方法

void

TwProcessbarSetRange(TWidget *widget, Tint minval, Tint maxval);

设置进度条的进度范围。

注意:调用 TwSetValue()主动设置进度值不触发 modified事件。

5)单行文本框

单行文本框也是常有控件,用来输入一行文本,内部也是一个显示单元。它的 caption属性就是单行文本框里面的文本,它的 value属性就是当前输入光标的位置,当单行文本框里面的文本发生变化时,触发修改事件 TStringID(“modified”)。

对象类型

TW_TEXT

TStringID(“text”)

风格类型

TStringID(“text”)

私有标志(对应

布局文件中的字符串名字)

TW_TEXT_NUMBER (“”)

只能输入数字和小数点

TW_TEXT_PASSWORD (“”)

密码框

TW_TEXT_NO_MOVE_CURSOR (“”)

不移动输入光标

TW_TEXT_READONLY (“”)

文本只读

私有属性和方法

Void TwTextSetBufferMaxSize(TWidge t *widget, int byte_size);

改变输入框所能容纳的最大的

文本大小(默认 1024个字节)

注意:调用 TwSetCaption()主动设置文本内容不触发 modified事件。

6)多行文本框

顾名思义,多行文本框用来输入和显示多行文本,可以设置自动换行,有滚动区域。

对象类型

TW_TEXTAREA

TStringID(“textarea”)

风格类型

TStringID(“textarea”)

私有标志(对应

布局文件中的字符串名字)

TW_TEXTAREA_AUTOLINE (“”)

自动换行

TW_TEXTAREA_READONLY (“”)

只读

多行文本框的文字显示都由风格来配置。