對(duì)話框設(shè)計(jì)清華CAD二次開發(fā)LISP_第1頁
對(duì)話框設(shè)計(jì)清華CAD二次開發(fā)LISP_第2頁
對(duì)話框設(shè)計(jì)清華CAD二次開發(fā)LISP_第3頁
對(duì)話框設(shè)計(jì)清華CAD二次開發(fā)LISP_第4頁
對(duì)話框設(shè)計(jì)清華CAD二次開發(fā)LISP_第5頁
已閱讀5頁,還剩142頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

對(duì)話框設(shè)計(jì)清華CAD二次開發(fā)LISP演示文稿目前一頁\總數(shù)一百四十七頁\編于二十二點(diǎn)優(yōu)選對(duì)話框設(shè)計(jì)清華CAD二次開發(fā)LISPppt目前二頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.1概述1.對(duì)話框的特點(diǎn)對(duì)話框形象、直觀,可以隨意輸入、隨時(shí)修改,鼠標(biāo)、鍵盤并用,是一種深受用戶歡迎的界面。對(duì)話框用DCL語言(DialogControlLanguage)定義,得到"DCL類型的文件,用AutoLISP或C程序驅(qū)動(dòng)。

AutoCAD提供了兩個(gè)重要的DCL文件:ACAD.DCL存放AutoCAD系統(tǒng)定義的對(duì)話框,BASE.DCL為用戶提供了一些常用的對(duì)話框標(biāo)準(zhǔn)控件。2.對(duì)話框的組成對(duì)話框由若干控件組成,見圖12-1??丶梢允前粹o、切換開關(guān)、編輯框、列表或圖像等。目前三頁\總數(shù)一百四十七頁\編于二十二點(diǎn)圖12-1對(duì)話框的組成圖像按鈕彈出列表滑動(dòng)條編輯框按鈕圖像互鎖按鈕切換開關(guān)文本目前四頁\總數(shù)一百四十七頁\編于二十二點(diǎn)3.實(shí)例【例12-1】用DCL定義一個(gè)簡(jiǎn)單的對(duì)話框。進(jìn)入VLISP環(huán)境,將下列源代碼輸入到文本編輯窗口,選取下拉菜單ToolsInterfaceToolPreviewDCLinEditor,即可看到圖12-2所示該對(duì)話框的外觀。sample:dialog{label="簡(jiǎn)單的對(duì)話框?qū)嵗?;:text{label="祝您成功!";}:button{key="accept";label="確認(rèn)";is_default=true;fixed_width=true;alignment=centered;圖12-2簡(jiǎn)單的對(duì)話框?qū)嵗齷}目前五頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.2對(duì)話框控件控件是構(gòu)造對(duì)話框的元件。AutoCAD為用戶預(yù)定義了23種控件和8個(gè)常用的固定控件。每一種控件屬于一種類型。每一個(gè)控件有多個(gè)屬性。每個(gè)屬性都有一個(gè)名字和值。多數(shù)的屬性都有它的默認(rèn)值。一個(gè)控件具有哪些屬性是由它的類型所決定的??丶倪@些屬性確定了它的外觀形式和動(dòng)作行為。

例如上例中的"確認(rèn)"按鈕,它的類型是button。當(dāng)它的屬性label="確認(rèn)"、key="accept"、is_default=true、fixed_width=true、alignment=centered,其余屬性為默認(rèn)值時(shí),就確定了圖12-2所示的外觀。按照控件的特點(diǎn)可以將控件分為以下幾類。目前六頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.2.1可以定義動(dòng)作行為的控件這類控件具有動(dòng)作行為(action)的屬性,動(dòng)作行為是用AutoLISP的函數(shù)或表達(dá)式表示定義的,用鼠標(biāo)單擊這樣的控件時(shí),就會(huì)執(zhí)行相應(yīng)的函數(shù)或表達(dá)式。1.按鈕(Button)按鈕適用于立即產(chǎn)生可視的操作,如退出對(duì)話框、彈出子對(duì)話框及其它特定操作。每個(gè)對(duì)話框至少包含一個(gè)OK按鈕(或功能相當(dāng)?shù)目丶?。按鈕的類型是button。有action、alignment、fixed_height、fixed_width、height、is_cancel、is_default、is_enabled、is_tab_stop、key、label、mnemonic、width共13個(gè)屬性。它的標(biāo)簽(label)顯示在按鈕上。若要?jiǎng)?chuàng)建與OK等價(jià)的控件,其關(guān)鍵字必須為"accept",并將其屬性is_default設(shè)定為true(真)。參照例12-1中"確認(rèn)"按鈕的定義。目前七頁\總數(shù)一百四十七頁\編于二十二點(diǎn)2.編輯框(EditBox)

編輯框用于輸入字符串。它的類型是edit_box。有action、alignment、allow_accept、edit_limit、edit_width、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width、password_char16個(gè)屬性。其標(biāo)簽顯示在該框的左邊,它的默認(rèn)寬度為12個(gè)字符,當(dāng)輸入的字符多于12時(shí),文本自動(dòng)向左滾動(dòng),框內(nèi)的字符串即為編輯框的值(value)。圖12-3所示的編輯框定義如下::edit_box{key="test_text";label="長(zhǎng)度:";value="100.0";width=12;圖12-3編輯框

}目前八頁\總數(shù)一百四十七頁\編于二十二點(diǎn)3.圖像按鈕(ImageButton)

圖像按鈕將圖像顯示在按鈕上。圖像由AutoLISP程序確定。它的類型是image_button。有action、alignment、allow_accept、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width13個(gè)屬性。圖像按鈕很有用的一個(gè)特性是,通過AutoLISP程序可以獲取被單擊時(shí)的位置,從而根據(jù)不同的位置設(shè)計(jì)相應(yīng)的動(dòng)作。圖12-4所示圖像按鈕定義的如下::image_button{key="test_image_button";width=10;aspect_ratio=1.5;圖12-4圖像按鈕}目前九頁\總數(shù)一百四十七頁\編于二十二點(diǎn)4.列表框(ListBbox)列表框的類型是list_box。有action、alignment、allow_accept、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、multiple_select、tabs、value、width16個(gè)屬性。列表內(nèi)含有若干行可供選擇的文本,當(dāng)表的內(nèi)容超出表的范圍時(shí),將自動(dòng)在表的右側(cè)出現(xiàn)一個(gè)滑動(dòng)條。

列表的標(biāo)簽顯示在列表框的上方作為文字說明。列表的值是被選中的文本行的序號(hào),序號(hào)從0開始。屬性multiple_select為true時(shí),允許同時(shí)選取框內(nèi)的多行文本。圖12-5列表框目前十頁\總數(shù)一百四十七頁\編于二十二點(diǎn)圖12-5所示對(duì)話框的列表定義如下::list_box{label="齒輪種類";list="圓柱直齒\n圓柱斜齒\n圓錐直齒\n螺旋傘齒\n蝸輪\n蝸桿\n";value="2";key="gear_list";height=6;}圖12-5列表框目前十一頁\總數(shù)一百四十七頁\編于二十二點(diǎn)5.下拉列表(PopupList)下拉列表的類型是popup_list。它具有action、alignment、edit_width、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、tabs、value、width15個(gè)屬性。下拉列表具有編輯框和列表框的兩個(gè)特點(diǎn),初始狀態(tài)象一個(gè)編輯框,標(biāo)簽顯示在框的左邊,框內(nèi)只有一行字符和一個(gè)向下的箭頭,見圖12-6(a)。單擊框內(nèi)箭頭,將彈出一個(gè)列表,見圖12-6(b),選取表內(nèi)文本之后,列表自動(dòng)關(guān)閉,在編輯框內(nèi)顯示選中的內(nèi)容。下拉列表的值是被選中的文本行的序號(hào)。目前十二頁\總數(shù)一百四十七頁\編于二十二點(diǎn)圖12-6所示下拉列表的定義如下::popup_list{label="齒輪種類:";list="圓柱直齒\n圓柱斜齒\n圓錐直齒\n螺旋傘齒\n蝸輪\n蝸桿\n";key="gear_list";}(a)(b)圖12-6下拉列表目前十三頁\總數(shù)一百四十七頁\編于二十二點(diǎn)6.互鎖按鈕(RadioButton)互鎖按鈕的類型是radio_button。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width12個(gè)屬性?;ユi按鈕不宜能單獨(dú)使用,必須由多個(gè)這樣的按鈕以行或列的形式組成一組,同組的按鈕之間是互鎖的,只能從中選取一個(gè)。互鎖按鈕的標(biāo)簽顯示在按鈕的右邊。圖12-7所示互鎖按鈕的定義如下::radio_button

{key="unit_mm";label="毫米";}圖12-7互鎖按鈕目前十四頁\總數(shù)一百四十七頁\編于二十二點(diǎn)7.滑動(dòng)條(Slider)滑動(dòng)條是一種直觀控制數(shù)值的控件。點(diǎn)取滑動(dòng)條上的箭頭或拖動(dòng)滑塊,可以得到字符串方式表示的整數(shù)?;瑒?dòng)條的類型是slider。有action、alignment、big_increment、fixed_height、fixed_width、height、key、label、layout、max_value、min_value、mnemonic、small_increment、value、width15個(gè)屬性。屬性max_value、min_value確定數(shù)值的最大和最小值,small_increment、big_increment確定點(diǎn)擊滑動(dòng)條箭頭時(shí)的最小、最大增量。

圖12-8所示滑動(dòng)條的定義如下::slider

{key="test_slider";min_value=0;max_value=100;}圖12-8滑動(dòng)條目前十五頁\總數(shù)一百四十七頁\編于二十二點(diǎn)8.切換開關(guān)(Toggle)切換開關(guān)又稱作復(fù)選開關(guān)、乒乓開關(guān),它的類型是toggle。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、value、width11個(gè)屬性。切換開關(guān)與互鎖按鈕不同的是它可以單獨(dú)使用,同組的切換開關(guān)各自是獨(dú)立的。標(biāo)簽顯示在開關(guān)的右邊。圖12-9所示切換開關(guān)的定義如下::toggle{label="正交方式";key="ortho_mode";value=1;}圖12-9切換開關(guān)目前十六頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.2.2組合類控件組合類控件可以將相關(guān)的控件組合在一起,使得對(duì)話框的布局更加美觀、合理,操作更加方便。1.列(Column)列是將若干控件構(gòu)成垂直分布的一個(gè)組件。列的類型是column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個(gè)屬性。圖12-10列圖12-11加框列目前十七頁\總數(shù)一百四十七頁\編于二十二點(diǎn)圖12-10所示列的定義如下::column{:button{label="光標(biāo)拾取<";key="pick";}:edit_box{label="x=";width=12;key="x";mnemonic="x";value=0.0;}:edit_box{label="y=";width=12;key="y";mnemonic="y";value=0.0;}}圖12-10列目前十八頁\總數(shù)一百四十七頁\編于二十二點(diǎn)2.加框列(BoxedColumn)顧名思義加框列就是加了一個(gè)矩形框的列。加框列的類型是boxed_bolumn。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個(gè)屬性。如果將圖12-10所示列的定義的第一行":column{改為:boxed_column{label="左下角點(diǎn)";",即可定義一個(gè)加框列,見圖12-11。圖12-11加框列目前十九頁\總數(shù)一百四十七頁\編于二十二點(diǎn)3.互鎖列(RadioColumn)若干個(gè)互鎖按鈕組成的列即為互鎖列。互鎖列的類型是radio_column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個(gè)屬性。互鎖列的特點(diǎn)是,它保證了其中只能有一個(gè)按鈕的值為1,即處于打開狀態(tài)。圖12-12互鎖列圖12-13加框互鎖列目前二十頁\總數(shù)一百四十七頁\編于二十二點(diǎn)圖12-12所示互鎖列的定義如下::radio_column{key="size";:radio_button{label="A&0";key="a0";}:radio_button{label="A&1";key="a1";}:radio_button{label="A&2";key="a2";}:radio_button{label="A&3";key="a3";value=1;}:radio_button{label="A&4";key="a4";}:radio_button{label="A&5";key="a5";}}圖12-12互鎖列目前二十一頁\總數(shù)一百四十七頁\編于二十二點(diǎn)圖12-13加框互鎖列4.加框互鎖列(BoxedRadioColumn)加框互鎖列就是加了一個(gè)矩形框的互鎖列。加框互鎖列的類型是boxed_radio_column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個(gè)屬性。

如果將圖12-12所示互鎖列的定義的第一行":radio_column{"改為":boxed_radio_column{label="幅面規(guī)格";",即可定義一個(gè)加框互鎖列,見圖12-13。目前二十二頁\總數(shù)一百四十七頁\編于二十二點(diǎn)5.行(Row)行是將若干控件構(gòu)成水平分布的一個(gè)組件。行的類型是row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個(gè)屬性。圖12-14行圖12-14所示行的定義如下::row{:toggle{label="縱向";key="dir";}:edit_box{label="W(mm)=";mnemonic="W";key="w";value=420;}:edit_box{label="H(mm)=";mnemonic="H";key="h";value=297;}}目前二十三頁\總數(shù)一百四十七頁\編于二十二點(diǎn)6.加框行(BoxedRow)加框行就是加了一個(gè)矩形框的行。加框行的類型是boxed_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個(gè)屬性。如果將圖12-14所示行的定義的第一行":row{"改為":boxed_row{label="圖紙幅面";",即可定義一個(gè)加框行,見圖12-15。圖12-15加框行目前二十四頁\總數(shù)一百四十七頁\編于二十二點(diǎn)7.互鎖行(RadioRow)若干個(gè)互鎖按鈕組成的行即為互鎖行?;ユi行的類型是radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個(gè)屬性。互鎖行中只能有一個(gè)選鈕的值為1。圖12-16所示互鎖行的定義如下::radio_row{key="size";:radio_button{label="A&0";key="a0";}:radio_button{label="A&1";key="a1";}:radio_button{label="A&2";key="a2";}:radio_button{label="A&3";key="a3";value=1;}:radio_button{label="A&4";key="a4";}:radio_button{label="A&5";key="a5";}}圖12-16互鎖行目前二十五頁\總數(shù)一百四十七頁\編于二十二點(diǎn)8.加框互鎖行(BoxedRadioRow)加框互鎖行就是加了一個(gè)矩形框的互鎖行。加框互鎖行的類型是boxed_radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9個(gè)屬性。如果將圖12-16所示互鎖行的定義的第一行":radio_row{"改為":boxed_radio_row{label="幅面規(guī)格";",即可定義一個(gè)加框互鎖行,見圖12-17。圖12-17加框互鎖行目前二十六頁\總數(shù)一百四十七頁\編于二十二點(diǎn)9.對(duì)話框(dialog)對(duì)話框本身也可以看作是一種控件,它是對(duì)話框的主體,不能單獨(dú)使用,且至少要有一個(gè)確認(rèn)(OK)或取消(Cancel)按鈕。它的類型是dialog,有initial_focus、label、value3個(gè)屬性。標(biāo)簽是對(duì)話框的標(biāo)題。屬性value也可以作為標(biāo)題,這樣的標(biāo)題在程序運(yùn)行時(shí)可以被改變。initial_focus用于指定初始聚焦的控件。見右圖所示對(duì)話框及以下程序代碼:

sample:dialog{label="簡(jiǎn)單的對(duì)話框?qū)嵗?;:text{label="祝您成功!";}:button{key="accept";label="確認(rèn)";簡(jiǎn)單的對(duì)話框?qū)嵗?/p>

is_default=true;fixed_width=true;alignment=centered;}}目前二十七頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.2.3裝飾性和信息類控件裝飾性和信息類控件無行為動(dòng)作,也不能被選擇,主要用于顯示信息、加強(qiáng)視覺效果或協(xié)助對(duì)話框布局。1.圖像(Image)圖像是在一個(gè)矩形區(qū)域內(nèi)顯示矢量圖形、色彩填充塊等的控件。它的類型是image。有alignment、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width11個(gè)屬性。圖像的值是點(diǎn)取圖像時(shí)的位置,通過AutoLISP程序可以獲取該位置,從而根據(jù)這些位置設(shè)計(jì)相應(yīng)的動(dòng)作。必須指定圖像的width、height或二者之一和aspect_ratio屬性。圖像的內(nèi)容由AutoLISP程序確定。目前二十八頁\總數(shù)一百四十七頁\編于二十二點(diǎn)圖12-18所示圖像的定義如下::image{width=30;aspect_ratio=0.6;key="rect";color=graphics_background;}圖12-18圖像

注意:圖像的內(nèi)容由AutoLISP程序確定。目前二十九頁\總數(shù)一百四十七頁\編于二十二點(diǎn)2.文本(Text)文本控件通常用于顯示提示或警告信息。文本的類型是text。有alignment、fixed_height、fixed_width、height、is_bold、key、label、value、width9個(gè)屬性。屬性label和value都可以存放用戶要顯示的信息,且外觀相同。但是,label存放的信息是不變的,value存放的信息可以由AutoLISP程序賦以新的內(nèi)容。若label和value同時(shí)存放了某些信息時(shí),label的信息不予顯示。例12-2定義了用屬性label存放顯示信息的對(duì)話框,外觀見圖12-19?!纠?2-2】用屬性label存放顯示信息的對(duì)話框。iwarn1:dialog{label="警告信息";:text{label="選取的對(duì)象不是直線,請(qǐng)重新選擇!";}ok_cancel;}圖12-19文本目前三十頁\總數(shù)一百四十七頁\編于二十二點(diǎn)

3.部分文本(text_part)部分文本的類型是text_part,只有l(wèi)abel一個(gè)屬性。單獨(dú)的部分文本與只含label屬性的文本(Text)等效。多個(gè)部分文本可以組成單行的文本或段落,彌補(bǔ)了文本(Text)只能單行的不足,例12-3定義了顯示兩行信息的對(duì)話框,外觀見圖12-20?!纠?2-3】定義多行文本的對(duì)話框。warn2:dialog{label="警告信息";:text_part

{label="選取的對(duì)象不是直線,";}:text_part

{label="請(qǐng)重新選擇!";}

ok_cancel;}圖12-20部分文本目前三十一頁\總數(shù)一百四十七頁\編于二十二點(diǎn)4.串聯(lián)(Concatenation)

串聯(lián)的類型是Concatenation,沒有屬性,它的作用是把多個(gè)部分文本組成單行的文本。例12-4是將兩個(gè)部分文本組成單行的文本的實(shí)例,結(jié)果見圖12-21。//例12-4將兩個(gè)部分文本組成單行的文本。Warn3:dialog{label="警告信息";:concatenation

{:text_part{label="選取的對(duì)象不是直線,";}:text_part{label="請(qǐng)重新選擇!";}}ok_cancel;}圖12-21串聯(lián)后的部分文本目前三十二頁\總數(shù)一百四十七頁\編于二十二點(diǎn)5.段落(Paragraph)段落的作用是把多個(gè)部分文本組成段落,它的類型是paragraph,沒有屬性。例12-5是將三個(gè)部分文本組成一個(gè)段落的實(shí)例,結(jié)果見圖12-22。warn:dialog{label="警告信息";:paragraph{:concatenation{:text_part{label="選取的對(duì)象不是直線,";}:text_part{label="請(qǐng)重新選擇!";}}:text_part{label="用單點(diǎn)方式選擇直線!";}}ok_cancel;}圖12-22段落文本目前三十三頁\總數(shù)一百四十七頁\編于二十二點(diǎn)6.間隔(Spacer、Spacer_0、Spacer_1)間隔(Spacer)也稱空白襯墊,是一種特殊的控件,它具有不可見的大小和對(duì)齊方式,用來調(diào)整其它一些控件之間的間隔。如果不用間隔,系統(tǒng)將采用均勻的布局,因此,間隔只用在需要局部調(diào)整控件間隙的地方。間隔控件的類型是spacer,有alignment、fixed_height、fixed_width、height、width5個(gè)屬性。

Spacer_0和Spacer_1是AutoCAD定義的具體控件。Spacer_0是Spacer的width、height為0的特例,Spacer_1是Spacer的width、height為1的特例。Spacer_0、Spacer_1可直接引用。以圖12-23為例,前4行每行是具有固定寬的3個(gè)按鈕。底行最寬,它確定了所有的行寬。第一行沒有插入間隔,這3個(gè)按鈕的兩端與底行對(duì)齊,且均勻分布。第二行插入間隔Spacer_0,Spacer_0雖然沒有寬度,但它參與等分底行大于該行的間隔,或者認(rèn)為該行增加了一個(gè)寬度為0的按鈕。第三行插入間隔Spacer_1,相當(dāng)于增加了一個(gè)寬度為1的按鈕,再均勻分布。第四行插入寬度為4的間隔Spacer,相當(dāng)于增加了一個(gè)寬度為4的按鈕,再均勻分布。該對(duì)話框的定義見例12-6。目前三十四頁\總數(shù)一百四十七頁\編于二十二點(diǎn)圖12-23用spacer、spacer_0、spacer_1調(diào)整控件間的間隙Spacer_0Spacer_1Spacer寬度=4【例12-6】用spacer、spacer_0、spacer_1調(diào)整控件間的間隙spcr:dialog{label=“調(diào)整間隔實(shí)驗(yàn)”;:row{//沒有插入間隔

:button{label="A0";key="a0";fixed_width=true;}:button{label="A1";key="a1";fixed_width=true;}:button{label="A2";key="a2";fixed_width=true;}}目前三十五頁\總數(shù)一百四十七頁\編于二十二點(diǎn):row{spacer_0;//插入間隔Spacer_0:button{label="B0";key="b0";fixed_width=true;}:button{label="B1";key="b1";fixed_width=true;}:button{label="B2";key="b2";fixed_width=true;}}:row{spacer_1;//插入間隔Spacer_1:button{label="C0";key="c0";fixed_width=true;}:button{label="C1";key="c1";fixed_width=true;}:button{label="C2";key="c2";fixed_width=true;}}目前三十六頁\總數(shù)一百四十七頁\編于二十二點(diǎn):row{:spacer{//插入寬度為4的間隔Spacerwidth=4;fixed_width=true;}:button{label="D0";key="d0";fixed_width=true;}:button{label="D1";key="d1";fixed_width=true;}:button{label="D2";key="d2";fixed_width=true;}}ok_cancel_help_info;}目前三十七頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.2.4AutoCAD預(yù)定義的控件

AutoCAD不僅預(yù)定義了25種控件的類型,還定義了以下8個(gè)最常用的控件。定義對(duì)話框時(shí),可直接使用這些控件,但是在編寫AutoLISP驅(qū)動(dòng)程序時(shí),必須要準(zhǔn)確地使用其關(guān)鍵字(大小寫字母不等價(jià))。1.ok_only(確認(rèn))按鈕單個(gè)的OK按鈕,關(guān)鍵字為"accept"。用于確認(rèn)施加在對(duì)話框上的操作。2.ok_cancel(確認(rèn)和取消)按鈕

OK和Cancel兩個(gè)按鈕組成的行,OK按鈕的關(guān)鍵字同前,Cancel按鈕的關(guān)鍵字為"cancel"。Cancel按鈕用于放棄施加在對(duì)話框上的操作。3.errtile(出錯(cuò)信息)控件

Errtile屬于Text類型的控件,其標(biāo)簽為空,關(guān)鍵字為"error"。顯示該控件屬性value的內(nèi)容。屬性value的值由AutoLISP程序確定。目前三十八頁\總數(shù)一百四十七頁\編于二十二點(diǎn)【例12-7】定義圖12-24所示出錯(cuò)信息的對(duì)話框的源代碼和AutoLISP驅(qū)動(dòng)程序。//用DCL定義對(duì)話框,文件名為12-7.dcl,存放在d盤的example\dcl目錄下。error:dialog{label="出錯(cuò)信息";

errtile;

ok_only;

}圖12-24出錯(cuò)信息對(duì)話框;用AutoLISP驅(qū)動(dòng)對(duì)話框的程序,文件名為12-7.lsp。(defunc:erdlg()(if(<(setqid(load_dialog"d:example\\dcl\\12-7"))0)(exit))(if(not(new_dialog"error"id))(exit))(set_tile"error""長(zhǎng)度必須大于0!")(action_tile"accept""(done_dialog)")(start_dialog)(unload_dialogid)(princ))目前三十九頁\總數(shù)一百四十七頁\編于二十二點(diǎn)4.ok_cancel_help(確認(rèn)、取消和幫助)控件

OK、Cancel和Help三個(gè)按鈕組成的行,OK、Cancel按鈕的關(guān)鍵字同前,Help按鈕的關(guān)鍵字為"help"?!纠?2-8】定義圖12-25所示含有"OK"、"Cancel"和"Help"三個(gè)按鈕的對(duì)話框的源代碼和AutoLISP驅(qū)動(dòng)程序。//用DCL定義對(duì)話框,文件名為12-8.dcl,存放在d盤的example\dcl目錄下。hlp:dialog{label="了解直線命令的用法";

ok_cancel_help;}圖12-25含有ok_cancel_help控件的對(duì)話框目前四十頁\總數(shù)一百四十七頁\編于二十二點(diǎn);用AutoLISP驅(qū)動(dòng)對(duì)話框的程序,文件名為12-8.lsp。(defunc:hlpdlg()(setqid(load_dialog"d:\\example\\12-8.dcl"))(if(<id0)(exit))(if(not(new_dialog"hlp"id))(exit))

(action_tile"help""(help\"\"\"line\")");定義help按鈕的活動(dòng)是調(diào)用AutoLISP的help函數(shù),了解直線命令的用法。

(action_tile"accept""(done_dialog)")(action_tile"cancel""(done_dialog)")(start_dialog)(unload_dialogid)(princ))目前四十一頁\總數(shù)一百四十七頁\編于二十二點(diǎn)5.ok_cancel_help_errtile(確認(rèn)、取消、幫助和出錯(cuò))控件該控件為OK、Cancel和Help共3個(gè)按鈕組成的行,出錯(cuò)信息寫在該行的下面。這4個(gè)控件的關(guān)鍵字同前??丶rrtile需要在AutoLISP驅(qū)動(dòng)對(duì)話框程序中用set_tile函數(shù)為其屬性value賦值,例如:

(set_tile"error""無效的輸入")目前四十二頁\總數(shù)一百四十七頁\編于二十二點(diǎn)//定義ok_cancel_help_errtile對(duì)話框,文件名為error.dclerror:dialog{label="出錯(cuò)信息";

ok_cancel_help_errtile;}(defunc:erdlg();AutoLISP驅(qū)動(dòng)程序

(if(<(setqid(load_dialog"d:\\example\\dcl\\error"))0)(exit))(if(not(new_dialog"error"id))(exit))(set_tile"error""無效的輸入")(action_tile"accept""(done_dialog)")(start_dialog)(unload_dialogid)(princ))目前四十三頁\總數(shù)一百四十七頁\編于二十二點(diǎn)6.ok_cancel_help_info(確認(rèn)、取消、幫助和信息)控件該控件為OK、Cancel、Help和info四個(gè)按鈕組成的行,OK、Cancel和Help的關(guān)鍵字同前。info按鈕的關(guān)鍵字為"info",需要在AutoLISP驅(qū)動(dòng)程序定義info按鈕的活動(dòng),比如,彈出一個(gè)用text控件為主的顯示一些信息的對(duì)話框。目前四十四頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.3控件的屬性控件的外觀和功能是由該控件的屬性確定的。屬性如同程序中的變量,具有名字和值。屬性的值有整型、實(shí)型和字符串類型,有的屬性值只能是預(yù)定義的保留字。實(shí)數(shù)的小數(shù)點(diǎn)前必須有數(shù)字,例如".1"是錯(cuò)的,應(yīng)為"0.1"。字符串是由雙引號(hào)括起的文本,與AutoLISP一樣,用"\"做轉(zhuǎn)義符。預(yù)定義的保留字有true、false、left、centered、right、top和bottom,它們必須小寫。AutoLISP程序在運(yùn)行中可以改變控件的一些屬性。控件的類型不同,其屬性的數(shù)量也不同。有些屬性在所有的控件中的含義是相同的,有些屬性在不同的控件中含義也不同。AutoCAD為用戶預(yù)定義了35個(gè)屬性。目前四十五頁\總數(shù)一百四十七頁\編于二十二點(diǎn)按字母順序依次是:1.action

確定控件的活動(dòng),活動(dòng)是是用雙引號(hào)括起的AutoLISP表達(dá)式或函數(shù)。表達(dá)式中不能含有AutoCAD的命令。當(dāng)選中該控件時(shí),執(zhí)行相應(yīng)的AutoLISP表達(dá)式或函數(shù)。AutoLISP驅(qū)動(dòng)程序可以設(shè)置控件的一些屬性,且覆蓋DCL定義時(shí)的該屬性。相關(guān)的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、slider、toggle。默認(rèn)值:無2.alignment

確定控件自身的定位方式。列類型的控件可選left(左對(duì)齊)、centered(中間對(duì)齊)和right(右對(duì)齊);行類型的控件可選top(頂對(duì)齊)、centered(中間對(duì)齊)和bottom(底對(duì)齊)。相關(guān)的控件有:全部控件。默認(rèn)值:列類型控件為left,行類型控件為centered目前四十六頁\總數(shù)一百四十七頁\編于二十二點(diǎn)3.allow_accept

若該屬性的值為true,按下接受鍵(如Enter鍵),就如同單擊了默認(rèn)按鈕(is_default為true的按鈕)。相關(guān)的控件有:edit_box、image_button、list_box

默認(rèn)值:false4.aspect_ratio

圖像控件的寬與高之比,與寬、高之一確定圖像控件的大小。若該屬性的值為零,則默認(rèn)為將圖像控件調(diào)整為最合適的寬與高之比。相關(guān)的控件有:image、image_button

默認(rèn)值:無5.big_increment

確定滑動(dòng)條最大增量的整數(shù)值,取值范圍在屬性min_value和屬性max_value之間。相關(guān)的控件有:slider

默認(rèn)值:整個(gè)范圍的1/10。目前四十七頁\總數(shù)一百四十七頁\編于二十二點(diǎn)6.children_alignment

與屬性alignment的功能基本相同,區(qū)別在于它只針對(duì)子控件組群而言,確定組群內(nèi)部控件的定位方式,控件自身的alignment屬性優(yōu)先于該屬性。相關(guān)的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row

默認(rèn)值:列類型控件為left,行類型控件為centered7.children_fixed_height

功能與fixed_height相同,不過它是控件組群的屬性,僅作用于組群內(nèi)所有的控件并作為它們的默認(rèn)值,低于屬性fixed_height的優(yōu)先級(jí)。相關(guān)的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row

默認(rèn)值:false目前四十八頁\總數(shù)一百四十七頁\編于二十二點(diǎn)8.children_fixed_width

功能與fixed_width相同,不過它是控件組群的屬性,僅作用于組群內(nèi)所有的控件并作為它們的默認(rèn)值,默認(rèn)值為flase,低于屬性fixed_width的優(yōu)先級(jí)。相關(guān)的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row

默認(rèn)值:false9.color

確定圖像背景、矢量或填充塊的顏色。普通顏色與AutoCAD的標(biāo)準(zhǔn)顏色名(red、yellow等)和顏色號(hào)所定義的顏色含義相同,此外還有表12-1所示的特殊顏色。相關(guān)的控件有:image、image_button。默認(rèn)值:7(白色)目前四十九頁\總數(shù)一百四十七頁\編于二十二點(diǎn)表12-1特殊的顏色顏色值預(yù)定義含義

-2Graphics_background當(dāng)前圖形屏幕的背景色

-15Dialog_background當(dāng)前對(duì)話框背景色

-16Dialog_foreground當(dāng)前對(duì)話框前景色

-18Dialog_lineCurrent當(dāng)前對(duì)話框線條顏色10.edit_limit

確定編輯框可容納的最多字符數(shù),最大值為256。相關(guān)的控件有:edit_box。默認(rèn)值:132目前五十頁\總數(shù)一百四十七頁\編于二十二點(diǎn)11.edit_width

確定編輯框的寬度,以字符為單位。若該屬性的值默認(rèn)為0,編輯框的寬度將是不固定的,布局時(shí)可自動(dòng)擴(kuò)充到整個(gè)可用空間。相關(guān)的控件有:edit_box、popup_list

默認(rèn)值:擴(kuò)充到整個(gè)可用空間。12.fixed_height

當(dāng)該屬性的值為true時(shí),屬性height有效,否則做相關(guān)調(diào)整。相關(guān)的控件有:全部控件。默認(rèn)值:flase13.fixed_width

當(dāng)該屬性的值為true時(shí),屬性width有效,否則做相關(guān)調(diào)整。相關(guān)的控件有:全部控件。默認(rèn)值:flasefixed_width=true;width=10;fixed_width=false;width=10;目前五十一頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.fixed_width_font

當(dāng)該屬性的值為true時(shí),對(duì)于列表框或下拉列表框內(nèi)的字符,在行距、列距不變的情況下減小字符之間的間隔(字符盡可能地大)。相關(guān)的控件有:list_box、popup_list。默認(rèn)值:flase15.height

確定控件的最小高度,數(shù)值類型是整數(shù)或?qū)崝?shù)型。單位為屏幕字符的最大高度。如果屬性fixed_height的值為ture,height是控件的實(shí)際高度,否則,在自動(dòng)布局時(shí),控件的實(shí)際高度會(huì)超出該值。通常,不需指定該值,系統(tǒng)能自動(dòng)采用合適的數(shù)值(圖像及圖像按鈕除外)。相關(guān)的控件有:全部控件。默認(rèn)值:無16.initial_focus

確定對(duì)話框內(nèi)初始被聚焦的控件。相關(guān)的控件有:dialog。默認(rèn)值:無Flaseture目前五十二頁\總數(shù)一百四十七頁\編于二十二點(diǎn)17.is_bold

若該屬性為true,該控件的字符用黑體顯示。相關(guān)的控件有:text。默認(rèn)值:false18.is_cancel

若該屬性為true,所選中的按鈕與按取消鍵(如Esc)的作用相同。對(duì)話框中只能有一個(gè)按鈕的is_cancel為true,且點(diǎn)取該按鈕后,取消施加在對(duì)話框上的操作并終止對(duì)話框。相關(guān)的控件有:button。默認(rèn)值:false19.is_default

若該屬性為true,單擊該按鈕與按接收受鍵(如Enter)的作用相同。對(duì)話框中只能有一個(gè)按鈕將該屬性設(shè)置為true。相關(guān)的控件有:button。默認(rèn)值:false目前五十三頁\總數(shù)一百四十七頁\編于二十二點(diǎn)20.is_enabled

若該屬性為true,控件有效,否則,控件失效(變灰)。相關(guān)的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、toggle。默認(rèn)值:true21.is_tab_stop

確定控件是否可以用"Tab"選擇聚焦,若該屬性為false時(shí),按Tab鍵時(shí),將跳過該控件到下一個(gè)控件。相關(guān)的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、toggle。默認(rèn)值:trueflaseture目前五十四頁\總數(shù)一百四十七頁\編于二十二點(diǎn)22.key

確定控件的關(guān)鍵字,關(guān)鍵字是控件的標(biāo)識(shí),在一個(gè)對(duì)話框中的關(guān)鍵字必須是唯一的。關(guān)鍵字的值為字符串,且大小寫不等價(jià)。AutoLISP程序根據(jù)控件的關(guān)鍵字施加相應(yīng)控件的操作。相關(guān)的控件有:Button、edit_box、image、image_button、list_box、popup_list、radio_button、slider、text、toggle。默認(rèn)值:無23.Label

確定控件的標(biāo)簽,label的值是一個(gè)由雙引號(hào)括起來的字符串。它的顯示位置取決于控件的類型。例如,對(duì)話框的標(biāo)簽是顯示在頂部的標(biāo)題,按鈕的標(biāo)簽顯示在按鈕上,編輯框的標(biāo)簽顯示在編輯框的左邊,切換開關(guān)、互鎖按鈕的標(biāo)簽在顯示開關(guān)按鈕的右邊,行、列的標(biāo)簽顯示在行、列的左上方。相關(guān)的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、button、dialog、edit_box、list_box、popup_list、radio_button、slider、text、text_part、toggle。默認(rèn)值:無目前五十五頁\總數(shù)一百四十七頁\編于二十二點(diǎn)24.layout

確定slider(滑動(dòng)條)的方位是horizontal(水平)還是vertical(垂直),默認(rèn)值為horizontal。相關(guān)的控件有:slider。默認(rèn)值:horizontal25.list

確定列表框或下拉列表框內(nèi)的初始內(nèi)容(字符串),行之間用"\n"分隔,行內(nèi)用制表符"\t"分隔。相關(guān)的控件有:list_box、popup_list。默認(rèn)值:無26.max_value

確定滑動(dòng)條返回的最大值,是-32768~32767之間的整數(shù)。相關(guān)的控件有:slider。默認(rèn)值:10000目前五十六頁\總數(shù)一百四十七頁\編于二十二點(diǎn)27.min_value

確定滑動(dòng)條返回的最小值,是-32768~32767之間的整數(shù)。相關(guān)的控件有:slider。默認(rèn)值:028.mnemonic

定義控件的熱鍵,即助記符。助記符是控件標(biāo)簽中帶下劃線的字符。也可以在屬性label中用"&"定義助記符。若助記符是為控件組群設(shè)置的,則焦點(diǎn)自動(dòng)落在第一個(gè)is_tab_stop屬性為true的控件上。相關(guān)的控件有:button、edit_box、image、list_box、popup_list、radio_button、slider、toggle。默認(rèn)值:無29.multiple_select

若該屬性的值為true,允許在列表中選擇多個(gè)選項(xiàng)。相關(guān)的控件有:list_box。默認(rèn)值:false目前五十七頁\總數(shù)一百四十七頁\編于二十二點(diǎn)30.password_char

確定用于屏蔽用戶輸入的字符,即用該字符代替實(shí)際輸入的字符顯示在編輯框內(nèi),達(dá)到為輸入內(nèi)容保密的目的。相關(guān)的控件有:edit_box

默認(rèn)值:無31.small_increment

確定滑動(dòng)條最小增量的整數(shù)值,取值范圍在min_value和max_value之間。相關(guān)的控件有:slider

默認(rèn)值:整個(gè)范圍的1/100。32.tabs

確定列表框或下拉列表框內(nèi)的制表符"\t"停止的位置(字符個(gè)數(shù))。相關(guān)的控件有:list_box、popup_list

默認(rèn)值:無目前五十八頁\總數(shù)一百四十七頁\編于二十二點(diǎn)33.tab_truncate

若該屬性的值為true,超出tabs屬性指定的字符被截掉(從第tabs個(gè)字符起被截掉)。相關(guān)的控件有:list_box、popup_list

默認(rèn)值:false34.value

控件初始狀態(tài)時(shí)的值。值的含義由控件類型所決定。例如,對(duì)話框的value可以作為標(biāo)題,編輯框的value作為它的初始值,互鎖按鈕或切換開關(guān)的value為1則表示處于打開的狀態(tài),列表或下拉列表的value確定了初始被選中的狀態(tài)。該屬性的值可通過AutoLISP程序被訪問、設(shè)置或修改。相關(guān)的控件有:dialog、edit_box、image、list_box、popup_list、radio_button、slider、text、toggle。默認(rèn)值:無目前五十九頁\總數(shù)一百四十七頁\編于二十二點(diǎn)35.width

確定控件的最小寬度,數(shù)值類型是整數(shù)或?qū)崝?shù)型。寬度單位為大小寫字符的平均寬度。如果屬性fixed_width的值為ture,width是控件的實(shí)際寬度,否則,在自動(dòng)布局時(shí),控件的實(shí)際寬度會(huì)超出該值。通常,不需特別指定該值,系統(tǒng)能自動(dòng)采用合適的數(shù)值(圖像及圖像按鈕除外)。相關(guān)的控件有:全部控件。默認(rèn)值:無目前六十頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.4對(duì)話框設(shè)計(jì)的原則與規(guī)范設(shè)計(jì)一個(gè)對(duì)話框除了考慮它的功能外,還應(yīng)該考慮它的外觀和是否便于操作,需要遵循一定的設(shè)計(jì)準(zhǔn)則。12.4.1一般原則1.美觀對(duì)話框的外觀是非常重要的。雜亂無章的對(duì)話框會(huì)使操作人員難以操作。因此,必須從用戶的觀點(diǎn)出發(fā),設(shè)計(jì)既美觀又實(shí)用的對(duì)話框。2.便于操作用戶關(guān)心的是控件的位置和使用是否便于操作。經(jīng)常用到的控件,應(yīng)盡可能安排在較為突出的位置。相關(guān)數(shù)據(jù)的控件,例如點(diǎn)的X、Y、Z坐標(biāo),應(yīng)盡量位于相鄰的位置。3.語言文字盡管對(duì)話框可采用圖形界面,但大部分的信息還是需要文字描述的,如對(duì)話框的標(biāo)題,按鈕的標(biāo)簽等。因此文字說明既要準(zhǔn)確,又要便于理解。目前六十一頁\總數(shù)一百四十七頁\編于二十二點(diǎn)4.控件設(shè)計(jì)一致性對(duì)話框的樣式、風(fēng)格不僅在具體的應(yīng)用程序內(nèi)部保持一致,而且應(yīng)該與相關(guān)的應(yīng)用程序保持一致,應(yīng)盡量與AutoCAD系統(tǒng)的對(duì)話框風(fēng)格一致,以便操作人員容易掌握。圖12-26插入圖塊對(duì)話框5.便于操作控制對(duì)話框相對(duì)于命令行的優(yōu)點(diǎn)是操作順序不受限制,例如圖12-26所示插入圖塊的對(duì)話框,圖塊的名字、插入基點(diǎn)、比例、旋轉(zhuǎn)角度的輸入順序是隨意的。但有些數(shù)據(jù)存在著一定的制約關(guān)系,例如圖塊的插入基點(diǎn)、比例、旋轉(zhuǎn)角既可以用鼠標(biāo)在屏幕上確定,也可以在相應(yīng)的編輯框輸入數(shù)據(jù),但不需要同時(shí)采用這兩種方式。利用切換開關(guān)的狀態(tài),即可很好地解決這個(gè)問題。若打開切換開關(guān),相應(yīng)的編輯框被禁用(變灰),就只能采用通過鼠標(biāo)在屏幕上確定的方法。目前六十二頁\總數(shù)一百四十七頁\編于二十二點(diǎn)

若嵌套式地打開多個(gè)對(duì)話框,應(yīng)采用層疊方式,保留已打開的對(duì)話框,且最后打開的對(duì)話框位于最上層。這樣便于了解這些對(duì)話框之間的關(guān)聯(lián)狀況,也表明每個(gè)對(duì)話框來自何處,歸于何處。6.實(shí)時(shí)反饋必須確保操作人員實(shí)時(shí)看到施加到對(duì)話框上的每一步操作,例如數(shù)據(jù)更新、顏色改變。當(dāng)某一選擇排斥另外幾個(gè)選擇時(shí),被排斥的控件應(yīng)立即變灰并禁止使用。7.寬容性對(duì)話框應(yīng)允許操作人員犯錯(cuò)誤,例如輸入了類型錯(cuò)誤或超出范圍的數(shù)據(jù),不要因錯(cuò)誤的輸入導(dǎo)致系統(tǒng)退出或崩潰,例如,通過errtile控件顯示出錯(cuò)信息,通過alert函數(shù)用報(bào)警框報(bào)告錯(cuò)誤的性質(zhì),向操作人員指出正確的操作。目前六十三頁\總數(shù)一百四十七頁\編于二十二點(diǎn)8.提供幫助

"幫助"對(duì)操作人員至少在心理上是一個(gè)強(qiáng)大的支持,同時(shí)在線幫助對(duì)操作人員的確起著重要的指導(dǎo)作用。因此,應(yīng)用程序的主對(duì)話框應(yīng)設(shè)置Help按鈕。在多數(shù)情形下,Help按鈕可以直接調(diào)用acad_help.dlg來顯示標(biāo)準(zhǔn)的AutoCAD的Help對(duì)話框。9.測(cè)試在構(gòu)造對(duì)話框時(shí),每增加一個(gè)功能應(yīng)該進(jìn)行測(cè)試,這樣可確保對(duì)話框預(yù)期的布局和語法上的正確性。而且較小的改變即使出現(xiàn)錯(cuò)誤也容易跟蹤和改正。目前六十四頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.4.2通用規(guī)范1.布局將對(duì)話框內(nèi)的控件按邏輯關(guān)系組成加框行或加框列,相關(guān)的編輯框或列表框應(yīng)水平或垂直地對(duì)齊,這樣便于操作人員按照從左至右或從上到下的方向進(jìn)行操作,也便于用Tab鍵在控件之間切換。同樣,行或列組件也應(yīng)水平或垂直方向?qū)R,在組群之間不要保留太大的間隔,必要時(shí)應(yīng)優(yōu)先考慮向右方擴(kuò)展。2.對(duì)話框的大小和位置對(duì)話框的大小應(yīng)以能簡(jiǎn)潔明了地顯示必要的信息為宜。如果對(duì)話框尺寸可能超出作圖區(qū)域時(shí),應(yīng)考慮是否將單個(gè)的對(duì)話框分解為嵌套的多個(gè)對(duì)話框。對(duì)話框的位置應(yīng)該在作圖區(qū)域的中心,這也是對(duì)話框的默認(rèn)位置。3.控件的禁止使用根據(jù)特定的條件,如果不再需要某些控件,應(yīng)立即將這些控件設(shè)置為失效的狀態(tài),這樣可以避免無效的輸入。對(duì)于這些被禁用的控件,不能因?yàn)楝F(xiàn)在被禁用而改變其原有的數(shù)值。目前六十五頁\總數(shù)一百四十七頁\編于二十二點(diǎn)4.對(duì)話框嵌套對(duì)于嵌套的對(duì)話框,應(yīng)做到子對(duì)話框小于父對(duì)話框。嵌套深度一般不要超過三層,除非第四層是報(bào)警框。父對(duì)話框按鈕標(biāo)簽?zāi)┪驳淖址麘?yīng)為"…",表示啟動(dòng)子對(duì)話框。5.隱藏對(duì)話框隱藏對(duì)話框時(shí),對(duì)話框按鈕標(biāo)簽?zāi)┪驳淖址麘?yīng)為"<",表示隱藏對(duì)話框進(jìn)行交互操作。6.默認(rèn)值盡可能為控件提供默認(rèn)值,默認(rèn)值應(yīng)是最常用到的或最合理的。也可以將該控件在上一次運(yùn)行時(shí)的值作為控件的默認(rèn)值。目前六十六頁\總數(shù)一百四十七頁\編于二十二點(diǎn)7.鍵盤輸入應(yīng)該將控件設(shè)置為可用Tab鍵在控件之間切換聚焦的狀態(tài)。如果操作平臺(tái)支持助記符,就應(yīng)盡可能為每一個(gè)控件定義供助記符。8.顏色推薦使用AutoCAD的標(biāo)準(zhǔn)顏色。9.標(biāo)準(zhǔn)化盡可能使用AutoCAD預(yù)定義的控件類型和"OK"、"Cancel"等標(biāo)準(zhǔn)控件來構(gòu)造對(duì)話框。目前六十七頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.4.3預(yù)定義控件的使用規(guī)范1.按鈕(Button)

按鈕的標(biāo)簽應(yīng)明確表達(dá)其動(dòng)作效果。與按鈕關(guān)聯(lián)的動(dòng)作應(yīng)立即產(chǎn)生且為可視的。如標(biāo)簽?zāi)┪矠?…"的按鈕表示將啟動(dòng)子對(duì)話框,標(biāo)簽?zāi)┪矠?<"的按鈕表示將隱藏對(duì)話框。2.編輯框(Editbox)

編輯框的標(biāo)簽應(yīng)以":"結(jié)束。編輯框的寬度應(yīng)與輸入數(shù)據(jù)的平均長(zhǎng)度相當(dāng)。如果難以確定編輯框的寬度時(shí),可設(shè)置用于輸入數(shù)值的編輯框的寬度為10,用于輸入字符的編輯框的寬度為20。如果限制了輸入字符的數(shù)量,應(yīng)該在編輯框的鄰近位置用文本(text)加以說明。3.列表(Listbox)(1)列表的標(biāo)簽應(yīng)明確的說明列表的內(nèi)容。(2)列表框的寬度應(yīng)不小于該表其中最長(zhǎng)的表項(xiàng),因?yàn)榱斜砜虿幌缶庉嬁蚰菢?,字符可以水平方向滾動(dòng)。(3)表項(xiàng)的順序應(yīng)按字母順序排列。(4)當(dāng)表項(xiàng)的長(zhǎng)度固定且項(xiàng)數(shù)很少時(shí),可考慮用互鎖列來代替。目前六十八頁\總數(shù)一百四十七頁\編于二十二點(diǎn)4.下拉列表(1)下拉列表的標(biāo)簽應(yīng)以":"結(jié)尾。為了便于布局,可以省去左邊的標(biāo)簽而改用文本控件標(biāo)注在右邊,不過此時(shí)就不能用助記符聚焦該下拉列表。(2)下拉列表不宜過長(zhǎng),不宜超過16項(xiàng)。5.圖像按鈕和圖像控件(1)相同的圖示內(nèi)容不管出現(xiàn)在圖像按鈕還是圖像中,它的含義必須一致。(2)作為選擇用途的圖像按鈕,應(yīng)該用簡(jiǎn)短的文字補(bǔ)充說明。6.互鎖按鈕及互鎖選行或互鎖選列互鎖列美觀且易使用(鼠標(biāo)上下移動(dòng)距離小),故推薦優(yōu)先使用;互鎖行適用于按鈕數(shù)量較少(2~4)的場(chǎng)合。7.滑動(dòng)條(slider)

應(yīng)根據(jù)滑動(dòng)條的長(zhǎng)度及取值范圍來設(shè)置滑動(dòng)條的增量??梢栽鲈O(shè)text控件顯示滑動(dòng)條的當(dāng)前值。最好將滑動(dòng)條與編輯框互聯(lián),既可以使之互動(dòng),又可以在編輯框看到滑動(dòng)條的當(dāng)前值。目前六十九頁\總數(shù)一百四十七頁\編于二十二點(diǎn)8.組群框組群框是指加框的列或行。對(duì)于彼此相關(guān)的控件,應(yīng)考慮組成一個(gè)組群框。標(biāo)簽應(yīng)明確指出該組群的特征。不要濫用組群框,例如加框列的外層還有組群框或者為單獨(dú)的按鈕增加組群框。9.文本文本可以作為控件標(biāo)簽和值的補(bǔ)充說明,也可用來顯示狀態(tài)、警告或錯(cuò)誤信息;但應(yīng)將其放置到合理的位置。10.切換開關(guān)盡管切換開關(guān)不象互鎖按鈕那樣是互相排斥的,但是當(dāng)它們同屬于某一主題時(shí),最好用組群框?qū)⑵浣M合,并用標(biāo)簽來說明主題。當(dāng)切換開關(guān)用來"激活"或"禁用"其它控件時(shí),應(yīng)將其放在醒目的位置,如放在相應(yīng)控件的右邊或組群框的左上角。目前七十頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.5對(duì)話框控制語言對(duì)話框控制語言(DCL)是定義對(duì)話框的語言。12.5.1對(duì)話框文件對(duì)話框文件是用DCL語言定義對(duì)話框的文件,是ASCII碼的文本文件。文件的擴(kuò)展名為".dcl",因此也被稱做DCL文件。1.base.dcl與acad.dcl文件這是兩個(gè)非常重要的對(duì)話框文件,它們?cè)贏utoCAD的support子目錄下。(1)BASE.DCL

為用戶預(yù)定義了Button、Editbox等基本控件、Row、Column等組件和ok_cancel、ok_cancel_help_info等標(biāo)準(zhǔn)控件。該文件是所有其它DCL文件的基礎(chǔ),被所有其它的DCL文件自動(dòng)引用,因此不要修改該文件。(2)ACAD.DCLACAD.DCL文件定義了AutoCAD系統(tǒng)的大部分標(biāo)準(zhǔn)對(duì)話框。是編寫DCL文件的很好的學(xué)習(xí)參考資料。用戶不應(yīng)直接引用ACAD.DCL文件,如果需要?jiǎng)?chuàng)建類似的對(duì)話框,可將ACAD.DCL中的相應(yīng)內(nèi)容復(fù)制到自己定義的DCL文件中。該文件與AutoCAD系統(tǒng)密切相關(guān),因此不要修改該文件。目前七十一頁\總數(shù)一百四十七頁\編于二十二點(diǎn)2.用戶定義的對(duì)話框文件用戶定義的對(duì)話框文件可以含以下三部分內(nèi)容:(1)包含其它DCL文件。格式為:@include"路徑\\DCL文件名",必須指定DCL文件的全名和擴(kuò)展名,例如:@include"test.dcl",如果未指明路徑,系統(tǒng)在當(dāng)前目錄中搜索。圖12-27所示是DCL層次性引用結(jié)構(gòu)。其中user1.dcl和user2.dcl彼此獨(dú)立,而user3.dcl引用了定義在user1.dcl文件中的控件。圖12-27DCL文件層次性引用結(jié)構(gòu)(2)典型控件及行、列組合控件的定義。(3)對(duì)話框定義。一個(gè)對(duì)話框文件可定義多個(gè)對(duì)話框。目前七十二頁\總數(shù)一百四十七頁\編于二十二點(diǎn)12.5.2DCL文件的結(jié)構(gòu)圖12-28所示為繪制圓的對(duì)話框,它有兩個(gè)行(row);第一行是由圖像控件和加框列組件組成的,第二行為ok_cancel組合控件;加框列是由三個(gè)編輯框組成的。該對(duì)話框的結(jié)構(gòu)如圖12-29所示。圖12-28繪制圓對(duì)話框圖12-29繪制圓對(duì)話框的結(jié)構(gòu)圖

從圖12-29可以看到,對(duì)話框是一個(gè)樹型結(jié)構(gòu),對(duì)話框是這棵樹的樹根,行、列組件是樹枝,基本控件和組合控件是樹葉。目前七十三頁\總數(shù)一百四十七頁\編于二十二點(diǎn)

例12-9是定義圖12-28所示為繪制圓的對(duì)話框的DCL文件,文件名為"12-9.dcl"存放在d盤的example\dcl\目錄下?!纠?2-9】定義圖12-28所示為繪制圓的對(duì)話框。yuan:dialog{//定義名字為yuan的對(duì)話框

label="繪制圓";//顯示在對(duì)話框頂部的標(biāo)簽

:row{//引用行

:image//引用圖像控件

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論