1. 程式人生 > 其它 >《TD開發筆記》TD GUI原生控制元件使用探析

《TD開發筆記》TD GUI原生控制元件使用探析

技術標籤:TD開發筆記linux嵌入式TD GUITD控制元件

免責宣告:文中部分資訊有參考到其他網站及牛人的資料,在引用到的地方會註明其來源,如有不宜之處可聯絡本人進行更正或者刪除!學術看法及觀點僅代表個人,僅供參考。知識共享,共同學習,來源於社會,回饋社會。

目錄

1 前言

2 使用示例

3 控制元件佈局

4 控制元件樣式


1 前言

目前,TD官方的幫助文件非常有限,好多細節需要實際開發過程中經驗性摸索。在原生控制元件的使用過程中,大多數小夥伴都是直接使用TDRealizer拖拽、配置屬性、修改樣式的方式完成介面佈局及設計的,但是有很多細節需要在介面佈局.ini檔案和樣式.rc檔案中才能探個究竟。

2 使用示例

參考《TD開發筆記》Hello World

3 控制元件佈局

3.1 一個例子

介面長這個樣子

它的佈局.ini檔案是這樣的

#這是註釋(直到換行)
mainwindow = {
    type="window"
    x=20; y=20; w = 200; h=100
    caption="hello"
    #style=”style_name”
    #flags=0

    button_ok = {
        type="button"
        x=20; y=20; w=50; h=30
        caption="ok"
        #style="style_name"
        #flags=0
    }
    button_cancel = {
        type = "button"
        x=100; y=20; w=50; h=30
        caption="cancel"
        #style="style_name"
        #flags=0
    } 
}

3.2控制元件的基本屬性

type: 控制元件的型別。一個字串的 id,例如 type=“window” x: 相對於父控制元件的橫向位置。一個整數,例如 x=100 y: 相對於父控制元件的縱向位置。一個整數,例如 y=800 w: 控制元件的大小,寬。一個整數,例如 w=200 h: 控制元件的大小,高。一個整數,例如 h=50 style: 控制元件的風格名。一個字串,例如 style=”hello” flags: 控制元件的標誌(公共標記和私有標記)。一個或多個標記,例如 flags=hide 或者 flags={no_focus; child_no_focus;}
caption: 控制元件的標題。一個字串,例如 caption=”ok” layout: 自動佈局的資訊(目前只針對視窗控制元件) 。一個字串 min_w: 控制元件的排版屬性。整數值,指定視窗控制元件(Window) 的最小寬高 (只針對視窗控制元件) ,這是視窗 min_h: 控制元件的排版屬性。整數值,指定視窗控制元件(Window) 的最小寬高 (只針對視窗控制元件) ,這是視窗 其中,flags對應控制元件的標誌: no_focus: TW_NO_FOCUS child_no_focus: TW_CHILD_NO_FOCUS disable: TW_DISABLE hide: TW_HIDE layout_fix_w: TW_LAYOUT_FIX_W layout_fix_h: TW_LAYOUT_FIX_H layout_fix_size: TW_LAYOUT_FIX_W|TW_LAYOUT_FIX_H hide_h_scrollbar: TW_HIDE_H_SCROLL hide_v_scrollbar: TW_HIDE_V_SCROLL hide_scrollbar: TW_HIDE_H_SCROLL|TW_HIDE_V_SCROLL auto_hide_h_scrollbar: TW_AUTO_HIDE_H_SCROLL auto_hide_h_scrollbar: TW_AUTO_HIDE_V_SCROLL auto_hide_scrollbar: TW_AUTO_HIDE_SCROLL no_h_scroll: TW_NO_H_SCROLL no_v_scroll: TW_NO_V_SCROLL

4 控制元件樣式

4.1 一個例子

button.ok {
#[nd] 控制元件在normal和disable狀態下的顯示
	bg = "file1.png", stretch_hv3
	border = "file2.png", 2
	border_margin = 2
	text_aline = text_left, text_middle
	image_aline = image_left, image_middle
	text_margin = 1
	image_margin = 1
	text_color = rgb(0,0,0)
	font = "*-12-*"
#[as] 控制元件在active和select狀態下的顯示
	bg = rgb(255,0,0)
	border = rgb(255,0,0), border_circle, 2
	border_margin = 2,2
	text_color = rgb(0,0,0),rgb(255,255,255)
#}

4.2一般的形式是

type 或者 type.name {
#[status]
  item=value
  item=value,value,...
#[status]
  item=value
  item=value,value,...
#}

4.3type 表示要設定的控制元件型別

 button		按鈕
 bool_button		布林值按鈕
 text			單行文字輸入框的每行
 scrollbar_v_top	垂直滾動條的上端按鈕
 scrollbar_v_bottom	垂直滾動條的下端按鈕
 scrollbar_v_thumb	垂直滾動條的滑塊
 scrollbar_v_background垂直滾動條的背景
 scrollbar_h_left	水平滾動條的左端按鈕
 scrollbar_h_right	水平滾動條的右端按鈕
 scrollbar_h_thumb	水平滾動條的滑塊
 scrollbar_h_background水平滾動條的背景
 processbar_h_thumb	水平進度條的滑塊
 processbar_h_process	水平進度條的進度指示
 processbar_h_carrier	水平進度條的背景
 processbar_v_thumb	垂直進度條的滑塊
 processbar_v_process	垂直進度條的進度指示
 processbar_v_carrier	垂直進度條的背景
 window		視窗
 listview_node		多行列表的節點
 listview_item		多行列表的節點裡面的項


#**********************************************************************
 name 表示要設定指定風格名的控制元件型別
 如果不寫name,表示設定該控制元件型別的預設風格。
 當建立一個控制元件時,會在符合這個控制元件型別的所有風格中查詢和控制元件的風格名一致的風格。
 如果找不到或使用者沒有設定控制元件的風格名,就採用預設風格。
#**********************************************************************

#**********************************************************************
 item表示可以設定的風格項,
 value表示設定的值,有4種形式: 字串"string", 10進位制數, 顏色rgb(0~255,0~255,0~255), 關鍵詞
 不同的item會要求不同的value個數和形式,下面具體說明
#**********************************************************************
 bg
 設定控制元件的背景,可以為顏色值,也可以為圖片。
 當是圖片時還可以指定圖片的拉伸方式, 拉伸方式有
 stretch_normal: 普通拉伸
 stretch_hv3: 把圖片分成3x3的9塊,四個角的四塊不拉伸,其他塊拉伸
 stretch_hv2: 把圖片分成2x2的4塊,四個角的四塊不拉伸,對兩條分隔線及其交叉點進行拉伸
 stretch_tile: 平鋪,不拉伸
 例子
 bg=rgb(255,200,200)
 bg="bg.png",stretch_hv3 不寫拉伸方式,預設是stretch_normal
 bg="ParentRelative" 特殊的圖片名,表示採用父控制元件的背景
 bg="None" 特殊的圖片名,表示沒有背景

 img
 控制元件上顯示的前景圖片
 img="img.png"
#----------------------------------------------------------------
 border
 設定控制元件的邊框, 可以為顏色值,也可以為圖片,
 當是圖片時,實際繪製時的圖片拉伸方式和bg相同,還可以設定邊框大小,
 當是顏色時可以設定邊框的型別和大小,邊框的型別有
 border_rect:矩形邊框
 border_circle: 圓角邊框
 border_down: 凹邊框
 border_up: 凸邊框
 border_right_br: 下邊和右邊有邊框
 border_right_b:下劃線邊框
 border_right_b_d:下劃線虛框
 border_blank:空白框
 例子
 border=rgb(255,200,200),border_rect,2
 border="bg.png",2

#----------------------------------------------------------------
 text_aline
 控制元件文字的對齊方式,分為水平對齊和垂直對齊,
 text_left: 文字水平左對齊
 text_right: 文字水平右對齊
 text_top: 文字垂直上對齊
 text_bottom: 文字垂直下對齊
 text_middle: 文字水平或垂直居中
 text_xfollow: 文字水平跟在圖片後面
 text_yfollow: 文字垂直跟在圖片後面
 例子
 text_aline=text_left,text_middle 文字水平靠左邊,垂直居中顯示

#----------------------------------------------------------------
 image_aline
 控制元件圖片的對齊方式,分為水平對齊和垂直對齊,
 image_left: 圖片水平左對齊
 image_right: 圖片水平右對齊
 image_top: 圖片垂直上對齊
 image_bottom: 圖片垂直下對齊
 image_middle: 圖片水平或垂直居中
 例子
 image_aline=image_left,image_middle 圖片水平靠左邊,垂直居中顯示

#----------------------------------------------------------------
 text_margin
 控制元件中兩行文字之間的間隔
 例子
 text_margin=1

#----------------------------------------------------------------
 image_margin
 當文字的對齊方式text_xfollow或text_yfollow時,圖片和文字之間的間隔
 例子
 image_margin=1

#----------------------------------------------------------------
 border_margin
 邊框四周和控制元件內部(文字和圖片)的間隔,分為左left,上top,右right,下bottom
 例子
 border_margin=1       left=1,top=1,right=1,bottom=1
 border_margin=1,2     left=1,top=2,right=1,bottom=2
 border_margin=1,2,3   left=1,top=2,right=3,bottom=2
 border_margin=1,2,3,4 left=1,top=2,right=3,bottom=4
 文字和圖片的對齊方式是左對齊時,間隔只考慮left, 右對齊時只考慮right,
 居中時考慮left和right;垂直方向類似。

#----------------------------------------------------------------
 text_color
 設定文字顯示的顏色和背景色
 例子
 text_color=rgb(0,0,0) 用黑色顯示文字,沒有文字的背景色
 text_color=rgb(0,0,0),rgb(0,255,0) 用黑色顯示文字,文字的背景為綠色

#----------------------------------------------------------------
 font
 控制元件中顯示文字的字型名,預設是繼承父控制元件的字型
 如 font = "yahei-16"

#----------------------------------------------------------------
 alpha
 設定顯示內容的alpha值,預設為255(不透明), 賦值範圍為[0, 255]
 如 alpha = 128

#**********************************************************************
 status 一個控制元件在它的不同狀態下會有不同的顯示,所以在一個完整的風格
 中要根據狀態分組.當開始不寫[status]時就表示設定的是所有狀態下的顯示
#**********************************************************************
 每個單元都有四種狀態,分為:
 正常狀態(normal)
 啟用狀態(active)
 被選擇狀態(select)
 失效狀態(disable)
 其對應的狀態值分別為n、a、s、d 或 N、A、S、D
 例子
 [nasd] [nas] [n] [sd]

 注意:包含n狀態的項一定要排在前面, 控制元件建立時n狀態的項總會先設定.