版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第12章对话框设计第12章对话框设计清华CAD二次开发LISP12.1概述1.对话框的特点对话框形象、直观,可以随意输入、随时修改,鼠标、键盘并用,是一种深受用户欢迎的界面。对话框用DCL语言(DialogControlLanguage)定义,得到"DCL类型的文件,用AutoLISP或C程序驱动。
AutoCAD提供了两个重要的DCL文件:ACAD.DCL存放AutoCAD系统定义的对话框,BASE.DCL为用户提供了一些常用的对话框标准控件。2.对话框的组成对话框由若干控件组成,见图12-1。控件可以是按钮、切换开关、编辑框、列表或图像等。
第12章对话框设计清华CAD二次开发LISP图12-1对话框的组成
图像按钮弹出列表滑动条编辑框按钮图像互锁按钮切换开关文本第12章对话框设计清华CAD二次开发LISP3.实例【例12-1】用DCL定义一个简单的对话框。进入VLISP环境,将下列源代码输入到文本编辑窗口,选取下拉菜单Tools
InterfaceTool
PreviewDCLinEditor,即可看到图12-2所示该对话框的外观。sample:dialog{label="简单的对话框实例";:text{label="祝您成功!";}:button{key="accept";label="确认";is_default=true;fixed_width=true;alignment=centered;图12-2简单的对话框实例}}第12章对话框设计清华CAD二次开发LISP12.2对话框控件控件是构造对话框的元件。AutoCAD为用户预定义了23种控件和8个常用的固定控件。每一种控件属于一种类型。每一个控件有多个属性。每个属性都有一个名字和值。多数的属性都有它的默认值。一个控件具有哪些属性是由它的类型所决定的。控件的这些属性确定了它的外观形式和动作行为。
例如上例中的"确认"按钮,它的类型是button。当它的属性label="确认"、key="accept"、is_default=true、fixed_width=true、alignment=centered,其余属性为默认值时,就确定了图12-2所示的外观。按照控件的特点可以将控件分为以下几类。第12章对话框设计清华CAD二次开发LISP12.2.1可以定义动作行为的控件这类控件具有动作行为(action)的属性,动作行为是用AutoLISP的函数或表达式表示定义的,用鼠标单击这样的控件时,就会执行相应的函数或表达式。1.按钮(Button)按钮适用于立即产生可视的操作,如退出对话框、弹出子对话框及其它特定操作。每个对话框至少包含一个OK按钮(或功能相当的控件)。按钮的类型是button。有action、alignment、fixed_height、fixed_width、height、is_cancel、is_default、is_enabled、is_tab_stop、key、label、mnemonic、width
共13个属性。它的标签(label)显示在按钮上。若要创建与OK等价的控件,其关键字必须为"accept",并将其属性is_default设定为true(真)。参照例12-1中"确认"按钮的定义。第12章对话框设计清华CAD二次开发LISP2.编辑框(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个属性。其标签显示在该框的左边,它的默认宽度为12个字符,当输入的字符多于12时,文本自动向左滚动,框内的字符串即为编辑框的值(value)。图12-3所示的编辑框定义如下::edit_box{key="test_text";label="长度:";value="100.0";width=12;图12-3编辑框
}第12章对话框设计清华CAD二次开发LISP3.图像按钮(ImageButton)
图像按钮将图像显示在按钮上。图像由AutoLISP程序确定。它的类型是image_button。有action、alignment、allow_accept、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width13个属性。图像按钮很有用的一个特性是,通过AutoLISP程序可以获取被单击时的位置,从而根据不同的位置设计相应的动作。图12-4所示图像按钮定义的如下::image_button{key="test_image_button";width=10;aspect_ratio=1.5;图12-4图像按钮}第12章对话框设计清华CAD二次开发LISP4.列表框(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个属性。列表内含有若干行可供选择的文本,当表的内容超出表的范围时,将自动在表的右侧出现一个滑动条。
列表的标签显示在列表框的上方作为文字说明。列表的值是被选中的文本行的序号,序号从0开始。属性multiple_select为true时,允许同时选取框内的多行文本。图12-5列表框
第12章对话框设计清华CAD二次开发LISP图12-5所示对话框的列表定义如下::list_box{label="齿轮种类";list="圆柱直齿\n圆柱斜齿\n圆锥直齿\n螺旋伞齿\n蜗轮\n蜗杆\n";value="2";key="gear_list";height=6;}图12-5列表框
第12章对话框设计清华CAD二次开发LISP5.下拉列表(PopupList)下拉列表的类型是popup_list。它具有action、alignment、edit_width、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、list、mnemonic、tabs、value、width15个属性。下拉列表具有编辑框和列表框的两个特点,初始状态象一个编辑框,标签显示在框的左边,框内只有一行字符和一个向下的箭头,见图12-6(a)。单击框内箭头,将弹出一个列表,见图12-6(b),选取表内文本之后,列表自动关闭,在编辑框内显示选中的内容。下拉列表的值是被选中的文本行的序号。
第12章对话框设计清华CAD二次开发LISP图12-6所示下拉列表的定义如下::popup_list{label="齿轮种类:";list="圆柱直齿\n圆柱斜齿\n圆锥直齿\n螺旋伞齿\n蜗轮\n蜗杆\n";key="gear_list";}(a)(b)图12-6下拉列表
第12章对话框设计清华CAD二次开发LISP6.互锁按钮(RadioButton)互锁按钮的类型是radio_button。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width12个属性。互锁按钮不宜能单独使用,必须由多个这样的按钮以行或列的形式组成一组,同组的按钮之间是互锁的,只能从中选取一个。互锁按钮的标签显示在按钮的右边。图12-7所示互锁按钮的定义如下::radio_button
{key="unit_mm";label="毫米";}图12-7互锁按钮第12章对话框设计清华CAD二次开发LISP7.滑动条(Slider)滑动条是一种直观控制数值的控件。点取滑动条上的箭头或拖动滑块,可以得到字符串方式表示的整数。滑动条的类型是slider。有action、alignment、big_increment、fixed_height、fixed_width、height、key、label、layout、max_value、min_value、mnemonic、small_increment、value、width15个属性。属性max_value、min_value确定数值的最大和最小值,small_increment、big_increment确定点击滑动条箭头时的最小、最大增量。
图12-8所示滑动条的定义如下::slider
{key="test_slider";min_value=0;max_value=100;}图12-8滑动条第12章对话框设计清华CAD二次开发LISP8.切换开关(Toggle)切换开关又称作复选开关、乒乓开关,它的类型是toggle。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、value、width11个属性。切换开关与互锁按钮不同的是它可以单独使用,同组的切换开关各自是独立的。标签显示在开关的右边。图12-9所示切换开关的定义如下::toggle{label="正交方式";key="ortho_mode";value=1;}图12-9切换开关第12章对话框设计清华CAD二次开发LISP12.2.2组合类控件组合类控件可以将相关的控件组合在一起,使得对话框的布局更加美观、合理,操作更加方便。1.列(Column)列是将若干控件构成垂直分布的一个组件。列的类型是column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。
图12-10列
图12-11加框列
第12章对话框设计清华CAD二次开发LISP图12-10所示列的定义如下::column{:button{label="光标拾取<";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列
第12章对话框设计清华CAD二次开发LISP2.加框列(BoxedColumn)顾名思义加框列就是加了一个矩形框的列。加框列的类型是boxed_bolumn。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。如果将图12-10所示列的定义的第一行":column{改为:boxed_column{label="左下角点";",即可定义一个加框列,见图12-11。图12-11加框列
第12章对话框设计清华CAD二次开发LISP3.互锁列(RadioColumn)若干个互锁按钮组成的列即为互锁列。互锁列的类型是radio_column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。互锁列的特点是,它保证了其中只能有一个按钮的值为1,即处于打开状态。图12-12互锁列
图12-13加框互锁列
第12章对话框设计清华CAD二次开发LISP图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互锁列第12章对话框设计清华CAD二次开发LISP图12-13加框互锁列
4.加框互锁列(BoxedRadioColumn)加框互锁列就是加了一个矩形框的互锁列。加框互锁列的类型是boxed_radio_column。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。
如果将图12-12所示互锁列的定义的第一行":radio_column{"改为":boxed_radio_column{label="幅面规格";",即可定义一个加框互锁列,见图12-13。第12章对话框设计清华CAD二次开发LISP5.行(Row)行是将若干控件构成水平分布的一个组件。行的类型是row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。
图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;}}第12章对话框设计清华CAD二次开发LISP6.加框行(BoxedRow)加框行就是加了一个矩形框的行。加框行的类型是boxed_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。如果将图12-14所示行的定义的第一行":row{"改为":boxed_row{label="图纸幅面";",即可定义一个加框行,见图12-15。图12-15加框行第12章对话框设计清华CAD二次开发LISP7.互锁行(RadioRow)若干个互锁按钮组成的行即为互锁行。互锁行的类型是radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。互锁行中只能有一个选钮的值为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互锁行第12章对话框设计清华CAD二次开发LISP8.加框互锁行(BoxedRadioRow)加框互锁行就是加了一个矩形框的互锁行。加框互锁行的类型是boxed_radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。如果将图12-16所示互锁行的定义的第一行":radio_row{"改为":boxed_radio_row{label="幅面规格";",即可定义一个加框互锁行,见图12-17。
图12-17加框互锁行第12章对话框设计清华CAD二次开发LISP9.对话框(dialog)对话框本身也可以看作是一种控件,它是对话框的主体,不能单独使用,且至少要有一个确认(OK)或取消(Cancel)按钮。它的类型是dialog,有initial_focus、label、value3个属性。标签是对话框的标题。属性value也可以作为标题,这样的标题在程序运行时可以被改变。initial_focus用于指定初始聚焦的控件。见右图所示对话框及以下程序代码:
sample:dialog{label="简单的对话框实例";:text{label="祝您成功!";}:button{key="accept";label="确认";简单的对话框实例
is_default=true;fixed_width=true;alignment=centered;}}第12章对话框设计清华CAD二次开发LISP12.2.3装饰性和信息类控件装饰性和信息类控件无行为动作,也不能被选择,主要用于显示信息、加强视觉效果或协助对话框布局。1.图像(Image)图像是在一个矩形区域内显示矢量图形、色彩填充块等的控件。它的类型是image。有alignment、aspect_ratio、color、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、mnemonic、width11个属性。图像的值是点取图像时的位置,通过AutoLISP程序可以获取该位置,从而根据这些位置设计相应的动作。必须指定图像的width、height或二者之一和aspect_ratio属性。图像的内容由AutoLISP程序确定。第12章对话框设计清华CAD二次开发LISP图12-18所示图像的定义如下::image{width=30;aspect_ratio=0.6;key="rect";color=graphics_background;}图12-18图像
注意:图像的内容由AutoLISP程序确定。第12章对话框设计清华CAD二次开发LISP2.文本(Text)文本控件通常用于显示提示或警告信息。文本的类型是text。有alignment、fixed_height、fixed_width、height、is_bold、key、label、value、width9个属性。属性label和value都可以存放用户要显示的信息,且外观相同。但是,label存放的信息是不变的,value存放的信息可以由AutoLISP程序赋以新的内容。若label和value同时存放了某些信息时,label的信息不予显示。例12-2定义了用属性label存放显示信息的对话框,外观见图12-19。【例12-2】用属性label存放显示信息的对话框。iwarn1:dialog{label="警告信息";:text{label="选取的对象不是直线,请重新选择!";}ok_cancel;}图12-19文本第12章对话框设计清华CAD二次开发LISP
3.部分文本(text_part)部分文本的类型是text_part,只有label一个属性。单独的部分文本与只含label属性的文本(Text)等效。多个部分文本可以组成单行的文本或段落,弥补了文本(Text)只能单行的不足,例12-3定义了显示两行信息的对话框,外观见图12-20。【例12-3】定义多行文本的对话框。warn2:dialog{label="警告信息";:text_part
{label="选取的对象不是直线,";}:text_part
{label="请重新选择!";}
ok_cancel;}图12-20部分文本第12章对话框设计清华CAD二次开发LISP4.串联(Concatenation)
串联的类型是Concatenation,没有属性,它的作用是把多个部分文本组成单行的文本。例12-4是将两个部分文本组成单行的文本的实例,结果见图12-21。//例12-4将两个部分文本组成单行的文本。Warn3:dialog{label="警告信息";:concatenation
{:text_part{label="选取的对象不是直线,";}:text_part{label="请重新选择!";}}ok_cancel;}图12-21串联后的部分文本第12章对话框设计清华CAD二次开发LISP5.段落(Paragraph)段落的作用是把多个部分文本组成段落,它的类型是paragraph,没有属性。例12-5是将三个部分文本组成一个段落的实例,结果见图12-22。warn:dialog{label="警告信息";:paragraph{:concatenation{:text_part{label="选取的对象不是直线,";}:text_part{label="请重新选择!";}}:text_part{label="用单点方式选择直线!";}}ok_cancel;}图12-22段落文本第12章对话框设计清华CAD二次开发LISP6.间隔(Spacer、Spacer_0、Spacer_1)间隔(Spacer)也称空白衬垫,是一种特殊的控件,它具有不可见的大小和对齐方式,用来调整其它一些控件之间的间隔。如果不用间隔,系统将采用均匀的布局,因此,间隔只用在需要局部调整控件间隙的地方。间隔控件的类型是spacer,有alignment、fixed_height、fixed_width、height、width5个属性。
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的按钮。第三行插入间隔Spacer_1,相当于增加了一个宽度为1的按钮,再均匀分布。第四行插入宽度为4的间隔Spacer,相当于增加了一个宽度为4的按钮,再均匀分布。该对话框的定义见例12-6。第12章对话框设计清华CAD二次开发LISP图12-23用spacer、spacer_0、spacer_1调整控件间的间隙
Spacer_0Spacer_1Spacer宽度=4
【例12-6】用spacer、spacer_0、spacer_1调整控件间的间隙spcr:dialog{label=“调整间隔实验”;: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;}}第12章对话框设计清华CAD二次开发LISP: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;}}第12章对话框设计清华CAD二次开发LISP: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;}第12章对话框设计清华CAD二次开发LISP12.2.4AutoCAD预定义的控件
AutoCAD不仅预定义了25种控件的类型,还定义了以下8个最常用的控件。定义对话框时,可直接使用这些控件,但是在编写AutoLISP驱动程序时,必须要准确地使用其关键字(大小写字母不等价)。1.ok_only(确认)按钮单个的OK按钮,关键字为"accept"。用于确认施加在对话框上的操作。2.ok_cancel(确认和取消)按钮
OK和Cancel两个按钮组成的行,OK按钮的关键字同前,Cancel按钮的关键字为"cancel"。Cancel按钮用于放弃施加在对话框上的操作。3.errtile(出错信息)控件
Errtile属于Text类型的控件,其标签为空,关键字为"error"。显示该控件属性value的内容。属性value的值由AutoLISP程序确定。第12章对话框设计清华CAD二次开发LISP【例12-7】定义图12-24所示出错信息的对话框的源代码和AutoLISP驱动程序。//用DCL定义对话框,文件名为12-7.dcl,存放在d盘的example\dcl目录下。error:dialog{label="出错信息";
errtile;
ok_only;
}图12-24出错信息对话框;用AutoLISP驱动对话框的程序,文件名为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""长度必须大于0!")(action_tile"accept""(done_dialog)")(start_dialog)(unload_dialogid)(princ))第12章对话框设计清华CAD二次开发LISP4.ok_cancel_help(确认、取消和帮助)控件
OK、Cancel和Help三个按钮组成的行,OK、Cancel按钮的关键字同前,Help按钮的关键字为"help"。【例12-8】定义图12-25所示含有"OK"、"Cancel"和"Help"三个按钮的对话框的源代码和AutoLISP驱动程序。//用DCL定义对话框,文件名为12-8.dcl,存放在d盘的example\dcl目录下。hlp:dialog{label="了解直线命令的用法";
ok_cancel_help;}图12-25含有ok_cancel_help控件的对话框
第12章对话框设计清华CAD二次开发LISP;用AutoLISP驱动对话框的程序,文件名为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按钮的活动是调用AutoLISP的help函数,了解直线命令的用法。
(action_tile"accept""(done_dialog)")(action_tile"cancel""(done_dialog)")(start_dialog)(unload_dialogid)(princ))第12章对话框设计清华CAD二次开发LISP5.ok_cancel_help_errtile(确认、取消、帮助和出错)控件该控件为OK、Cancel和Help共3个按钮组成的行,出错信息写在该行的下面。这4个控件的关键字同前。控件errtile需要在AutoLISP驱动对话框程序中用set_tile函数为其属性value赋值,例如:
(set_tile"error""无效的输入")第12章对话框设计清华CAD二次开发LISP//定义ok_cancel_help_errtile对话框,文件名为error.dclerror:dialog{label="出错信息";
ok_cancel_help_errtile;}(defunc:erdlg();AutoLISP驱动程序
(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))第12章对话框设计清华CAD二次开发LISP6.ok_cancel_help_info(确认、取消、帮助和信息)控件该控件为OK、Cancel、Help和info四个按钮组成的行,OK、Cancel和Help的关键字同前。info按钮的关键字为"info",需要在AutoLISP驱动程序定义info按钮的活动,比如,弹出一个用text控件为主的显示一些信息的对话框。
第12章对话框设计清华CAD二次开发LISP12.3控件的属性控件的外观和功能是由该控件的属性确定的。属性如同程序中的变量,具有名字和值。属性的值有整型、实型和字符串类型,有的属性值只能是预定义的保留字。实数的小数点前必须有数字,例如".1"是错的,应为"0.1"。字符串是由双引号括起的文本,与AutoLISP一样,用"\"做转义符。预定义的保留字有true、false、left、centered、right、top和bottom,它们必须小写。AutoLISP程序在运行中可以改变控件的一些属性。控件的类型不同,其属性的数量也不同。有些属性在所有的控件中的含义是相同的,有些属性在不同的控件中含义也不同。AutoCAD为用户预定义了35个属性。第12章对话框设计清华CAD二次开发LISP按字母顺序依次是:1.action
确定控件的活动,活动是是用双引号括起的AutoLISP表达式或函数。表达式中不能含有AutoCAD的命令。当选中该控件时,执行相应的AutoLISP表达式或函数。AutoLISP驱动程序可以设置控件的一些属性,且覆盖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第12章对话框设计清华CAD二次开发LISP3.allow_accept
若该属性的值为true,按下接受键(如Enter键),就如同单击了默认按钮(is_default为true的按钮)。相关的控件有:edit_box、image_button、list_box
默认值:false4.aspect_ratio
图像控件的宽与高之比,与宽、高之一确定图像控件的大小。若该属性的值为零,则默认为将图像控件调整为最合适的宽与高之比。相关的控件有:image、image_button
默认值:无5.big_increment
确定滑动条最大增量的整数值,取值范围在属性min_value和属性max_value之间。相关的控件有:slider
默认值:整个范围的1/10。第12章对话框设计清华CAD二次开发LISP6.children_alignment
与属性alignment的功能基本相同,区别在于它只针对子控件组群而言,确定组群内部控件的定位方式,控件自身的alignment属性优先于该属性。相关的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row
默认值:列类型控件为left,行类型控件为centered7.children_fixed_height
功能与fixed_height相同,不过它是控件组群的属性,仅作用于组群内所有的控件并作为它们的默认值,低于属性fixed_height的优先级。相关的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row
默认值:false第12章对话框设计清华CAD二次开发LISP8.children_fixed_width
功能与fixed_width相同,不过它是控件组群的属性,仅作用于组群内所有的控件并作为它们的默认值,默认值为flase,低于属性fixed_width的优先级。相关的控件有:boxed_column、boxed_radio_column、boxed_radio_row、boxed_row、column、radio_column、radio_row、row
默认值:false9.color
确定图像背景、矢量或填充块的颜色。普通颜色与AutoCAD的标准颜色名(red、yellow等)和颜色号所定义的颜色含义相同,此外还有表12-1所示的特殊颜色。相关的控件有:image、image_button。默认值:7(白色)第12章对话框设计清华CAD二次开发LISP表12-1特殊的颜色
颜色值预定义含义
-2Graphics_background当前图形屏幕的背景色
-15Dialog_background当前对话框背景色
-16Dialog_foreground当前对话框前景色
-18Dialog_lineCurrent当前对话框线条颜色10.edit_limit
确定编辑框可容纳的最多字符数,最大值为256。相关的控件有:edit_box。默认值:132第12章对话框设计清华CAD二次开发LISP11.edit_width
确定编辑框的宽度,以字符为单位。若该属性的值默认为0,编辑框的宽度将是不固定的,布局时可自动扩充到整个可用空间。相关的控件有:edit_box、popup_list
默认值:扩充到整个可用空间。12.fixed_height
当该属性的值为true时,属性height有效,否则做相关调整。相关的控件有:全部控件。默认值:flase13.fixed_width
当该属性的值为true时,属性width有效,否则做相关调整。相关的控件有:全部控件。默认值:flasefixed_width=true;width=10;fixed_width=false;width=10;第12章对话框设计清华CAD二次开发LISP12.fixed_width_font
当该属性的值为true时,对于列表框或下拉列表框内的字符,在行距、列距不变的情况下减小字符之间的间隔(字符尽可能地大)。相关的控件有:list_box、popup_list。默认值:flase15.height
确定控件的最小高度,数值类型是整数或实数型。单位为屏幕字符的最大高度。如果属性fixed_height的值为ture,height是控件的实际高度,否则,在自动布局时,控件的实际高度会超出该值。通常,不需指定该值,系统能自动采用合适的数值(图像及图像按钮除外)。相关的控件有:全部控件。默认值:无16.initial_focus
确定对话框内初始被聚焦的控件。相关的控件有:dialog。默认值:无Flaseture第12章对话框设计清华CAD二次开发LISP17.is_bold
若该属性为true,该控件的字符用黑体显示。相关的控件有:text。默认值:false18.is_cancel
若该属性为true,所选中的按钮与按取消键(如Esc)的作用相同。对话框中只能有一个按钮的is_cancel为true,且点取该按钮后,取消施加在对话框上的操作并终止对话框。相关的控件有:button。默认值:false19.is_default
若该属性为true,单击该按钮与按接收受键(如Enter)的作用相同。对话框中只能有一个按钮将该属性设置为true。相关的控件有:button。默认值:false第12章对话框设计清华CAD二次开发LISP20.is_enabled
若该属性为true,控件有效,否则,控件失效(变灰)。相关的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、toggle。默认值:true21.is_tab_stop
确定控件是否可以用"Tab"选择聚焦,若该属性为false时,按Tab键时,将跳过该控件到下一个控件。相关的控件有:button、edit_box、image、image_button、list_box、popup_list、radio_button、toggle。默认值:trueflaseture第12章对话框设计清华CAD二次开发LISP22.key
确定控件的关键字,关键字是控件的标识,在一个对话框中的关键字必须是唯一的。关键字的值为字符串,且大小写不等价。AutoLISP程序根据控件的关键字施加相应控件的操作。相关的控件有:Button、edit_box、image、image_button、list_box、popup_list、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_button、slider、text、text_part、toggle。默认值:无第12章对话框设计清华CAD二次开发LISP24.layout
确定slider(滑动条)的方位是horizontal(水平)还是vertical(垂直),默认值为horizontal。相关的控件有:slider。默认值:horizontal25.list
确定列表框或下拉列表框内的初始内容(字符串),行之间用"\n"分隔,行内用制表符"\t"分隔。相关的控件有:list_box、popup_list。默认值:无26.max_value
确定滑动条返回的最大值,是-32768~32767之间的整数。相关的控件有:slider。默认值:10000第12章对话框设计清华CAD二次开发LISP27.min_value
确定滑动条返回的最小值,是-32768~32767之间的整数。相关的控件有:slider。默认值:028.mnemonic
定义控件的热键,即助记符。助记符是控件标签中带下划线的字符。也可以在属性label中用"&"定义助记符。若助记符是为控件组群设置的,则焦点自动落在第一个is_tab_stop属性为true的控件上。相关的控件有:button、edit_box、image、list_box、popup_list、radio_button、slider、toggle。默认值:无29.multiple_select
若该属性的值为true,允许在列表中选择多个选项。相关的控件有:list_box。默认值:false第12章对话框设计清华CAD二次开发LISP30.password_char
确定用于屏蔽用户输入的字符,即用该字符代替实际输入的字符显示在编辑框内,达到为输入内容保密的目的。相关的控件有:edit_box
默认值:无31.small_increment
确定滑动条最小增量的整数值,取值范围在min_value和max_value之间。相关的控件有:slider
默认值:整个范围的1/100。32.tabs
确定列表框或下拉列表框内的制表符"\t"停止的位置(字符个数)。相关的控件有:list_box、popup_list
默认值:无第12章对话框设计清华CAD二次开发LISP33.tab_truncate
若该属性的值为true,超出tabs属性指定的字符被截掉(从第tabs个字符起被截掉)。相关的控件有:list_box、popup_list
默认值:false34.value
控件初始状态时的值。值的含义由控件类型所决定。例如,对话框的value可以作为标题,编辑框的value作为它的初始值,互锁按钮或切换开关的value为1则表示处于打开的状态,列表或下拉列表的value确定了初始被选中的状态。该属性的值可通过AutoLISP程序被访问、设置或修改。相关的控件有:dialog、edit_box、image、list_box、popup_list、radio_button、slider、text、toggle。默认值:无第12章对话框设计清华CAD二次开发LISP35.width
确定控件的最小宽度,数值类型是整数或实数型。宽度单位为大小写字符的平均宽度。如果属性fixed_width的值为ture,width是控件的实际宽度,否则,在自动布局时,控件的实际宽度会超出该值。通常,不需特别指定该值,系统能自动采用合适的数值(图像及图像按钮除外)。相关的控件有:全部控件。默认值:无第12章对话框设计清华CAD二次开发LISP12.4对话框设计的原则与规范设计一个对话框除了考虑它的功能外,还应该考虑它的外观和是否便于操作,需要遵循一定的设计准则。12.4.1一般原则1.美观对话框的外观是非常重要的。杂乱无章的对话框会使操作人员难以操作。因此,必须从用户的观点出发,设计既美观又实用的对话框。2.便于操作用户关心的是控件的位置和使用是否便于操作。经常用到的控件,应尽可能安排在较为突出的位置。相关数据的控件,例如点的X、Y、Z坐标,应尽量位于相邻的位置。3.语言文字尽管对话框可采用图形界面,但大部分的信息还是需要文字描述的,如对话框的标题,按钮的标签等。因此文字说明既要准确,又要便于理解。
第12章对话框设计清华CAD二次开发LISP4.控件设计一致性对话框的样式、风格不仅在具体的应用程序内部保持一致,而且应该与相关的应用程序保持一致,应尽量与AutoCAD系统的对话框风格一致,以便操作人员容易掌握。图12-26插入图块对话框5.便于操作控制对话框相对于命令行的优点是操作顺序不受限制,例如图12-26所示插入图块的对话框,图块的名字、插入基点、比例、旋转角度的输入顺序是随意的。但有些数据存在着一定的制约关系,例如图块的插入基点、比例、旋转角既可以用鼠标在屏幕上确定,也可以在相应的编辑框输入数据,但不需要同时采用这两种方式。利用切换开关的状态,即可很好地解决这个问题。若打开切换开关,相应的编辑框被禁用(变灰),就只能采用通过鼠标在屏幕上确定的方法。第12章对话框设计清华CAD二次开发LISP
若嵌套式地打开多个对话框,应采用层叠方式,保留已打开的对话框,且最后打开的对话框位于最上层。这样便于了解这些对话框之间的关联状况,也表明每个对话框来自何处,归于何处。6.实时反馈必须确保操作人员实时看到施加到对话框上的每一步操作,例如数据更新、颜色改变。当某一选择排斥另外几个选择时,被排斥的控件应立即变灰并禁止使用。7.宽容性对话框应允许操作人员犯错误,例如输入了类型错误或超出范围的数据,不要因错误的输入导致系统退出或崩溃,例如,通过errtile控件显示出错信息,通过alert函数用报警框报告错误的性质,向操作人员指出正确的操作。第12章对话框设计清华CAD二次开发LISP8.提供帮助
"帮助"对操作人员至少在心理上是一个强大的支持,同时在线帮助对操作人员的确起着重要的指导作用。因此,应用程序的主对话框应设置Help按钮。在多数情形下,Help按钮可以直接调用acad_help.dlg来显示标准的AutoCAD的Help对话框。9.测试在构造对话框时,每增加一个功能应该进行测试,这样可确保对话框预期的布局和语法上的正确性。而且较小的改变即使出现错误也容易跟踪和改正。
第12章对话框设计清华CAD二次开发LISP12.4.2通用规范1.布局将对话框内的控件按逻辑关系组成加框行或加框列,相关的编辑框或列表框应水平或垂直地对齐,这样便于操作人员按照从左至右或从上到下的方向进行操作,也便于用Tab键在控件之间切换。同样,行或列组件也应水平或垂直方向对齐,在组群之间不要保留太大的间隔,必要时应优先考虑向右方扩展。2.对话框的大小和位置对话框的大小应以能简洁明了地显示必要的信息为宜。如果对话框尺寸可能超出作图区域时,应考虑是否将单个的对话框分解为嵌套的多个对话框。对话框的位置应该在作图区域的中心,这也是对话框的默认位置。
3.控件的禁止使用根据特定的条件,如果不再需要某些控件,应立即将这些控件设置为失效的状态,这样可以避免无效的输入。对于这些被禁用的控件,不能因为现在被禁用而改变其原有的数值。第12章对话框设计清华CAD二次开发LISP4.对话框嵌套对于嵌套的对话框,应做到子对话框小于父对话框。嵌套深度一般不要超过三层,除非第四层是报警框。父对话框按钮标签末尾的字符应为"…",表示启动子对话框。5.隐藏对话框隐藏对话框时,对话框按钮标签末尾的字符应为"<",表示隐藏对话框进行交互操作。6.默认值尽可能为控件提供默认值,默认值应是最常用到的或最合理的。也可以将该控件在上一次运行时的值作为控件的默认值。第12章对话框设计清华CAD二次开发LISP7.键盘输入应该将控件设置为可用Tab键在控件之间切换聚焦的状态。如果操作平台支持助记符,就应尽可能为每一个控件定义供助记符。8.颜色推荐使用AutoCAD的标准颜色。9.标准化尽可能使用AutoCAD预定义的控件类型和"OK"、"Cancel"等标准控件来构造对话框。第12章对话框设计清华CAD二次开发LISP12.4.3预定义控件的使用规范1.按钮(Button)
按钮的标签应明确表达其动作效果。与按钮关联的动作应立即产生且为可视的。如标签末尾为"…"的按钮表示将启动子对话框,标签末尾为"<"的按钮表示将隐藏对话框。2.编辑框(Editbox)
编辑框的标签应以":"结束。编辑框的宽度应与输入数据的平均长度相当。如果难以确定编辑框的宽度时,可设置用于输入数值的编辑框的宽度为10,用于输入字符的编辑框的宽度为20。如果限制了输入字符的数量,应该在编辑框的邻近位置用文本(text)加以说明。3.列表(Listbox)(1)列表的标签应明确的说明列表的内容。(2)列表框的宽度应不小于该表其中最长的表项,因为列表框不象编辑框那样,字符可以水平方向滚动。(3)表项的顺序应按字母顺序排列。(4)当表项的长度固定且项数很少时,可考虑用互锁列来代替。
第12章对话框设计清华CAD二次开发LISP4.下拉列表(1)下拉列表的标签应以":"结尾。为了便于布局,可以省去左边的标签而改用文本控件标注在右边,不过此时就不能用助记符聚焦该下拉列表。(2)下拉列表不宜过长,不宜超过16项。5.图像按钮和图像控件(1)相同的图示内容不管出现在图像按钮还是图像中,它的含义必须一致。(2)作为选择用途的图像按钮,应该用简短的文字补充说明。6.互锁按钮及互锁选行或互锁选列互锁列美观且易使用(鼠标上下移动距离小),故推荐优先使用;互锁行适用于按钮数量较少(2~4)的场合。7.滑动条(slider)
应根据滑动条的长度及取值范围来设置滑动条的增量。可以增设text控件显示滑动条的当前值。最好将滑动条与编辑框互联,既可以使之互动,又可以在编辑框看到滑动条的当前值。
第12章对话框设计清华CAD二次开发LISP8.组群框组群框是指加框的列或行。对于彼此相关的控件,应考虑组成一个组群框。标签应明确指出该组群的特征。不要滥用组群框,例如加框列的外层还有组群框或者为单独的按钮增加组群框。9.文本文本可以作为控件标签和值的补充说明,也可用来显示状态、警告或错误信息;但应将其放置到合理的位置。10.切换开关尽管切换开关不象互锁按钮那样是互相排斥的,但是当它们同属于某一主题时,最好用组群框将其组合,并用标签来说明主题。当切换开关用来"激活"或"禁用"其它控件时,应将其放在醒目的位置,如放在相应控件的右边或组群框的左上角。第12章对话框设计清华CAD二次开发LISP12.5对话框控制语言对话框控制语言(DCL)是定义对话框的语言。12.5.1对话框文件对话框文件是用DCL语言定义对话框的文件,是ASCII码的文本文件。文件的扩展名为".dcl",因此也被称做DCL文件。1.base.dcl与acad.dcl文件这是两个非常重要的对话框文件,它们在AutoCAD的support子目录下。(1)BASE.DCL
为用户预定义了Button、Editbox等基本控件、Row、Column等组件和ok_cancel、ok_cancel_help_info等标准控件。该文件是所有其它DCL文件的基础,被所有其它的DCL文件自动引用,因此不要修改该文件。(2)ACAD.DCLACAD.DCL文件定义了AutoCAD系统的大部分标准对话框。是编写DCL文件的很好的学习参考资料。用户不应直接引用ACAD.DCL文件,如果需要创建类似的对话框,可将ACAD.DCL中的相应内容复制到自己定义的DCL文件中。该文件与AutoCAD系统密切相关,因此不要修改该文件。第12章对话框设计清华CAD二次开发LISP2.用户定义的对话框文件用户定义的对话框文件可以含以下三部分内容:(1)包含其它DCL文件。格式为:@include"路径\\DCL文件名",必须指定DCL文件的全名和扩展名,例如:@include"test.dcl",如果未指明路径,系统在当前目录中搜索。图12-27所示是DCL层次性引用结构。其中user1.dcl和user2.dcl彼此独立,而user3.dcl引用了定义在user1.dcl文件中的控件。图12-27DCL文件层次性引用结构(2)典型控件及行、列组合控件的定义。(3)对话框定义。一个对话框文件可定义多个对话框。
第12章对话框设计清华CAD二次开发LISP12.5.2DCL文件的结构图12-28所示为绘制圆的对话框,它有两个行(row);第一行是由图像控件和加框列组件组成的,第二行为ok_cancel组合控件;加框列是由三个编辑框组成的。该对话框的结构如图12-29所示。
图12-28绘制圆对话框图12-29绘制圆对话框的结构图
从图12-29可以看到,对话框是一个树型结构,对话框是这棵树的树根,行、列组件是树枝,基本控件和组合控件是树叶。
第12章对话框设计清华CAD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 储煤场土地使用权转让合同(04版)
- 代理佣金协议范本标准版
- 店铺次转租协议
- 2024年度财务管理加盟合同:规范财务体系提升效益
- 2024版地铁隧道防水施工合同
- 电梯门套2024年度供货及安装服务合同
- 二零二四年度房屋买卖合同:新建住宅商品房购买合同
- 抵押借款协议书范例
- 二零二四年份节日装饰灯光设计与施工合同
- 二零二四年度科研项目代理合同
- 2024年全国版图知识竞赛(小学组)考试题库大全(含答案)
- 拟建建筑物地质差异较大时的地基处理措施
- 钢制汽车零件感应淬火金相检验
- 药学服务培训课题
- 大学生生涯发展展示
- 无人机集群作战分析报告
- 《水力发电》课件
- 口腔护理会阴护理ppt
- 即食鸡肉行业前景分析
- 保密管理的组织架构与职责分工
- 主题班会《感恩父母·老师》课件
评论
0/150
提交评论