第12章 對話框設(shè)計清華CAD二次開發(fā) LISP(章節(jié)課程)_第1頁
第12章 對話框設(shè)計清華CAD二次開發(fā) LISP(章節(jié)課程)_第2頁
第12章 對話框設(shè)計清華CAD二次開發(fā) LISP(章節(jié)課程)_第3頁
第12章 對話框設(shè)計清華CAD二次開發(fā) LISP(章節(jié)課程)_第4頁
第12章 對話框設(shè)計清華CAD二次開發(fā) LISP(章節(jié)課程)_第5頁
已閱讀5頁,還剩143頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第 12 章 對話框設(shè)計 1凌云書屋12.1概述1. 對話框的特點 對話框形象、直觀,可以隨意輸入、隨時修改,鼠標、鍵盤并用,是一種深受用戶歡迎的界面。 對話框用DCL語言(Dialog Control Language)定義,得到DCL類型的文件,用AutoLISP或C程序驅(qū)動。 AutoCAD提供了兩個重要的DCL文件: ACAD.DCL存放AutoCAD系統(tǒng)定義的對話框, BASE.DCL為用戶提供了一些常用的對話框標準控件。2. 對話框的組成 對話框由若干控件組成,見圖12-1??丶梢允前粹o、切換開關(guān)、編輯框、列表或圖像等。 2凌云書屋圖12-1對話框的組成 圖像按鈕彈出列表滑動條編

2、輯框按鈕圖像互鎖按鈕切換開關(guān)文本3凌云書屋3. 實例【例12-1】用DCL定義一個簡單的對話框。 進入VLISP環(huán)境,將下列源代碼輸入到文本編輯窗口,選取下拉菜單ToolsInterface ToolPreview DCL in Editor,即可看到圖12-2所示該對話框的外觀。sample:dialog label = 簡單的對話框?qū)嵗?:text label = 祝您成功!;:button key = accept; label = 確認; is_default = true; fixed_width = true; alignment=centered; 圖12-2 簡單的對話框?qū)嵗?

3、凌云書屋12.2 對話框控件 控件是構(gòu)造對話框的元件。AutoCAD為用戶預(yù)定義了23種控件和8個常用的固定控件。每一種控件屬于一種類型。每一個控件有多個屬性。每個屬性都有一個名字和值。多數(shù)的屬性都有它的默認值。一個控件具有哪些屬性是由它的類型所決定的??丶倪@些屬性確定了它的外觀形式和動作行為。 例如上例中的確認按鈕,它的類型是button。當它的屬性label = 確認、key = accept、is_default = true、fixed_width = true、alignment = centered,其余屬性為默認值時,就確定了圖12-2所示的外觀。按照控件的特點可以將控件分為以

4、下幾類。5凌云書屋12.2.1可以定義動作行為的控件 這類控件具有動作行為(action)的屬性,動作行為是用AutoLISP的函數(shù)或表達式表示定義的,用鼠標單擊這樣的控件時,就會執(zhí)行相應(yīng)的函數(shù)或表達式。1. 按鈕(Button) 按鈕適用于立即產(chǎn)生可視的操作,如退出對話框、彈出子對話框及其它特定操作。每個對話框至少包含一個OK按鈕(或功能相當?shù)目丶?按鈕的類型是button。有action、alignment、fixed_height、fixed_width、height、is_cancel、is_default、is_enabled、is_tab_stop、key、label、mnem

5、onic、width 共13個屬性。它的標簽(label)顯示在按鈕上。 若要創(chuàng)建與OK等價的控件,其關(guān)鍵字必須為accept,并將其屬性is_default設(shè)定為true(真)。參照例121中確認按鈕的定義。6凌云書屋2. 編輯框(Edit Box) 編輯框用于輸入字符串。它的類型是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_

6、char 16個屬性。其標簽顯示在該框的左邊,它的默認寬度為12個字符,當輸入的字符多于12時,文本自動向左滾動,框內(nèi)的字符串即為編輯框的值(value)。圖12-3所示的編輯框定義如下::edit_box key=test_text; label=長度: ; value=100.0; width=12; 圖12-3 編輯框 7凌云書屋3. 圖像按鈕(Image Button) 圖像按鈕將圖像顯示在按鈕上。圖像由AutoLISP程序確定。它的類型是image_button。有action、alignment、allow_accept、aspect_ratio、color、fixed_heigh

7、t、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width 13個屬性。 圖像按鈕很有用的一個特性是,通過AutoLISP程序可以獲取被單擊時的位置,從而根據(jù)不同的位置設(shè)計相應(yīng)的動作。 圖12-4 所示圖像按鈕定義的如下::image_button key=test_image_button; width=10; aspect_ratio=1.5; 圖12-4 圖像按鈕8凌云書屋4. 列表框(List Bbox) 列表框的類型是list_box。有action、alignment、allow_accept、fixed_heigh

8、t、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、multiple_select、tabs、value、width 16個屬性。列表內(nèi)含有若干行可供選擇的文本,當表的內(nèi)容超出表的范圍時,將自動在表的右側(cè)出現(xiàn)一個滑動條。 列表的標簽顯示在列表框的上方作為文字說明。列表的值是被選中的文本行的序號,序號從0開始。屬性multiple_select為true時,允許同時選取框內(nèi)的多行文本。圖12-5 列表框 9凌云書屋圖12-5 所示對話框的列表定義如下::list_box label=齒輪種類; list= 圓柱直

9、齒n圓柱斜齒n圓錐直齒n螺旋傘齒n蝸輪n蝸桿n; value=2; key=gear_list; height=6; 圖12-5 列表框 10凌云書屋5. 下拉列表(Popup List) 下拉列表的類型是popup_list。它具有action、alignment、edit_width、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、tabs、value、width 15個屬性。 下拉列表具有編輯框和列表框的兩個特點,初始狀態(tài)象一個編輯框,標簽顯示在框的左邊,框內(nèi)只有一行字符和一個向

10、下的箭頭,見圖12-6(a)。單擊框內(nèi)箭頭,將彈出一個列表,見圖12-6(b),選取表內(nèi)文本之后,列表自動關(guān)閉,在編輯框內(nèi)顯示選中的內(nèi)容。下拉列表的值是被選中的文本行的序號。 11凌云書屋圖12-6 所示下拉列表的定義如下::popup_listlabel=齒輪種類:;list=圓柱直齒n圓柱斜齒n圓錐直齒n螺旋傘齒n蝸輪n蝸桿n;key= gear_list;(a) (b)圖12-6 下拉列表 12凌云書屋6. 互鎖按鈕(Radio Button) 互鎖按鈕的類型是radio_button。有action、alignment、fixed_height、fixed_width、height、i

11、s_enabled、is_tab_stop、key、label、mnemonic、value、width 12個屬性。 互鎖按鈕不宜能單獨使用,必須由多個這樣的按鈕以行或列的形式組成一組,同組的按鈕之間是互鎖的,只能從中選取一個?;ユi按鈕的標簽顯示在按鈕的右邊。圖12-7所示互鎖按鈕的定義如下::radio_button key= unit_mm; label= 毫米;圖12-7 互鎖按鈕13凌云書屋7. 滑動條(Slider) 滑動條是一種直觀控制數(shù)值的控件。點取滑動條上的箭頭或拖動滑塊,可以得到字符串方式表示的整數(shù)。 滑動條的類型是slider。有action、alignment、big_

12、increment、fixed_height、fixed_width、height、key、label、layout、max_value、min_value、mnemonic、small_increment、value、width 15個屬性。 屬性max_value、min_value確定數(shù)值的最大和最小值,small_increment、big_increment確定點擊滑動條箭頭時的最小、最大增量。 圖12-8 所示滑動條的定義如下::slider key= test_slider; min_value=0; max_value=100; 圖12-8 滑動條14凌云書屋8. 切換開關(guān)(T

13、oggle) 切換開關(guān)又稱作復(fù)選開關(guān)、乒乓開關(guān),它的類型是toggle。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、value、width 11個屬性。 切換開關(guān)與互鎖按鈕不同的是它可以單獨使用,同組的切換開關(guān)各自是獨立的。 標簽顯示在開關(guān)的右邊。圖12-9所示切換開關(guān)的定義如下::toggle label= 正交方式; key= ortho_mode; value=1;圖12-9 切換開關(guān)15凌云書屋12.2.2 組合類控件 組合類控件可以將相關(guān)的控件組合在一起,使得對話

14、框的布局更加美觀、合理,操作更加方便。1. 列(Column) 列是將若干控件構(gòu)成垂直分布的一個組件。 列的類型是column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性。 圖12-10 列 圖12-11 加框列 16凌云書屋圖12-10 所示列的定義如下::column :buttonlabel= 光標拾取 ; key= pick; :edit_boxlabel= x=; width=12; k

15、ey= x; mnemonic= x; value=0.0; :edit_boxlabel= y=; width=12; key= y; mnemonic= y; value=0.0; 圖12-10 列 17凌云書屋2. 加框列(Boxed Column) 顧名思義加框列就是加了一個矩形框的列。 加框列的類型是boxed_bolumn。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性。 如果將圖12-1

16、0 所示列的定義的第一行:column改為:boxed_columnlabel= 左下角點;,即可定義一個加框列,見圖12-11。圖12-11 加框列 18凌云書屋3. 互鎖列(Radio Column) 若干個互鎖按鈕組成的列即為互鎖列。 互鎖列的類型是radio_column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性?;ユi列的特點是,它保證了其中只能有一個按鈕的值為1,即處于打開狀態(tài)。圖12

17、-12 互鎖列 圖12-13 加框互鎖列 19凌云書屋圖12-12 所示互鎖列的定義如下::radio_column key= size; :radio_buttonlabel= A&0; key= a0; :radio_buttonlabel= A&1 ; key= a1; :radio_buttonlabel= A&2 ; key= a2; :radio_buttonlabel= A&3; key= a3; value=1;:radio_buttonlabel= A&4; key= a4;:radio_buttonlabel= A&5; key= a5;圖12-12 互鎖列20凌云書屋圖1

18、2-13 加框互鎖列 4. 加框互鎖列(Boxed Radio Column) 加框互鎖列就是加了一個矩形框的互鎖列。 加框互鎖列的類型是boxed_radio_column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性。 如果將圖12-12 所示互鎖列的定義的第一行:radio_column改為:boxed_radio_columnlabel=幅面規(guī)格;,即可定義一個加框互鎖列,見圖12-13。2

19、1凌云書屋5. 行(Row) 行是將若干控件構(gòu)成水平分布的一個組件。行的類型是row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性。 圖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)=;

20、mnemonic=H; key=h; value=297; 22凌云書屋6. 加框行(Boxed Row) 加框行就是加了一個矩形框的行。 加框行的類型是boxed_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性。 如果將圖12-14 所示行的定義的第一行:row改為:boxed_rowlabel=圖紙幅面;,即可定義一個加框行,見圖12-15。圖12-15 加框行23凌云書屋7. 互鎖行(R

21、adio Row) 若干個互鎖按鈕組成的行即為互鎖行?;ユi行的類型是radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性?;ユi行中只能有一個選鈕的值為1。圖12-16 所示互鎖行的定義如下::radio_row key=size; :radio_buttonlabel=A&0; key=a0; :radio_buttonlabel=A&1; key=a1; :radio_buttonla

22、bel=A&2; key=a2; :radio_buttonlabel=A&3; key=a3; value=1; :radio_buttonlabel=A&4; key=a4; :radio_buttonlabel=A&5; key=a5; 圖12-16 互鎖行24凌云書屋8. 加框互鎖行(Boxed Radio Row) 加框互鎖行就是加了一個矩形框的互鎖行。加框互鎖行的類型是boxed_radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_

23、width、height、label、width 9個屬性。 如果將圖12-16 所示互鎖行的定義的第一行:radio_row改為:boxed_radio_rowlabel=幅面規(guī)格;,即可定義一個加框互鎖行,見圖12-17。 圖12-17 加框互鎖行25凌云書屋9. 對話框(dialog) 對話框本身也可以看作是一種控件,它是對話框的主體,不能單獨使用,且至少要有一個確認(OK)或取消(Cancel)按鈕。它的類型是dialog,有initial_focus、label、value 3個屬性。標簽是對話框的標題。屬性value也可以作為標題,這樣的標題在程序運行時可以被改變。initial_

24、focus用于指定初始聚焦的控件。見右圖所示對話框及以下程序代碼: sample:dialog label = 簡單的對話框?qū)嵗? :text label = 祝您成功!; :buttonkey = accept; label = 確認; 簡單的對話框?qū)嵗?is_default = true; fixed_width = true; alignment=centered; 26凌云書屋12.2.3 裝飾性和信息類控件 裝飾性和信息類控件無行為動作,也不能被選擇,主要用于顯示信息、加強視覺效果或協(xié)助對話框布局。1. 圖像(Image) 圖像是在一個矩形區(qū)域內(nèi)顯示矢量圖形、色彩填充塊等的控件。它的

25、類型是image。有alignment、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width 11個屬性。圖像的值是點取圖像時的位置,通過AutoLISP程序可以獲取該位置,從而根據(jù)這些位置設(shè)計相應(yīng)的動作。 必須指定圖像的width、height或二者之一和aspect_ratio屬性。圖像的內(nèi)容由AutoLISP程序確定。27凌云書屋圖12-18所示圖像的定義如下::image width=30; aspect_ratio=0.6; key= rect; col

26、or=graphics_background; 圖12-18 圖像 注意:圖像的內(nèi)容由AutoLISP程序確定。28凌云書屋2. 文本(Text) 文本控件通常用于顯示提示或警告信息。 文本的類型是text。有alignment、fixed_height、fixed_width、height、is_bold、key、label、value、width 9個屬性。 屬性label和value都可以存放用戶要顯示的信息,且外觀相同。但是,label存放的信息是不變的,value存放的信息可以由AutoLISP程序賦以新的內(nèi)容。若label和value同時存放了某些信息時,label的信息不予顯示。

27、例12-2 定義了用屬性label存放顯示信息的對話框,外觀見圖12-19?!纠?2-2】 用屬性label存放顯示信息的對話框。iwarn1:dialoglabel=警告信息;:textlabel=選取的對象不是直線,請重新選擇!; ok_cancel; 圖12-19 文本29凌云書屋 3. 部分文本(text_part) 部分文本的類型是text_part,只有l(wèi)abel一個屬性。單獨的部分文本與只含label屬性的文本(Text)等效。多個部分文本可以組成單行的文本或段落,彌補了文本(Text)只能單行的不足,例12-3定義了顯示兩行信息的對話框,外觀見圖12-20?!纠?2-3】定義多

28、行文本的對話框。warn2:dialoglabel=警告信息; :text_part label=選取的對象不是直線,; :text_part label=請重新選擇!; ok_cancel; 圖12-20部分文本30凌云書屋4. 串聯(lián)(Concatenation) 串聯(lián)的類型是Concatenation,沒有屬性,它的作用是把多個部分文本組成單行的文本。例12-4是將兩個部分文本組成單行的文本的實例,結(jié)果見圖12-21。/例12-4 將兩個部分文本組成單行的文本。Warn3:dialoglabel=警告信息; :concatenation :text_part label=選取的對象不是直線

29、,; :text_part label=請重新選擇!; ok_cancel; 圖12-21 串聯(lián)后的部分文本31凌云書屋5. 段落(Paragraph) 段落的作用是把多個部分文本組成段落,它的類型是paragraph,沒有屬性。例12-5是將三個部分文本組成一個段落的實例,結(jié)果見圖12-22。warn:dialoglabel=警告信息; :paragraph :concatenation : text_part label=選取的對象不是直線,; : text_part label=請重新選擇!; :text_partlabel =用單點方式選擇直線 !; ok_cancel;圖12-22

30、段落文本32凌云書屋6. 間隔(Spacer、Spacer_0、Spacer_1) 間隔(Spacer)也稱空白襯墊,是一種特殊的控件,它具有不可見的大小和對齊方式,用來調(diào)整其它一些控件之間的間隔。如果不用間隔,系統(tǒng)將采用均勻的布局,因此,間隔只用在需要局部調(diào)整控件間隙的地方。 間隔控件的類型是spacer,有alignment、fixed_height、fixed_width、height、width 5個屬性。 Spacer_0和Spacer_1是AutoCAD定義的具體控件。Spacer_0是Spacer的width、height為0的特例,Spacer_1是Spacer的width、h

31、eight為1的特例。Spacer_0、Spacer_1可直接引用。 以圖12-23為例,前4行每行是具有固定寬的3個按鈕。底行最寬,它確定了所有的行寬。第一行沒有插入間隔,這3個按鈕的兩端與底行對齊,且均勻分布。第二行插入間隔Spacer_0,Spacer_0雖然沒有寬度,但它參與等分底行大于該行的間隔,或者認為該行增加了一個寬度為0的按鈕。第三行插入間隔Spacer_1,相當于增加了一個寬度為1的按鈕,再均勻分布。第四行插入寬度為4的間隔Spacer,相當于增加了一個寬度為4的按鈕,再均勻分布。該對話框的定義見例12-6。33凌云書屋圖12-23 用spacer、spacer_0、spac

32、er_1調(diào)整控件間的間隙 Spacer_0Spacer_1Spacer寬度=4 【例12-6】用spacer、spacer_0、spacer_1調(diào)整控件間的間隙spcr:dialoglabel= “調(diào)整間隔實驗”;:row/沒有插入間隔 :buttonlabel=A0;key=a0;fixed_width=true; :buttonlabel=A1;key=a1;fixed_width=true; :buttonlabel=A2;key=a2;fixed_width=true; 34凌云書屋:rowspacer_0;/插入間隔Spacer_0 :buttonlabel=B0;key=b0;fi

33、xed_width=true; :buttonlabel=B1;key=b1;fixed_width=true; :buttonlabel=B2;key=b2;fixed_width=true; :rowspacer_1;/插入間隔Spacer_1 :buttonlabel=C0;key=c0;fixed_width=true; :buttonlabel=C1;key=c1;fixed_width=true; :buttonlabel=C2;key=c2;fixed_width=true; 35凌云書屋 :row:spacer/插入寬度為4的間隔Spacer width=4; fixed_wi

34、dth=true; :buttonlabel=D0;key=d0;fixed_width=true; :buttonlabel=D1;key=d1;fixed_width=true; :buttonlabel=D2;key=d2;fixed_width=true; ok_cancel_help_info;36凌云書屋12.2.4 AutoCAD 預(yù)定義的控件 AutoCAD不僅預(yù)定義了25種控件的類型,還定義了以下8個最常用的控件。定義對話框時,可直接使用這些控件,但是在編寫AutoLISP驅(qū)動程序時,必須要準確地使用其關(guān)鍵字(大小寫字母不等價)。1. ok_only(確認)按鈕 單個的OK按

35、鈕,關(guān)鍵字為accept。用于確認施加在對話框上的操作。2. ok_cancel(確認和取消)按鈕 OK和Cancel兩個按鈕組成的行,OK按鈕的關(guān)鍵字同前,Cancel按鈕的關(guān)鍵字為cancel。Cancel按鈕用于放棄施加在對話框上的操作。3. errtile(出錯信息)控件 Errtile屬于Text類型的控件,其標簽為空,關(guān)鍵字為error。顯示該控件屬性value的內(nèi)容。屬性value的值由AutoLISP程序確定。37凌云書屋【例12-7】定義圖12-24所示出錯信息的對話框的源代碼和AutoLISP驅(qū)動程序。/ 用DCL定義對話框,文件名為12-7.dcl,存放在d盤的examp

36、ledcl目錄下。error:dialoglabel=出錯信息; errtile; ok_only; 圖12-24 出錯信息對話框; 用AutoLISP驅(qū)動對話框的程序,文件名為12-7.lsp。(defun c:erdlg() (if ( (setq id(load_dialog d:exampledcl12-7) 0) (exit) (if (not (new_dialog error id)(exit) (set_tile error 長度必須大于 0 !) (action_tile accept (done_dialog) (start_dialog) (unload_dialog i

37、d) (princ)38凌云書屋4. ok_cancel_help(確認、取消和幫助)控件 OK、Cancel和Help三個按鈕組成的行,OK、Cancel按鈕的關(guān)鍵字同前,Help按鈕的關(guān)鍵字為help?!纠?2-8】定義圖12-25所示含有OK、Cancel和Help三個按鈕的對話框的源代碼和AutoLISP驅(qū)動程序。/用DCL定義對話框,文件名為12-8.dcl,存放在d盤的exampledcl目錄下。hlp:dialog label = 了解直線命令的用法; ok_cancel_help;圖12-25 含有ok_cancel_help控件的對話框 39凌云書屋;用AutoLISP驅(qū)動對

38、話框的程序,文件名為12-8.lsp。 (defun c:hlpdlg() (setq id(load_dialog d:example12-8.dcl) (if ( id 0)(exit) (if (not (new_dialog hlp id)(exit) (action_tile help (help line);定義help按鈕的活動是調(diào)用AutoLISP的help函數(shù),了解直線命令的用法。 (action_tile accept (done_dialog) (action_tile cancel (done_dialog) (start_dialog) (unload_dialog

39、id) (princ)40凌云書屋5. ok_cancel_help_errtile(確認、取消、幫助和出錯)控件 該控件為OK、Cancel和Help共3個按鈕組成的行,出錯信息寫在該行的下面。這4個控件的關(guān)鍵字同前。控件errtile需要在AutoLISP驅(qū)動對話框程序中用set_tile函數(shù)為其屬性value賦值,例如: (set_tile error 無效的輸入)41凌云書屋/定義ok_cancel_help_errtile對話框,文件名為error.dclerror:dialoglabel=出錯信息; ok_cancel_help_errtile; (defun c:erdlg()

40、;AutoLISP驅(qū)動程序 (if ( (setq id(load_dialog d:exampledclerror) 0) (exit) (if (not (new_dialog error id)(exit) (set_tile error 無效的輸入) (action_tile accept (done_dialog) (start_dialog) (unload_dialog id) (princ)42凌云書屋6. ok_cancel_help_info(確認、取消、幫助和信息)控件 該控件為OK、Cancel、Help和info四個按鈕組成的行,OK、Cancel和Help的關(guān)鍵字同

41、前。info按鈕的關(guān)鍵字為info,需要在AutoLISP驅(qū)動程序定義info按鈕的活動,比如,彈出一個用text控件為主的顯示一些信息的對話框。 43凌云書屋12.3 控件的屬性 控件的外觀和功能是由該控件的屬性確定的。屬性如同程序中的變量,具有名字和值。屬性的值有整型、實型和字符串類型,有的屬性值只能是預(yù)定義的保留字。實數(shù)的小數(shù)點前必須有數(shù)字,例如.1是錯的,應(yīng)為0.1。字符串是由雙引號括起的文本,與AutoLISP一樣,用做轉(zhuǎn)義符。預(yù)定義的保留字有true、false、left、centered、right、top和bottom,它們必須小寫。AutoLISP程序在運行中可以改變控件的一

42、些屬性。 控件的類型不同,其屬性的數(shù)量也不同。有些屬性在所有的控件中的含義是相同的,有些屬性在不同的控件中含義也不同。AutoCAD為用戶預(yù)定義了35個屬性。44凌云書屋按字母順序依次是:1. action 確定控件的活動,活動是是用雙引號括起的AutoLISP表達式或函數(shù)。表達式中不能含有AutoCAD的命令。當選中該控件時,執(zhí)行相應(yīng)的AutoLISP表達式或函數(shù)。AutoLISP驅(qū)動程序可以設(shè)置控件的一些屬性,且覆蓋DCL定義時的該屬性。 相關(guān)的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、s

43、lider、toggle。 默認值:無2. alignment 確定控件自身的定位方式。列類型的控件可選left(左對齊)、centered(中間對齊)和right(右對齊);行類型的控件可選top(頂對齊)、centered(中間對齊)和bottom(底對齊)。相關(guān)的控件有:全部控件。 默認值:列類型控件為left,行類型控件為centered45凌云書屋3. allow_accept 若該屬性的值為true,按下接受鍵(如Enter鍵),就如同單擊了默認按鈕(is_default 為 true的按鈕)。 相關(guān)的控件有:edit_box、image_button、list_box 默認值:f

44、alse4. aspect_ratio 圖像控件的寬與高之比,與寬、高之一確定圖像控件的大小。若該屬性的值為零,則默認為將圖像控件調(diào)整為最合適的寬與高之比。 相關(guān)的控件有:image、image_button 默認值:無5. big_increment 確定滑動條最大增量的整數(shù)值,取值范圍在屬性min_value和屬性max_value之間。 相關(guān)的控件有:slider 默認值:整個范圍的1/10。46凌云書屋6. children_alignment 與屬性alignment的功能基本相同,區(qū)別在于它只針對子控件組群而言,確定組群內(nèi)部控件的定位方式,控件自身的alignment屬性優(yōu)先于該屬

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

46、n、radio_column、radio_row、row 默認值:false47凌云書屋8. children_fixed_width 功能與fixed_ width相同,不過它是控件組群的屬性,僅作用于組群內(nèi)所有的控件并作為它們的默認值,默認值為flase,低于屬性fixed_ width的優(yōu)先級。 相關(guān)的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row 默認值:false9. color 確定圖像背景、矢量或填充塊的顏色。普通顏色與AutoCAD的標

47、準顏色名(red、yellow等)和顏色號所定義的顏色含義相同,此外還有表12-1所示的特殊顏色。 相關(guān)的控件有:image、image_button。 默認值:7(白色)48凌云書屋表12-1 特殊的顏色 顏色值 預(yù)定義 含 義 -2 Graphics_background 當前圖形屏幕的背景色 -15 Dialog_background 當前對話框背景色 -16 Dialog_foreground 當前對話框前景色 -18 Dialog_line Current 當前對話框線條顏色10. edit_limit 確定編輯框可容納的最多字符數(shù),最大值為256。 相關(guān)的控件有:edit_box。

48、 默認值:13249凌云書屋11. edit_width 確定編輯框的寬度,以字符為單位。若該屬性的值默認為0,編輯框的寬度將是不固定的,布局時可自動擴充到整個可用空間。 相關(guān)的控件有:edit_box、popup_list 默認值:擴充到整個可用空間。12. fixed_height 當該屬性的值為true時,屬性height有效,否則做相關(guān)調(diào)整。 相關(guān)的控件有:全部控件。 默認值:flase13. fixed_width 當該屬性的值為true時,屬性width有效,否則做相關(guān)調(diào)整。 相關(guān)的控件有:全部控件。 默認值:flasefixed_width = true;width = 10;f

49、ixed_width = false;width = 10;50凌云書屋12. fixed_width_font 當該屬性的值為true時,對于列表框或下拉列表框內(nèi)的字符,在行距、列距不變的情況下減小字符之間的間隔(字符盡可能地大)。 相關(guān)的控件有:list_box、popup_list。 默認值:flase15. height 確定控件的最小高度,數(shù)值類型是整數(shù)或?qū)崝?shù)型。單位為屏幕字符的最大高度。如果屬性fixed_height的值為ture,height是控件的實際高度,否則,在自動布局時,控件的實際高度會超出該值。通常,不需指定該值,系統(tǒng)能自動采用合適的數(shù)值(圖像及圖像按鈕除外)。 相關(guān)

50、的控件有:全部控件。 默認值:無16. initial_focus 確定對話框內(nèi)初始被聚焦的控件。 相關(guān)的控件有:dialog。 默認值:無Flase ture51凌云書屋17. is_bold 若該屬性為true,該控件的字符用黑體顯示。 相關(guān)的控件有:text。 默認值:false18. is_cancel 若該屬性為true,所選中的按鈕與按取消鍵(如Esc)的作用相同。對話框中只能有一個按鈕的is_cancel為true,且點取該按鈕后,取消施加在對話框上的操作并終止對話框。 相關(guān)的控件有:button。 默認值:false19. is_default 若該屬性為true,單擊該按鈕與

51、按接收受鍵(如Enter)的作用相同。對話框中只能有一個按鈕將該屬性設(shè)置為true。 相關(guān)的控件有:button。 默認值:false52凌云書屋20. is_enabled 若該屬性為true,控件有效,否則,控件失效(變灰)。 相關(guān)的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、toggle。 默認值:true21. is_tab_stop 確定控件是否可以用Tab選擇聚焦,若該屬性為false時,按Tab鍵時,將跳過該控件到下一個控件。 相關(guān)的控件有:button、edit_box、imag

52、e、image_button、list_box、popup_list、radio_button、toggle。 默認值:trueflase ture53凌云書屋22. key 確定控件的關(guān)鍵字,關(guān)鍵字是控件的標識,在一個對話框中的關(guān)鍵字必須是唯一的。關(guān)鍵字的值為字符串,且大小寫不等價。AutoLISP程序根據(jù)控件的關(guān)鍵字施加相應(yīng)控件的操作。 相關(guān)的控件有:Button、edit_box、image、image_button、list_box、popup_list、radio_button、slider、text、toggle。默認值:無23. Label 確定控件的標簽,label的值是一個由

53、雙引號括起來的字符串。它的顯示位置取決于控件的類型。例如,對話框的標簽是顯示在頂部的標題,按鈕的標簽顯示在按鈕上,編輯框的標簽顯示在編輯框的左邊,切換開關(guān)、互鎖按鈕的標簽在顯示開關(guān)按鈕的右邊,行、列的標簽顯示在行、列的左上方。 相關(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。 默認值:無54凌云書屋24. layout 確定slider(滑動條)

54、的方位是horizontal(水平)還是vertical(垂直),默認值為horizontal。 相關(guān)的控件有:slider。 默認值:horizontal25. list 確定列表框或下拉列表框內(nèi)的初始內(nèi)容(字符串),行之間用n分隔,行內(nèi)用制表符t分隔。 相關(guān)的控件有:list_box、popup_list。 默認值:無26. max_value 確定滑動條返回的最大值,是-3276832767之間的整數(shù)。 相關(guān)的控件有:slider。 默認值:1000055凌云書屋27. min_value 確定滑動條返回的最小值,是-3276832767之間的整數(shù)。 相關(guān)的控件有:slider。 默認值

55、:028. mnemonic 定義控件的熱鍵,即助記符。助記符是控件標簽中帶下劃線的字符。也可以在屬性label中用&定義助記符。 若助記符是為控件組群設(shè)置的,則焦點自動落在第一個is_tab_stop屬性為true的控件上。 相關(guān)的控件有:button、edit_box、image、list_box、popup_list、radio_button、slider、toggle。 默認值:無29. multiple_select 若該屬性的值為true,允許在列表中選擇多個選項。 相關(guān)的控件有:list_box。 默認值:false56凌云書屋30. password_char 確定用于屏蔽用戶

56、輸入的字符,即用該字符代替實際輸入的字符顯示在編輯框內(nèi),達到為輸入內(nèi)容保密的目的。 相關(guān)的控件有:edit_box 默認值:無31. small_increment 確定滑動條最小增量的整數(shù)值,取值范圍在min_value和max_value之間。 相關(guān)的控件有:slider 默認值:整個范圍的1/100。32. tabs 確定列表框或下拉列表框內(nèi)的制表符t停止的位置(字符個數(shù))。 相關(guān)的控件有:list_box、popup_list 默認值:無57凌云書屋33. tab_truncate 若該屬性的值為true,超出tabs屬性指定的字符被截掉(從第tabs個字符起被截掉)。 相關(guān)的控件有:

57、list_box、popup_list 默認值:false34. value 控件初始狀態(tài)時的值。值的含義由控件類型所決定。例如,對話框的value可以作為標題,編輯框的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。 默認值:無58凌云書屋35. width 確定控件的最小寬度,數(shù)值類型是整數(shù)

58、或?qū)崝?shù)型。寬度單位為大小寫字符的平均寬度。如果屬性fixed_width的值為ture,width是控件的實際寬度,否則,在自動布局時,控件的實際寬度會超出該值。通常,不需特別指定該值,系統(tǒng)能自動采用合適的數(shù)值(圖像及圖像按鈕除外)。 相關(guān)的控件有:全部控件。 默認值:無59凌云書屋12.4 對話框設(shè)計的原則與規(guī)范 設(shè)計一個對話框除了考慮它的功能外,還應(yīng)該考慮它的外觀和是否便于操作,需要遵循一定的設(shè)計準則。12.4.1 一般原則1. 美觀 對話框的外觀是非常重要的。雜亂無章的對話框會使操作人員難以操作。因此,必須從用戶的觀點出發(fā),設(shè)計既美觀又實用的對話框。2. 便于操作 用戶關(guān)心的是控件的位置

59、和使用是否便于操作。經(jīng)常用到的控件,應(yīng)盡可能安排在較為突出的位置。相關(guān)數(shù)據(jù)的控件,例如點的X、Y、Z坐標,應(yīng)盡量位于相鄰的位置。3. 語言文字 盡管對話框可采用圖形界面,但大部分的信息還是需要文字描述的,如對話框的標題,按鈕的標簽等。因此文字說明既要準確,又要便于理解。 60凌云書屋4. 控件設(shè)計一致性 對話框的樣式、風格不僅在具體的應(yīng)用程序內(nèi)部保持一致,而且應(yīng)該與相關(guān)的應(yīng)用程序保持一致,應(yīng)盡量與AutoCAD系統(tǒng)的對話框風格一致,以便操作人員容易掌握。圖12-26插入圖塊對話框5. 便于操作控制 對話框相對于命令行的優(yōu)點是操作順序不受限制,例如圖12-26所示插入圖塊的對話框,圖塊的名字、插

60、入基點、比例、旋轉(zhuǎn)角度的輸入順序是隨意的。但有些數(shù)據(jù)存在著一定的制約關(guān)系,例如圖塊的插入基點、比例、旋轉(zhuǎn)角既可以用鼠標在屏幕上確定,也可以在相應(yīng)的編輯框輸入數(shù)據(jù),但不需要同時采用這兩種方式。利用切換開關(guān)的狀態(tài),即可很好地解決這個問題。若打開切換開關(guān),相應(yīng)的編輯框被禁用(變灰),就只能采用通過鼠標在屏幕上確定的方法。61凌云書屋 若嵌套式地打開多個對話框,應(yīng)采用層疊方式,保留已打開的對話框,且最后打開的對話框位于最上層。這樣便于了解這些對話框之間的關(guān)聯(lián)狀況,也表明每個對話框來自何處,歸于何處。6. 實時反饋 必須確保操作人員實時看到施加到對話框上的每一步操作,例如數(shù)據(jù)更新、顏色改變。當某一選擇排

溫馨提示

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

評論

0/150

提交評論