第12章 對話框設計清華CAD二次開發(fā) LISP_第1頁
第12章 對話框設計清華CAD二次開發(fā) LISP_第2頁
第12章 對話框設計清華CAD二次開發(fā) LISP_第3頁
第12章 對話框設計清華CAD二次開發(fā) LISP_第4頁
第12章 對話框設計清華CAD二次開發(fā) LISP_第5頁
已閱讀5頁,還剩143頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

2、一個簡單的對話框。 進入VLISP環(huán)境,將下列源代碼輸入到文本編輯窗口,選取下拉菜單ToolsInterface ToolPreview DCL in Editor,即可看到圖12-2所示該對話框的外觀。 sample:dialog label = 簡單的對話框實例; :text label = 祝您成功!; :button key = accept; label = 確認; is_default = true; fixed_width = true; alignment=centered; 圖12-2 簡單的對話框實例 ,12.2 對話框控件 控件是構造對話框的元件。AutoCAD為用戶預定

3、義了23種控件和8個常用的固定控件。每一種控件屬于一種類型。每一個控件有多個屬性。每個屬性都有一個名字和值。多數(shù)的屬性都有它的默認值。一個控件具有哪些屬性是由它的類型所決定的。控件的這些屬性確定了它的外觀形式和動作行為。,例如上例中的確認按鈕,它的類型是button。當它的屬性label = 確認、key = accept、is_default = true、fixed_width = true、alignment = centered,其余屬性為默認值時,就確定了圖12-2所示的外觀。 按照控件的特點可以將控件分為以下幾類。,12.2.1可以定義動作行為的控件 這類控件具有動作行為(acti

4、on)的屬性,動作行為是用AutoLISP的函數(shù)或表達式表示定義的,用鼠標單擊這樣的控件時,就會執(zhí)行相應的函數(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、mnemonic、width 共13個屬性。它的標簽(label)顯示在按鈕上。 若要創(chuàng)建

5、與OK等價的控件,其關鍵字必須為accept,并將其屬性is_default設定為true(真)。參照例121中確認按鈕的定義。,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_char 16個屬性。其標簽顯示在該框的左邊,它的默認寬度為12個字符,當輸入的字符多于1

6、2時,文本自動向左滾動,框內的字符串即為編輯框的值(value)。 圖12-3所示的編輯框定義如下: :edit_box key=test_text; label=長度: ; value=100.0; width=12; 圖12-3 編輯框 ,3. 圖像按鈕(Image Button) 圖像按鈕將圖像顯示在按鈕上。圖像由AutoLISP程序確定。它的類型是image_button。有action、alignment、allow_accept、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key

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

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

9、ght=6; ,圖12-5 列表框,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)象一個編輯框,標簽顯示在框的左邊,框內只有一行字符和一個向下的箭頭,見圖12-6(a)。單擊框內箭頭,將彈出一個列表,見圖12-6(b),選取表內文本之后,列表自動關閉,在

10、編輯框內顯示選中的內容。下拉列表的值是被選中的文本行的序號。,圖12-6 所示下拉列表的定義如下: :popup_list label=齒輪種類:; list=圓柱直齒n圓柱斜齒n圓錐直齒n螺旋傘齒n蝸輪n蝸桿n; key= gear_list; ,(a) (b) 圖12-6 下拉列表,6. 互鎖按鈕(Radio Button) 互鎖按鈕的類型是radio_button。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width 12個屬性。 互鎖

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

12、alue、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 滑動條,8. 切換開關(Toggle) 切換開關又稱作復選開關、乒乓開關,它的類型是toggle。有action、alignment、fixed_height、

13、fixed_width、height、is_enabled、is_tab_stop、key、label、value、width 11個屬性。 切換開關與互鎖按鈕不同的是它可以單獨使用,同組的切換開關各自是獨立的。 標簽顯示在開關的右邊。圖12-9所示切換開關的定義如下: :toggle label= 正交方式; key= ortho_mode; value=1; ,圖12-9 切換開關,12.2.2 組合類控件 組合類控件可以將相關的控件組合在一起,使得對話框的布局更加美觀、合理,操作更加方便。 1. 列(Column) 列是將若干控件構成垂直分布的一個組件。 列的類型是column。有ali

14、gnment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性。,圖12-10 列,圖12-11 加框列,圖12-10 所示列的定義如下: :column :buttonlabel= 光標拾取 ; key= pick; :edit_boxlabel= x=; width=12; key= x; mnemonic= x; value=0.0; ,:edit_boxlabel= y=; width=12; key= y; mne

15、monic= y; value=0.0; ,圖12-10 列,2. 加框列(Boxed Column) 顧名思義加框列就是加了一個矩形框的列。 加框列的類型是boxed_bolumn。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性。 如果將圖12-10 所示列的定義的第一行:column改為:boxed_columnlabel= 左下角點;,即可定義一個加框列,見圖12-11。,圖12-11 加框列,

16、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-12 互鎖列,圖12-13 加框互鎖列,圖12-12 所示互鎖列的定義如下: :radio_column key= size; :radio_buttonlab

17、el= A,:radio_buttonlabel= A ,圖12-12 互鎖列,圖12-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_rad

18、io_columnlabel=幅面規(guī)格;,即可定義一個加框互鎖列,見圖12-13。,5. 行(Row) 行是將若干控件構成水平分布的一個組件。 行的類型是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; ke

19、y=w; value=420; :edit_box label=H(mm)=; mnemonic=H; key=h; value=297; ,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=圖紙幅面;,即可定義一個加

20、框行,見圖12-15。,圖12-15 加框行,7. 互鎖行(Radio Row) 若干個互鎖按鈕組成的行即為互鎖行。 互鎖行的類型是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 ,圖12-16 互鎖行,8. 加框互鎖行(Box

21、ed Radio Row) 加框互鎖行就是加了一個矩形框的互鎖行。 加框互鎖行的類型是boxed_radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width 9個屬性。 如果將圖12-16 所示互鎖行的定義的第一行:radio_row改為:boxed_radio_rowlabel=幅面規(guī)格;,即可定義一個加框互鎖行,見圖12-17。,圖12-17 加框互鎖行,9. 對話框(dialog) 對話框本身也可

22、以看作是一種控件,它是對話框的主體,不能單獨使用,且至少要有一個確認(OK)或取消(Cancel)按鈕。它的類型是dialog,有initial_focus、label、value 3個屬性。標簽是對話框的標題。屬性value也可以作為標題,這樣的標題在程序運行時可以被改變。initial_focus用于指定初始聚焦的控件。 見右圖所示對話框及以下程序代碼: sample:dialog label = 簡單的對話框實例; :text label = 祝您成功!; :buttonkey = accept; label = 確認; 簡單的對話框實例 is_default = true; fixed

23、_width = true; alignment=centered; ,12.2.3 裝飾性和信息類控件 裝飾性和信息類控件無行為動作,也不能被選擇,主要用于顯示信息、加強視覺效果或協(xié)助對話框布局。 1. 圖像(Image) 圖像是在一個矩形區(qū)域內顯示矢量圖形、色彩填充塊等的控件。它的類型是image。有alignment、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width 11個屬性。圖像的值是點取圖像時的位置,通過AutoLISP程序可以獲取該位置,從而根據(jù)

24、這些位置設計相應的動作。 必須指定圖像的width、height或二者之一和aspect_ratio屬性。圖像的內容由AutoLISP程序確定。,圖12-18所示圖像的定義如下: :image width=30; aspect_ratio=0.6; key= rect; color=graphics_background; ,圖12-18 圖像,注意:圖像的內容由AutoLISP程序確定。,2. 文本(Text) 文本控件通常用于顯示提示或警告信息。 文本的類型是text。有alignment、fixed_height、fixed_width、height、is_bold、key、label、

25、value、width 9個屬性。 屬性label和value都可以存放用戶要顯示的信息,且外觀相同。但是,label存放的信息是不變的,value存放的信息可以由AutoLISP程序賦以新的內容。若label和value同時存放了某些信息時,label的信息不予顯示。例12-2 定義了用屬性label存放顯示信息的對話框,外觀見圖12-19。,【例12-2】 用屬性label存放顯示信息的對話框。 iwarn1:dialoglabel=警告信息; :textlabel=選取的對象不是直線,請重新選擇!; ok_cancel; ,圖12-19 文本,3. 部分文本(text_part) 部分文

26、本的類型是text_part,只有l(wèi)abel一個屬性。單獨的部分文本與只含label屬性的文本(Text)等效。多個部分文本可以組成單行的文本或段落,彌補了文本(Text)只能單行的不足,例12-3定義了顯示兩行信息的對話框,外觀見圖12-20。 【例12-3】定義多行文本的對話框。 warn2:dialoglabel=警告信息; :text_part label=選取的對象不是直線,; :text_part label=請重新選擇!; ok_cancel; ,圖12-20部分文本,4. 串聯(lián)(Concatenation) 串聯(lián)的類型是Concatenation,沒有屬性,它的作用是把多個部分

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

28、; :paragraph :concatenation : text_part label=選取的對象不是直線,; : text_part label=請重新選擇!; :text_partlabel =用單點方式選擇直線 !; ok_cancel; ,圖12-22 段落文本,6. 間隔(Spacer、Spacer_0、Spacer_1) 間隔(Spacer)也稱空白襯墊,是一種特殊的控件,它具有不可見的大小和對齊方式,用來調整其它一些控件之間的間隔。如果不用間隔,系統(tǒng)將采用均勻的布局,因此,間隔只用在需要局部調整控件間隙的地方。 間隔控件的類型是spacer,有alignment、fixed_

29、height、fixed_width、height、width 5個屬性。 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個按鈕。底行最寬,它確定了所有的行寬。第一行沒有插入間隔,這3個按鈕的兩端與底行對齊,且均勻分布。第二行插入間隔Spacer_0,Spacer_0雖然沒有寬度,但它參與等分底行大于該行的間隔,或者認為該行增加了一個寬度為0的按鈕

30、。第三行插入間隔Spacer_1,相當于增加了一個寬度為1的按鈕,再均勻分布。第四行插入寬度為4的間隔Spacer,相當于增加了一個寬度為4的按鈕,再均勻分布。該對話框的定義見例12-6。,圖12-23 用spacer、spacer_0、spacer_1調整控件間的間隙,Spacer_0 Spacer_1 Spacer寬度=4,【例12-6】用spacer、spacer_0、spacer_1調整控件間的間隙 spcr:dialoglabel= “調整間隔實驗”; :row/沒有插入間隔 :buttonlabel=A0;key=a0;fixed_width=true; :buttonlabel=

31、A1;key=a1;fixed_width=true; :buttonlabel=A2;key=a2;fixed_width=true; ,:rowspacer_0;/插入間隔Spacer_0 :buttonlabel=B0;key=b0;fixed_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

32、=C1;key=c1;fixed_width=true; :buttonlabel=C2;key=c2;fixed_width=true; ,:row:spacer/插入寬度為4的間隔Spacer width=4; fixed_width=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; ,12.2.4 AutoCAD 預定義的控件 AutoCAD

33、不僅預定義了25種控件的類型,還定義了以下8個最常用的控件。定義對話框時,可直接使用這些控件,但是在編寫AutoLISP驅動程序時,必須要準確地使用其關鍵字(大小寫字母不等價)。 1. ok_only(確認)按鈕 單個的OK按鈕,關鍵字為accept。用于確認施加在對話框上的操作。 2. ok_cancel(確認和取消)按鈕 OK和Cancel兩個按鈕組成的行,OK按鈕的關鍵字同前,Cancel按鈕的關鍵字為cancel。Cancel按鈕用于放棄施加在對話框上的操作。 3. errtile(出錯信息)控件 Errtile屬于Text類型的控件,其標簽為空,關鍵字為error。顯示該控件屬性va

34、lue的內容。屬性value的值由AutoLISP程序確定。,【例12-7】定義圖12-24所示出錯信息的對話框的源代碼和AutoLISP驅動程序。 / 用DCL定義對話框,文件名為12-7.dcl,存放在d盤的exampledcl目錄下。 error:dialoglabel=出錯信息; errtile; ok_only; ,圖12-24 出錯信息對話框,; 用AutoLISP驅動對話框的程序,文件名為12-7.lsp。 (defun c:erdlg() (if ( (setq id(load_dialog d:exampledcl12-7) 0) (exit) (if (not (new_d

35、ialog error id)(exit) (set_tile error 長度必須大于 0 !) (action_tile accept (done_dialog) (start_dialog) (unload_dialog id) (princ) ),4. ok_cancel_help(確認、取消和幫助)控件 OK、Cancel和Help三個按鈕組成的行,OK、Cancel按鈕的關鍵字同前,Help按鈕的關鍵字為help。 【例12-8】定義圖12-25所示含有OK、Cancel和Help三個按鈕的對話框的源代碼和AutoLISP驅動程序。 /用DCL定義對話框,文件名為12-8.dcl,

36、存放在d盤的exampledcl目錄下。 hlp:dialog label = 了解直線命令的用法; ok_cancel_help; ,圖12-25 含有ok_cancel_help控件的對話框,;用AutoLISP驅動對話框的程序,文件名為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按鈕的活動是調用AutoLISP的help函

37、數(shù),了解直線命令的用法。 (action_tile accept (done_dialog) (action_tile cancel (done_dialog) (start_dialog) (unload_dialog id) (princ) ),5. ok_cancel_help_errtile(確認、取消、幫助和出錯)控件 該控件為OK、Cancel和Help共3個按鈕組成的行,出錯信息寫在該行的下面。這4個控件的關鍵字同前。控件errtile需要在AutoLISP驅動對話框程序中用set_tile函數(shù)為其屬性value賦值,例如: (set_tile error 無效的輸入),.,/定

38、義ok_cancel_help_errtile對話框,文件名為error.dcl error:dialoglabel=出錯信息; ok_cancel_help_errtile; ,(defun c:erdlg() ;AutoLISP驅動程序 (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

39、 id) (princ) ),6. ok_cancel_help_info(確認、取消、幫助和信息)控件 該控件為OK、Cancel、Help和info四個按鈕組成的行,OK、Cancel和Help的關鍵字同前。info按鈕的關鍵字為info,需要在AutoLISP驅動程序定義info按鈕的活動,比如,彈出一個用text控件為主的顯示一些信息的對話框。,12.3 控件的屬性 控件的外觀和功能是由該控件的屬性確定的。屬性如同程序中的變量,具有名字和值。屬性的值有整型、實型和字符串類型,有的屬性值只能是預定義的保留字。實數(shù)的小數(shù)點前必須有數(shù)字,例如.1是錯的,應為0.1。字符串是由雙引號括起的文本

40、,與AutoLISP一樣,用做轉義符。預定義的保留字有true、false、left、centered、right、top和bottom,它們必須小寫。AutoLISP程序在運行中可以改變控件的一些屬性。 控件的類型不同,其屬性的數(shù)量也不同。有些屬性在所有的控件中的含義是相同的,有些屬性在不同的控件中含義也不同。AutoCAD為用戶預定義了35個屬性。,按字母順序依次是: 1. action 確定控件的活動,活動是是用雙引號括起的AutoLISP表達式或函數(shù)。表達式中不能含有AutoCAD的命令。當選中該控件時,執(zhí)行相應的AutoLISP表達式或函數(shù)。AutoLISP驅動程序可以設置控件的一些

41、屬性,且覆蓋DCL定義時的該屬性。 相關的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、slider、toggle。 默認值:無 2. alignment 確定控件自身的定位方式。列類型的控件可選left(左對齊)、centered(中間對齊)和right(右對齊);行類型的控件可選top(頂對齊)、centered(中間對齊)和bottom(底對齊)。 相關的控件有:全部控件。 默認值:列類型控件為left,行類型控件為centered,3. allow_accept 若該屬性的值為true,按

42、下接受鍵(如Enter鍵),就如同單擊了默認按鈕(is_default 為 true的按鈕)。 相關的控件有:edit_box、image_button、list_box 默認值:false 4. aspect_ratio 圖像控件的寬與高之比,與寬、高之一確定圖像控件的大小。若該屬性的值為零,則默認為將圖像控件調整為最合適的寬與高之比。 相關的控件有:image、image_button 默認值:無 5. big_increment 確定滑動條最大增量的整數(shù)值,取值范圍在屬性min_value和屬性max_value之間。 相關的控件有:slider 默認值:整個范圍的1/10。,6. ch

43、ildren_alignment 與屬性alignment的功能基本相同,區(qū)別在于它只針對子控件組群而言,確定組群內部控件的定位方式,控件自身的alignment屬性優(yōu)先于該屬性。 相關的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row 默認值:列類型控件為left,行類型控件為centered 7. children_fixed_height 功能與fixed_height相同,不過它是控件組群的屬性,僅作用于組群內所有的控件并作為它們的默認值,低于屬

44、性fixed_height的優(yōu)先級。 相關的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row 默認值:false,8. children_fixed_width 功能與fixed_ width相同,不過它是控件組群的屬性,僅作用于組群內所有的控件并作為它們的默認值,默認值為flase,低于屬性fixed_ width的優(yōu)先級。 相關的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row

45、、column、radio_column、radio_row、row 默認值:false 9. color 確定圖像背景、矢量或填充塊的顏色。普通顏色與AutoCAD的標準顏色名(red、yellow等)和顏色號所定義的顏色含義相同,此外還有表12-1所示的特殊顏色。 相關的控件有:image、image_button。 默認值:7(白色),表12-1 特殊的顏色,顏色值 預定義 含 義 -2 Graphics_background 當前圖形屏幕的背景色 -15 Dialog_background 當前對話框背景色 -16 Dialog_foreground 當前對話框前景色 -18 Dial

46、og_line Current 當前對話框線條顏色,10. edit_limit 確定編輯框可容納的最多字符數(shù),最大值為256。 相關的控件有:edit_box。 默認值:132,11. edit_width 確定編輯框的寬度,以字符為單位。若該屬性的值默認為0,編輯框的寬度將是不固定的,布局時可自動擴充到整個可用空間。 相關的控件有:edit_box、popup_list 默認值:擴充到整個可用空間。 12. fixed_height 當該屬性的值為true時,屬性height有效,否則做相關調整。 相關的控件有:全部控件。 默認值:flase 13. fixed_width 當該屬性的值為

47、true時,屬性width有效,否則做相關調整。 相關的控件有:全部控件。 默認值:flase,fixed_width = true; width = 10;,fixed_width = false; width = 10;,12. fixed_width_font 當該屬性的值為true時,對于列表框或下拉列表框內的字符,在行距、列距不變的情況下減小字符之間的間隔(字符盡可能地大)。 相關的控件有:list_box、popup_list。 默認值:flase 15. height 確定控件的最小高度,數(shù)值類型是整數(shù)或實數(shù)型。單位為屏幕字符的最大高度。如果屬性fixed_height的值為tu

48、re,height是控件的實際高度,否則,在自動布局時,控件的實際高度會超出該值。通常,不需指定該值,系統(tǒng)能自動采用合適的數(shù)值(圖像及圖像按鈕除外)。 相關的控件有:全部控件。 默認值:無 16. initial_focus 確定對話框內初始被聚焦的控件。 相關的控件有:dialog。 默認值:無,Flase ture,17. is_bold 若該屬性為true,該控件的字符用黑體顯示。 相關的控件有:text。 默認值:false 18. is_cancel 若該屬性為true,所選中的按鈕與按取消鍵(如Esc)的作用相同。對話框中只能有一個按鈕的is_cancel為true,且點取該按鈕后

49、,取消施加在對話框上的操作并終止對話框。 相關的控件有:button。 默認值:false 19. is_default 若該屬性為true,單擊該按鈕與按接收受鍵(如Enter)的作用相同。對話框中只能有一個按鈕將該屬性設置為true。 相關的控件有:button。 默認值:false,20. is_enabled 若該屬性為true,控件有效,否則,控件失效(變灰)。 相關的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、toggle。 默認值:true 21. is_tab_stop 確定控件

50、是否可以用Tab選擇聚焦,若該屬性為false時,按Tab鍵時,將跳過該控件到下一個控件。 相關的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、toggle。 默認值:true,flase ture,22. key 確定控件的關鍵字,關鍵字是控件的標識,在一個對話框中的關鍵字必須是唯一的。關鍵字的值為字符串,且大小寫不等價。AutoLISP程序根據(jù)控件的關鍵字施加相應控件的操作。 相關的控件有:Button、edit_box、image、image_button、list_box、popup_li

51、st、radio_button、slider、text、toggle。 默認值:無 23. Label 確定控件的標簽, label的值是一個由雙引號括起來的字符串。它的顯示位置取決于控件的類型。例如,對話框的標簽是顯示在頂部的標題,按鈕的標簽顯示在按鈕上,編輯框的標簽顯示在編輯框的左邊,切換開關、互鎖按鈕的標簽在顯示開關按鈕的右邊,行、列的標簽顯示在行、列的左上方。 相關的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、button、dialog、edit_box、list_box、popup_list、radio_

52、button、slider、text、text_part、toggle。 默認值:無,24. layout 確定slider(滑動條)的方位是horizontal(水平)還是vertical(垂直),默認值為horizontal。 相關的控件有:slider。 默認值:horizontal 25. list 確定列表框或下拉列表框內的初始內容(字符串),行之間用n分隔,行內用制表符t分隔。 相關的控件有:list_box、popup_list。 默認值:無 26. max_value 確定滑動條返回的最大值,是-3276832767之間的整數(shù)。 相關的控件有:slider。 默認值:10000

53、,27. min_value 確定滑動條返回的最小值,是-3276832767之間的整數(shù)。 相關的控件有:slider。 默認值:0 28. mnemonic 定義控件的熱鍵,即助記符。助記符是控件標簽中帶下劃線的字符。也可以在屬性label中用/顯示在對話框頂部的標簽 :row /引用行 :image /引用圖像控件 width=30;/圖像的寬 height=8;/圖像的高 key=img_cr;/圖像的關鍵字 color=-2;/圖像的背景色為AutoCAD的背景色 /圖像引用結束,圖12-28,:boxed_column/引用加框列 label=幾何數(shù)據(jù);/加框列的標簽 :edit_b

54、ox /引用編輯框1 label=圓心X(mm):; /編輯框1的標簽 edit_width=8; /編輯框1的寬度 key=X;/編輯框1的關鍵字 mnemonic=X;/編輯框1的熱鍵 /編輯框1引用結束 :edit_box /引用編輯框2 label=圓心/編輯框2的關鍵字 /編輯框2引用結束,:edit_box /引用編輯框3 label=半徑R(mm):; /編輯框3的標簽 width=8; /編輯框3的寬度 key=R;/編輯框3的關鍵字 mnemonic=R;/編輯框3的熱鍵 /編輯框3引用結束 /加框列引用結束 /行引用結束 ok_cancel;/ 引用ok_cancel組合控

55、件 ,12.5.3 DCL語法 1. 定義控件 定義控件類似C語言定義了一個新的數(shù)據(jù)類型。在定義對話框之外定義的控件稱為原型或子組。 定義控件的格式如下: name:item1 :item2 :item3 attribute1=value1; attribute2=value2; ; 其中,name為新控件的名稱,item1為已存在的控件的原型,name:item表示name作為實例繼承item的屬性。如果attribute1是控件item的某一屬性,value1即為該屬性的值, attribute1=value1;是對item1的補充說明,它將用value1覆蓋attribute1的原屬性值

56、。如果控件item不包含attribute1,那么attribute1是name的新屬性。 之內未出現(xiàn)的屬性保留其原有值。,上一段代碼表示新控件name繼承了控件item1、item2、 除了attribute1、attribute2、 之外的所有屬性(包括屬性值),而屬性attribute1、attribute2的新值是value1、value2、。 name;由字母、數(shù)字或下劃線組成,但必須以字母開頭,不能為漢字。 例如,標準控件button的內部定義為: button:tilefixed_height=true; is_tab_stop=true; 在base.dcl中default_b

57、utton引用了button的定義,代碼如下: default_button:button is_default=true; 該例default_button除了繼承button的屬性fixed_height和is_tab_stop之外,又增加了一個新的屬性is_default,并將其設置為true。 實際應用中只有對話框本身需要用戶定義,定義新控件的情況極少,因為AutoCAD預定義的控件種類已經(jīng)夠用。,2. 引用控件 所謂引用控件,就是引用已定義的控件類型,引用的結果得到了一個實例。在引用控件的過程中可以改變或增加控件的屬性,但不必列出不想改變的屬性。由于DCL以這種方式繼承屬性,因此在建

58、立DCL文件時,絕大多數(shù)情況下是引用預定義的控件。 有以下兩種不同的控件引用: (1)被引用控件的名字前沒有冒號:,用于既不修改該也不增加控件屬性的場合。例如: ok_cancel_help; 該引用的結果是得到含有OK、Cancel和Help三個按鈕的組件。 (2)被引用控件的類型字前有冒號:,其后是對部分屬性的修改或補充。例如: :edit_box /引用編輯框控件 label=圓心Y(mm):; /編輯框的標簽 width=8; /編輯框的寬度 key=Y;,該引用的結果是得到一個編輯框的實例。該編輯框的標簽是圓心Y(mm):、寬度為8個字符、關鍵字為Y,其余屬性與編輯框的預定義原型中的

59、屬性相同。 3. 屬性賦值 屬性賦值的格式為:attribute=value; 其中,attribute是屬性名,value為賦給屬性的值,分號;表示賦值結束,必須注意屬性值的類型。 4. 注釋 DCL采用了C及C+的注釋風格,有兩種注釋方式。第一種方式是/至行尾部分作為注釋。第二種方式是或/*與*/之間為注釋部分。第一種方式適于為單行的代碼注釋,第二種方式適于行內和多行的注釋內容。,12.6 對話框驅動程序 對話框文件描述了對話框的結構和外觀、所屬控件的樣式、功能及控件的布局。但是將對話框顯示到屏幕上,使對話框及其各控件發(fā)揮作用,必須靠程序驅動。用AutoLISP或Visual C+語言可以編寫對話框的驅動程序。

溫馨提示

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

評論

0/150

提交評論