




已阅读5页,还剩143页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
,第12章对话框设计,12.1概述1.对话框的特点对话框形象、直观,可以随意输入、随时修改,鼠标、键盘并用,是一种深受用户欢迎的界面。对话框用DCL语言(DialogControlLanguage)定义,得到DCL类型的文件,用AutoLISP或C程序驱动。AutoCAD提供了两个重要的DCL文件:ACAD.DCL存放AutoCAD系统定义的对话框,BASE.DCL为用户提供了一些常用的对话框标准控件。2.对话框的组成对话框由若干控件组成,见图12-1。控件可以是按钮、切换开关、编辑框、列表或图像等。,图12-1对话框的组成,3.实例【例12-1】用DCL定义一个简单的对话框。进入VLISP环境,将下列源代码输入到文本编辑窗口,选取下拉菜单ToolsInterfaceToolPreviewDCLinEditor,即可看到图12-2所示该对话框的外观。sample:dialoglabel=简单的对话框实例;:textlabel=祝您成功!;:buttonkey=accept;label=确认;is_default=true;fixed_width=true;alignment=centered;图12-2简单的对话框实例,12.2对话框控件控件是构造对话框的元件。AutoCAD为用户预定义了23种控件和8个常用的固定控件。每一种控件属于一种类型。每一个控件有多个属性。每个属性都有一个名字和值。多数的属性都有它的默认值。一个控件具有哪些属性是由它的类型所决定的。控件的这些属性确定了它的外观形式和动作行为。,例如上例中的确认按钮,它的类型是button。当它的属性label=确认、key=accept、is_default=true、fixed_width=true、alignment=centered,其余属性为默认值时,就确定了图12-2所示的外观。按照控件的特点可以将控件分为以下几类。,12.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(真)。参照例121中确认按钮的定义。,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个属性。其标签显示在该框的左边,它的默认宽度为12个字符,当输入的字符多于12时,文本自动向左滚动,框内的字符串即为编辑框的值(value)。图12-3所示的编辑框定义如下::edit_boxkey=test_text;label=长度:;value=100.0;width=12;图12-3编辑框,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个属性。图像按钮很有用的一个特性是,通过AutoLISP程序可以获取被单击时的位置,从而根据不同的位置设计相应的动作。图12-4所示图像按钮定义的如下::image_buttonkey=test_image_button;width=10;aspect_ratio=1.5;图12-4图像按钮,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个属性。列表内含有若干行可供选择的文本,当表的内容超出表的范围时,将自动在表的右侧出现一个滑动条。,列表的标签显示在列表框的上方作为文字说明。列表的值是被选中的文本行的序号,序号从0开始。属性multiple_select为true时,允许同时选取框内的多行文本。,图12-5列表框,图12-5所示对话框的列表定义如下::list_boxlabel=齿轮种类;list=圆柱直齿n圆柱斜齿n圆锥直齿n螺旋伞齿n蜗轮n蜗杆n;value=2;key=gear_list;height=6;,图12-5列表框,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个属性。下拉列表具有编辑框和列表框的两个特点,初始状态象一个编辑框,标签显示在框的左边,框内只有一行字符和一个向下的箭头,见图12-6(a)。单击框内箭头,将弹出一个列表,见图12-6(b),选取表内文本之后,列表自动关闭,在编辑框内显示选中的内容。下拉列表的值是被选中的文本行的序号。,图12-6所示下拉列表的定义如下::popup_listlabel=齿轮种类:;list=圆柱直齿n圆柱斜齿n圆锥直齿n螺旋伞齿n蜗轮n蜗杆n;key=gear_list;,(a)(b)图12-6下拉列表,6.互锁按钮(RadioButton)互锁按钮的类型是radio_button。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、mnemonic、value、width12个属性。互锁按钮不宜能单独使用,必须由多个这样的按钮以行或列的形式组成一组,同组的按钮之间是互锁的,只能从中选取一个。互锁按钮的标签显示在按钮的右边。图12-7所示互锁按钮的定义如下::radio_buttonkey=unit_mm;label=毫米;,图12-7互锁按钮,7.滑动条(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所示滑动条的定义如下::sliderkey=test_slider;min_value=0;max_value=100;,图12-8滑动条,8.切换开关(Toggle)切换开关又称作复选开关、乒乓开关,它的类型是toggle。有action、alignment、fixed_height、fixed_width、height、is_enabled、is_tab_stop、key、label、value、width11个属性。切换开关与互锁按钮不同的是它可以单独使用,同组的切换开关各自是独立的。标签显示在开关的右边。图12-9所示切换开关的定义如下::togglelabel=正交方式;key=ortho_mode;value=1;,图12-9切换开关,12.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-10所示列的定义如下::column:buttonlabel=光标拾取;key=pick;:edit_boxlabel=x=;width=12;key=x;mnemonic=x;value=0.0;,:edit_boxlabel=y=;width=12;key=y;mnemonic=y;value=0.0;,图12-10列,2.加框列(BoxedColumn)顾名思义加框列就是加了一个矩形框的列。加框列的类型是boxed_bolumn。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。如果将图12-10所示列的定义的第一行:column改为:boxed_columnlabel=左下角点;,即可定义一个加框列,见图12-11。,图12-11加框列,3.互锁列(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-12所示互锁列的定义如下::radio_columnkey=size;:radio_buttonlabel=A,:radio_buttonlabel=A,图12-12互锁列,图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_columnlabel=幅面规格;,即可定义一个加框互锁列,见图12-13。,5.行(Row)行是将若干控件构成水平分布的一个组件。行的类型是row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。,图12-14行,图12-14所示行的定义如下::row:togglelabel=纵向;key=dir;:edit_boxlabel=W(mm)=;mnemonic=W;key=w;value=420;:edit_boxlabel=H(mm)=;mnemonic=H;key=h;value=297;,6.加框行(BoxedRow)加框行就是加了一个矩形框的行。加框行的类型是boxed_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。如果将图12-14所示行的定义的第一行:row改为:boxed_rowlabel=图纸幅面;,即可定义一个加框行,见图12-15。,图12-15加框行,7.互锁行(RadioRow)若干个互锁按钮组成的行即为互锁行。互锁行的类型是radio_row。有alignment、children_alignment、children_fixed_height、children_fixed_width、fixed_height、fixed_width、height、label、width9个属性。互锁行中只能有一个选钮的值为1。图12-16所示互锁行的定义如下::radio_rowkey=size;:radio_buttonlabel=A,图12-16互锁行,8.加框互锁行(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_rowlabel=幅面规格;,即可定义一个加框互锁行,见图12-17。,图12-17加框互锁行,9.对话框(dialog)对话框本身也可以看作是一种控件,它是对话框的主体,不能单独使用,且至少要有一个确认(OK)或取消(Cancel)按钮。它的类型是dialog,有initial_focus、label、value3个属性。标签是对话框的标题。属性value也可以作为标题,这样的标题在程序运行时可以被改变。initial_focus用于指定初始聚焦的控件。见右图所示对话框及以下程序代码:sample:dialoglabel=简单的对话框实例;:textlabel=祝您成功!;:buttonkey=accept;label=确认;简单的对话框实例is_default=true;fixed_width=true;alignment=centered;,12.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-18所示图像的定义如下::imagewidth=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、value、width9个属性。属性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)部分文本的类型是text_part,只有label一个属性。单独的部分文本与只含label属性的文本(Text)等效。多个部分文本可以组成单行的文本或段落,弥补了文本(Text)只能单行的不足,例12-3定义了显示两行信息的对话框,外观见图12-20。【例12-3】定义多行文本的对话框。warn2:dialoglabel=警告信息;:text_partlabel=选取的对象不是直线,;:text_partlabel=请重新选择!;ok_cancel;,图12-20部分文本,4.串联(Concatenation)串联的类型是Concatenation,没有属性,它的作用是把多个部分文本组成单行的文本。例12-4是将两个部分文本组成单行的文本的实例,结果见图12-21。/例12-4将两个部分文本组成单行的文本。Warn3:dialoglabel=警告信息;:concatenation:text_partlabel=选取的对象不是直线,;:text_partlabel=请重新选择!;ok_cancel;,图12-21串联后的部分文本,5.段落(Paragraph)段落的作用是把多个部分文本组成段落,它的类型是paragraph,没有属性。例12-5是将三个部分文本组成一个段落的实例,结果见图12-22。warn:dialoglabel=警告信息;:paragraph:concatenation:text_partlabel=选取的对象不是直线,;:text_partlabel=请重新选择!;:text_partlabel=用单点方式选择直线!;ok_cancel;,图12-22段落文本,6.间隔(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-23用spacer、spacer_0、spacer_1调整控件间的间隙,Spacer_0Spacer_1Spacer宽度=4,【例12-6】用spacer、spacer_0、spacer_1调整控件间的间隙spcr:dialoglabel=“调整间隔实验”;:row/没有插入间隔:buttonlabel=A0;key=a0;fixed_width=true;:buttonlabel=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=C1;key=c1;fixed_width=true;:buttonlabel=C2;key=c2;fixed_width=true;,:row:spacer/插入宽度为4的间隔Spacerwidth=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.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-7】定义图12-24所示出错信息的对话框的源代码和AutoLISP驱动程序。/用DCL定义对话框,文件名为12-7.dcl,存放在d盘的exampledcl目录下。error:dialoglabel=出错信息;errtile;ok_only;,图12-24出错信息对话框,;用AutoLISP驱动对话框的程序,文件名为12-7.lsp。(defunc:erdlg()(if(setqid(load_dialogd:exampledcl12-7)0)(exit)(if(not(new_dialogerrorid)(exit)(set_tileerror长度必须大于0!)(action_tileaccept(done_dialog)(start_dialog)(unload_dialogid)(princ),4.ok_cancel_help(确认、取消和帮助)控件OK、Cancel和Help三个按钮组成的行,OK、Cancel按钮的关键字同前,Help按钮的关键字为help。【例12-8】定义图12-25所示含有OK、Cancel和Help三个按钮的对话框的源代码和AutoLISP驱动程序。/用DCL定义对话框,文件名为12-8.dcl,存放在d盘的exampledcl目录下。hlp:dialoglabel=了解直线命令的用法;ok_cancel_help;,图12-25含有ok_cancel_help控件的对话框,;用AutoLISP驱动对话框的程序,文件名为12-8.lsp。(defunc:hlpdlg()(setqid(load_dialogd:example12-8.dcl)(if(id0)(exit)(if(not(new_dialoghlpid)(exit)(action_tilehelp(helpline);定义help按钮的活动是调用AutoLISP的help函数,了解直线命令的用法。(action_tileaccept(done_dialog)(action_tilecancel(done_dialog)(start_dialog)(unload_dialogid)(princ),5.ok_cancel_help_errtile(确认、取消、帮助和出错)控件该控件为OK、Cancel和Help共3个按钮组成的行,出错信息写在该行的下面。这4个控件的关键字同前。控件errtile需要在AutoLISP驱动对话框程序中用set_tile函数为其属性value赋值,例如:(set_tileerror无效的输入),/定义ok_cancel_help_errtile对话框,文件名为error.dclerror:dialoglabel=出错信息;ok_cancel_help_errtile;,(defunc:erdlg();AutoLISP驱动程序(if(setqid(load_dialogd:exampledclerror)0)(exit)(if(not(new_dialogerrorid)(exit)(set_tileerror无效的输入)(action_tileaccept(done_dialog)(start_dialog)(unload_dialogid)(princ),6.ok_cancel_help_info(确认、取消、帮助和信息)控件该控件为OK、Cancel、Help和info四个按钮组成的行,OK、Cancel和Help的关键字同前。info按钮的关键字为info,需要在AutoLISP驱动程序定义info按钮的活动,比如,弹出一个用text控件为主的显示一些信息的对话框。,12.3控件的属性控件的外观和功能是由该控件的属性确定的。属性如同程序中的变量,具有名字和值。属性的值有整型、实型和字符串类型,有的属性值只能是预定义的保留字。实数的小数点前必须有数字,例如.1是错的,应为0.1。字符串是由双引号括起的文本,与AutoLISP一样,用做转义符。预定义的保留字有true、false、left、centered、right、top和bottom,它们必须小写。AutoLISP程序在运行中可以改变控件的一些属性。控件的类型不同,其属性的数量也不同。有些属性在所有的控件中的含义是相同的,有些属性在不同的控件中含义也不同。AutoCAD为用户预定义了35个属性。,按字母顺序依次是: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,3.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。,6.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,8.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-1特殊的颜色,颜色值预定义含义-2Graphics_background当前图形屏幕的背景色-15Dialog_background当前对话框背景色-16Dialog_foreground当前对话框前景色-18Dialog_lineCurrent当前对话框线条颜色,10.edit_limit确定编辑框可容纳的最多字符数,最大值为256。相关的控件有:edit_box。默认值:132,11.edit_width确定编辑框的宽度,以字符为单位。若该属性的值默认为0,编辑框的宽度将是不固定的,布局时可自动扩充到整个可用空间。相关的控件有:edit_box、popup_list默认值:扩充到整个可用空间。12.fixed_height当该属性的值为true时,属性height有效,否则做相关调整。相关的控件有:全部控件。默认值:flase13.fixed_width当该属性的值为true时,属性width有效,否则做相关调整。相关的控件有:全部控件。默认值:flase,fixed_width=true;width=10;,fixed_width=false;width=10;,12.fixed_width_font当该属性的值为true时,对于列表框或下拉列表框内的字符,在行距、列距不变的情况下减小字符之间的间隔(字符尽可能地大)。相关的控件有:list_box、popup_list。默认值:flase15.height确定控件的最小高度,数值类型是整数或实数型。单位为屏幕字符的最大高度。如果属性fixed_height的值为ture,height是控件的实际高度,否则,在自动布局时,控件的实际高度会超出该值。通常,不需指定该值,系统能自动采用合适的数值(图像及图像按钮除外)。相关的控件有:全部控件。默认值:无16.initial_focus确定对话框内初始被聚焦的控件。相关的控件有:dialog。默认值:无,Flaseture,17.is_bold若该属性为true,该控件的字符用黑体显示。相关的控件有:text。默认值:false18.is_cancel若该属性为true,所选中的按钮与按取消键(如Esc)的作用相同。对话框中只能有一个按钮的is_cancel为true,且点取该按钮后,取消施加在对话框上的操作并终止对话框。相关的控件有:button。默认值:false19.is_default若该属性为true,单击该按钮与按接收受键(如Enter)的作用相同。对话框中只能有一个按钮将该属性设置为true。相关的控件有:button。默认值:false,20.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。默认值:true,flaseture,22.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。默认值:无,24.layout确定slider(滑动条)的方位是horizontal(水平)还是vertical(垂直),默认值为horizontal。相关的控件有:slider。默认值:horizontal25.list确定列表框或下拉列表框内的初始内容(字符串),行之间用n分隔,行内用制表符t分隔。相关的控件有:list_box、popup_list。默认值:无26.max_value确定滑动条返回的最大值,是-3276832767之间的整数。相关的控件有:slider。默认值:10000,27.min_value确定滑动条返回的最小值,是-3276832767之间的整数。相关的控件有:slider。默认值:028.mnemonic定义控件的热键,即助记符。助记符是控件标签中带下划线的字符。也可以在属性label中用/显示在对话框顶部的标签:row/引用行:image/引用图像控件width=30;/图像的宽height=8;/图像的高key=img_cr;/图像的关键字color=-2;/图像的背景色为AutoCAD的背景色/图像引用结束,图12-28,:boxed_column/引用加框列label=几何数据;/加框列的标签:edit_box/引用编辑框1label=圆心X(mm):;/编辑框1的标签edit_width=8;/编辑框1的宽度key=X;/编辑框1的关键字mnemonic=X;/编辑框1的热键/编辑框1引用结束:edit_box/引用编辑框2label=圆心/编辑框2的关键字/编辑框2引用结束,:edit_box/引用编辑框3label=半径R(mm):;/编辑框3的标签width=8;/编辑框3的宽度key=R;/编辑框3的关键字mnemonic=R;/编辑框3的热键/编辑框3引用结束/加框列引用结束/行引用结束ok_cancel;/引用ok_cancel组合控件,12.5.3DCL语法1.定义控件定义控件类似C语言定义了一个新的数据类型。在定义对话框之外定义的控件称为原型或子组。定义控件的格式如下:name:item1:item2:item3attribute1=value1;attribute2=value2;其中,name为新控件的名称,item1为已存在的控件的原型,name:item表示name作为实例继承item的属性。如果attribute1是控件item的某一属性,value1即为该属性的值,attribute1=value1;是对item1的补充说明,它将用value1覆盖attribute1的原属性值。如果控件item不包含attribute1,那么attribute1是name的新属性。之内未出现的属性保留其原有值。,上一段代码表示新控件name继承了控件item1、item2、除了attribute1、attribute2、之外的所有属性(包括属性值),而属性attribute1、attribute2的新值是value1、value2、。name;由字母、数字或下划线组成,但必须以字母开头,不能为汉字。例如,标准控件button的内部定义为:button:tilefixed_height=true;is_tab_stop=true;在base.dcl中default_button引用了button的定义,代码如下:default_button:buttonis_default=true;该例default_button除了继承button的属性fixed_height和is_tab_stop之外,又增加了一个新的属性is_default,并将其设置为true。实际应用中只有对话框本身需要用户定义,定义新控件的情况极少,因为AutoCAD预定义的控件种类已经够用。,2.引用控件所谓引用控件,就是引用已定义的控件类型,引用的结果得到了一个实例。在引用控件的过程中可以改变或增加控件的属性,但不必列出不想改变的属性。由于DCL以这种方式继承属性,因此在建立DCL文件时,绝大多数情况下是引用预定义的控件。有以下两种不同的控件引用:(1)被引用控件的名字前没有冒号:,用于既不修改该也不增加控件属性的场合。例如:ok_cancel_help;该引用的结果是得到含有OK、Cancel和Help三个按钮的组件。(2)被引用控件的类型字前有冒号:,其后是对部分属性的修改或补充。例如::edit_box/引用编辑框控件label=圆心Y(mm):;/编辑框的标签width=8;/编辑框的宽度key=Y;,该引用的结果是得到一个编辑框的实例。该编辑框的标签是圆心Y(mm):、宽度为8个字符、关键字为Y,其余属性与编辑框的预定义原型中的属性相同。3.属性赋值属性赋值的格式为:attribute=value;其中,attribute是属性名,value为赋给属性的值,分号;表示赋值结束,必须注意属性值的类型。4.注释DCL采用了C及C+的注释风格,有两种注释方式。第一种方式是/至行尾部分作为注释。第二种方式是或/*与*/之间为注释部分。第一种方式适于为单行的代码注释,第二种方式适于行内和多行的注释内容。,12.6对话框驱动程序对话框文件描述了对话框的结构和外观、所属控件的样式、功能及控件的布局。但是将对话框显示到屏幕上,使对话框及其各控件发挥作用,必须靠程序驱动。用AutoLISP或VisualC+语言可以编写对话框的驱动程序。12.6.1驱动对话框的程序流程图简单(不嵌套、不需要隐藏和重新显示)对话框的驱动程序流程图如图12-30所示。,图12-30对话框驱动程序的流程图,1.加载对话框文件AutoLISP程序首先调用load_dialog函数加载指定的对话框文件,若加载成功返回一个大于零的整数。返回的整数类似于文件标识号,是显示和卸载对话框文件的主要参数,应该将其赋给一个变量保存,以备程序使用。2.将对话框显示到屏幕上调用new_dialog函数,将已加载的对话框文件中指定名字的对话框(一个对话框文件可定义多个对话框)按照指定的位置显示到屏幕上,默认位置在屏幕的中央。3.初始化控件根据对话框文件中控件的属性值对控件初始化。也可调用set_tile、mode_tile或action_tile等函数对控件初始化。经过初始化了的控件才有了初始的外观、状态或功能。4.激活对话框调用start_dialog函数,对话框处于激活状态,等待并接受用户施加在对话框上的操作,直到某一操作直接或间接地调用了done_dialog函数,对话框才消失(并没有释放对话框所占用的存储空间)。,5.用户
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年新能源汽车充电站智能化改造与运营策略报告
- 中介新员工培训体系
- 稽查小组奖励方案范本
- 培训机构回顾历程
- 2026届四川广安市化学九上期末质量跟踪监视试题含解析
- 水泥砖房施工方案
- 2026届四川省巴中市英语九上期末学业质量监测试题含解析
- 2026届四川省泸州市高中学阶段学校九年级化学第一学期期末达标测试试题含解析
- 2026届浙江省杭州市萧山区万向中学九年级英语第一学期期末统考模拟试题含解析
- 人事行政专员个人年终总结
- 上海市周浦中学2025年化学高一下期末统考试题含解析
- 易地移民搬迁政策课件
- 无人机产业股权合作收益分配与技术研发协议
- 2025至2030中国环卫行业市场发展现状及竞争格局与投资机会报告
- 儿童注意力课件
- 县级工会内控管理制度
- 《智能机电系统设计与开发》课件 第三章-机械系统设计与开发
- T/CECS 10187-2022无机复合聚苯不燃保温板
- 人教版高中物理必修三同步练习全套(含答案)
- 动物疫情监测与预警的数据分析与利用
- 2025变压器振动监测与故障诊断装置
评论
0/150
提交评论