文檔中心

控件開發_基礎

03.常用控件

华东15选5 www.wjnoc.com 雖然控件的共性已經涵蓋了每個控件的大部分功能,但是控件還有一些特性沒有表明,現在從以下幾個方面介紹:

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);

改變輸入框所能容納的最大的

文本大?。?nbsp;1024個字節)

注意:調用 TwSetCaption()主動設置文本內容不觸發 modified事件。

6)多行文本框

顧名思義,多行文本框用來輸入和顯示多行文本,可以設置自動換行,有滾動區域。

對象類型

TW_TEXTAREA

TStringID(“textarea”)

風格類型

TStringID(“textarea”)

私有標志(對應

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

TW_TEXTAREA_AUTOLINE (“”)

自動換行

TW_TEXTAREA_READONLY (“”)

只讀

多行文本框的文字顯示都由風格來配置。

{ganrao}