k1nger 发表于 2011-7-28 18:44:58

众多动态对话框源码 LISP 与 DCL 实例源码

土木转的一篇文章,觉得不错,拿出来和大家分享!!
我在网易上原创并广为下载的“钢构CAD”目前已下载约7000人次,且下载后使用者反映还好。

我一直有个想法,将我程序中的个别对话框控制的典型程序,选出一个在此,将源代码分别上传发表,为这个人气不错的版块,起点抛砖引玉的作用。
国内CAD开发高手云云的晓东CAD和明经通道,的确有不少源代码,但涉及到DCL对话框的确很少,公开发表的,还是少有的很老气的英文版的简单的一些局部介绍,太让人感到云雾高深。
有个老虎CAD网站,要注册成为其用户还要有里面高手的邀请书才行,我想注册也没资格也没被接受。但我却看见该网上的某个高手,把我在网易上发的一个贴子内容文章“快速成为CAD高手的方法”,连图一起在其老虎CAD网上转载发表,看来那些远离大众的老虎高手们,也还是会拒大众于门外却在大众中间转游啊。


钢构CAD在线   最新2.0版程序下载
http://www.co188.com/forum/content/369_959993_1.htm

成为高手不难,可参看本站如下链接《CAD高手速成法》
http://www.co188.com/forum/content/1714_724644_1.htm

《钢构CAD》原始版及程序升级包的本站下载链接
http://www.co188.com/forum/content/1783_595556_1.htm

插入图框程序实例 LISP 及 DCL 全部源代码本站位置如下

http://www.co188.com/forum/content/93_896090_1.htm


为与热爱CAD的网易朋友的共享开发乐趣,我将程序中的几个我认为典型的动态对话框界面,选摘于此,看看那个较让朋友们看中,我就在此发布并讲解其中开发思路和感受。

让大家参考借鉴。

这是程序中插入图框的界面,是程序中改写最多的一个。
这个程序最先只是个纯LISP程序,后来参考各商业程序中的此类增加了对话框,但主要是非专业设计应用,此设置了一个从图中量取出图比例的功能,为满足一幅图中各种不同比例出图,特设置了多个标注样式,在后来的实用中,有的退休高工因眼光老化,又增加了标注字体的多项选择项目,又后来因不同专业爱好对图标栏的要求不同,又增加了自定义图标栏的项目。
本程序对那些工非设计院的工程师很有实用性。

此对话框全部程序源代码
//何人强/20050608/于曲靖双友钢铁厂
//051009于曲靖双友钢铁厂,在对话框中增加文字大小选项,并与标注各系统变量相联系
//;;;060123-25于师宗民科二号高炉工程工地,在对话框中增加幻灯显示(共调用29幅幻灯片,分两处显示),并对原布局略有调整
crtkK : dialog{
      label="钢 构 C A D---插 入 图 框";

:row{//其下为水平排列
            :boxed_radio_column{   // :      radio_row {//无加框按钮行   
      label=" ";key="TKZT";
: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";}
:radio_button{label=" A 4";key="A4";}
:radio_button{label="机电箭头";key="JD";}
:radio_button{label="了解程序";key="LJ";}

:boxed_column{
label="出 图 比 例 ";key="SRBL";
:text {      key="blvz";}//可变的文字对象
             :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "1 :";//编辑框左边的名称
                key="CTBL" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=6 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
            }//截面长编辑框完,以下编辑框类同
:popup_list{      //比例下拉选单
key="popang";
edit_width=9;
}            
}
}
   :boxed_radio_column{
      label=" ";key="BLZT";
         :row{//其下为水平排列
:boxed_column{//在比例状态下设置为列
label=" 比 例 状 态 ";
      :radio_button{label="已经 确定";key="YJQD";}
      spacer_1 ;//加空行--()
      :radio_button{label="图中 量取";key="CTZLQ";}
   }

:boxed_column{
label="图 框 横 竖";key="TKHS";
      :radio_button{label="横向";key="HXTK";}
      :radio_button{label="竖向";key="SXTK";}
   }   
}

   :boxed_radio_row{
label=" 图 标 栏 的 选 用 ";key="SFCRTBL";
//:toggle { label= " 插 入"; key="CZTBL" ;}//注:因打勾选框不能单击启动子程序,因配合幻灯故改用单选钮
      :radio_button{label="默 认";key="CZTBL-1";}
      :radio_button{label="自定义图标栏";key="CZTBL-2";}
}


      :image {//幻灯显示框
      key = "kimage";
      color = -2;//背景色:1白2黑3蓝4白5灰6白7红8灰9白10蓝
      width = 30;//框宽,,,背景色在LISP中也设置,但均以黑色为妥
      aspect_ratio = 1;//高宽比,但也会被其它控件拉长或拉高
      }
      }      
             }

      :row{//其下为水平排列
   :boxed_radio_row {//加框按钮行//   :      radio_row {//无加框按钮行
      label=" 标 注 文 字 大 小m m";key="VZDX";      
      :radio_button{label="2";key="XVZ";}
      :radio_button{label="2.5";key="ZVZ";}      
:radio_button{label="3.5";key="DVZ";}
:radio_button{label="5";key="JDVZ";}
:radio_button{label="7";key="TDVZ";}
      }
      :image {//幻灯显示框
      key = "kimage-JT";//显示标注箭头大小幻灯
      color = -2;//背景色:1白2黑3蓝4白5灰6白7红8灰9白10蓝
      width = 20;//框宽,,,背景色在LISP中也设置,但均以黑色为妥
      aspect_ratio = 0.3;//高宽比,但也会被其它控件拉长或拉高
      }
      }
            
:boxed_column{      //组框行
            label="";
:concatenation{      //水平群集连结
      :text_part {label="";}      //纯文字显示
      :text {width=50;//框宽
      key="t_text";}      //可变的文字对象3
      }
spacer_1 ;//加空行--()
      :text {width=50;//框宽
      key="t_text-11";}      //可变的文字对象3
spacer_1 ;//加空行--()
}
spacer_1 ;//加空行--()

      :row{//其下为水平排列
    ok_cancel;//确定和取消按钮
   
: button {//自定义一个按钮
                        key = "E_mail";//退出与确定的区别:确定为key = "accept";
                        label = "关 于";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
      }

    }


http://bbsfile.co188.com/forum/133/1192063681762.gif

这个是程序中五金手册系列中最先开发的一个,其中数据部分也是从别的程序中获取占为己有的。
在工作中常备一本五金手册是很多工程师的习惯,虽现有了不少此类程序,但有时画个型钢断面时却很麻烦,在能从别处获取相关数据的时侯,就有了将五金手册与画断面二者合一的想法,编程时增加了放大多个倍数的选项。

此界面全部源代码// *****************************************************************************************************
DBJG : dialog{
      label=" 钢 构 C A D --- 角 钢";
:radio_column{//其下为无框竖向平排列
         :row{//其下为水平排列
      :image {//幻灯显示框
                        key = "kimage";
                        color = -2;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 30;//景宽
                        aspect_ratio = 1;//高宽比,但也会被其它控件拉大
                        }
                        
//         :boxed_radio_column{//其下为有框竖向平排列
:radio_column{//其下为无框竖向平排列
:radio_column{//其下为无框竖向平排列


   :boxed_radio_row{//boxed_radio_row加框按钮行单选          radio_row {//无加框按钮行单选
//   :radio_row{//boxed_radio_row加框按钮行单选          radio_row {//无加框按钮行单选   
label="";key="SFCRTBL";
      :radio_button{label="等 边";key="DBJG";}
      :radio_button{label="不 等 边";key="B-DBJG";}
}
:list_box{      //列表框
label=" 选 择 角 钢 型 号";
key="klist";      //key值
width=10;      //选单宽度
height=10;      //选单高度
}

:popup_list{      //下拉选单
label=" 图 形 放 大";key="DBJG-TXFD";edit_width=10;}

}
}            
      }
:boxed_column{      //组框行
            label="";
:concatenation{      //水平群集连结
      :text {width=55;key="DBJG-text-1";}      //可变的文字对象2
      }
      spacer_1 ;//加空行--()
:text {width=55;key="DBJG-text-2";}//可变的文字对象3
spacer_1 ;//加空行--()
:text {width=55;key="DBJG-text-3";}//可变的文字对象3
}

//    ok_cancel;//确定和取消按钮

:row{//其下为水平排列

:button{//width=25;
label="插入图形";key="accept";alignment = centered;fixed_width = true;is_default = true;}//按钮

: button {//自定义一个退出按钮
//                        width=15;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = " 退出 ";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
      
    }
: button {//自定义一个按钮
                        key = "E_mail";//退出与确定的区别:确定为key = "accept";
                        label = "关 于";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
   
    }
}
}//钢 构 C A D ---角 钢

http://bbsfile.co188.com/forum/39/1192063943963.gif
这个图层程序,是受那个贱人工具箱的启发,但最开始时因不会获取图层中的各类相关信息,又不想停留在贱人的此类不足上,故此程序是后来升级才开发的,与贱人的相比,我认为保留了图层中的线型、颜色等相美常用信息。
按一个键,就得到一个你想要的图层,包括线型、线宽、颜色等,为爱酷的朋友提供了方便。
在此,我要说贱人工具箱,人见人爱。
图层设置是画图中的一项麻烦事,特别是对我这样不精于设置的人来说,为一劳永逸,对设置了均为中文名称的相关常用图层,并用程序一次搞定,后来考虑到不同朋友的爱好,增加了自定义图层也一次搞定的想法。

一键图层对话框源码


TC : dialog{ //070710 于成都大邑
      label=" 钢 构 C A D...一 键 图 层" ;
      key="dial";
//      spacer_1 ;//加空行--()
      :row { //无框水平排列      :boxed_row//有框水平排列

:boxed_radio_column{ label="已有设置";
:list_box{      //列表框
//label="已有快速图层";
key="TC";      //key值
width=27;      //选单宽度
height=9;      //选单高度
}
: button {width=5;key = "Q1";label = "清 除 设 置";fixed_width = true;alignment = centered; }
: button {//自定义一个按钮
//                        width=5;
                        key = "SM-1";//退出与确定的区别:确定为key = "accept";
                        label = "程 序 说 明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置      
    }

}
:radio_column{ //其下为无框竖向平排列
label = "选择1~5对应图层";
//:text_part {label="不选择的不会被保存";}      //纯文字显示
:row { //无框水平排列
:radio_column{ //其下为无框竖向平排列               
:popup_list{      //比例下拉选单
//label= "<1>";//编辑框左边的名称
key="<-1";
edit_width=25;
}
:popup_list{ key="<-2";edit_width=25;}                     
:popup_list{ key="<-3";edit_width=25;}
:popup_list{ key="<-4";edit_width=25;}
:popup_list{ key="<-5";edit_width=25;}
}
}
//   spacer_1 ;//加空行--()
:row{//其下为水平排列
//:text {label = ""; width= 8 ;key="text";}      //可变的文字对象1
: button {width=5;key = "accept";label = "保存设置";fixed_width = true;alignment = centered; } //按钮
: button {//自定义一个退出按钮
                        width=5;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退 出";// is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        is_default = true;
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置      
    }
    }
}

:boxed_radio_column{ //其下为有框竖向平排列
label = " 图层操作 ";
:row{//其下为水平排列
:radio_column{ //其下为无框竖向平排列:boxed_radio_column{ //其下为有框竖向平排列
: button { key = "X1";label = "关闭";fixed_width = true;alignment = centered; }
: button { key = "X2";label = "冻结";fixed_width = true;alignment = centered; }
: button { key = "X3";label = "锁定";fixed_width = true;alignment = centered; }
}
:radio_column{ //其下为无框竖向平排列
: button { key = "S1";label = "显示全部";fixed_width = true;alignment = centered; }
: button { key = "S2";label = "解冻全部";fixed_width = true;alignment = centered; }
: button { key = "S3";label = "解锁全部";fixed_width = true;alignment = centered; }
}
}
: button { key = "S4";label = "显示解冻解锁全部";fixed_width = true;alignment = centered; }
: button { key = "S5";label = "只显被选对象图层";fixed_width = true;alignment = centered; }
//: button {//自定义一个按钮
////                        width=5;
//                        key = "SM-1";//退出与确定的区别:确定为key = "accept";
//                        label = "程序说明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
//                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
//                        alignment = centered;//使按钮居中放置      
//    }
}
}
:text {label = "图 层 操 作 更 轻 松 ,我 的 图 层 ,我 做 主 。"; width= 8 ;key="text";}      //可变的文字对象1
}

http://bbsfile.co188.com/forum/25/1192064362097.gif


这是一个几何计算的小程序。很多专业计算,都难以找到现成的程序,自己会写当然更好,反正计算流程都很简单,只要将其变为程序吧了。


球类计算源代码
//何人强/20060219/于师宗民科煤业有限公司二号高炉工地
QTMJS : dialog{
      label=" 钢 构 C A D --- 球 类 体 面 积 计 算";
         :row{//其下为水平排列
      :image {//幻灯显示框
                        key = "kimage";
                        color = -2;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 45;//景宽
                        aspect_ratio = 1;//高宽比
                        }                        
         :boxed_radio_column{//其下为竖向有框水平排列
   :boxed_radio_column{//其下为竖向有框水平排列
      label=" ";key="";
               :row{//其下为水平排列
               
      :boxed_radio_column{//其下为竖向有框水平排列
                        label=" 选 择 ";
                        width=10;//编辑框宽度
                        :radio_button{label="球";key="XJ1";}
                        :radio_button{label="椭 球";key="XJ2";}
                        :radio_button{label="椭 圆";key="XJ3";}                        
                        }
      
         :boxed_radio_column{//其下为竖向有框水平排列
                                 label=" 输 入 ";
             :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "1,长轴总长 L =" ;//编辑框左边的名称
                key="LD-01" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=8 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
            }//截面长编辑框完,以下编辑框类同

:edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "2,中轴总长 B =" ;//编辑框左边的名称
                key="LD-02" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=8 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
            }

:edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "3,短轴总长 H =" ;//编辑框左边的名称
                key="LD-03" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=8 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
            }
            }
}
}
:boxed_column{      //组框行
//            label="";
      :text {width=45; key="QT-text-1";}      //可变的文字对象2
spacer_1 ;//加空行--()
:text {width=45; key="QT-text-2";}//可变的文字对象3
spacer_1 ;//加空行--()
//:text {width=25; label="789"; key="LD-text-3";}//可变的文字对象3
}
//    ok_cancel;//确定和取消按钮
:row{//其下为水平排列
:button{label=" 计    算 ";key="QTJS-060121";alignment = centered;fixed_width = true;      is_default = true;}//按钮
:text {width=15;label = " ☆ ★ ☆ ";key="QTJS-text";}//可变的文字对象
: button {//自定义一个退出按钮
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退出";
//                        is_default = true;//缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                }
    }
    }
}
}

http://bbsfile.co188.com/forum/5/1192064509187.gif http://bbsfile.co188.com/forum/25/1192064509230.gif


这是一个编号类的小程序
这个程序的构思开始是很明显而简单的,在编写过程序中,在完成简单功能之后,又增加了自动识别大小写字母与数字,均能按递增或递减的方式进行连续编号。

ZC_BH : dialog{
      label=" 钢 构 C A D --- 连 续 编 号" ;
      key="dial";
      :row { //无框水平排列      :boxed_row//有框水平排列
      
                :image//幻灯显示框
                {
                        key="HD-01";
                        width=25;//显示框宽
                        height=1;
                        color=0;
                        fixed_width=true;
                }
:radio_column{//其下为无框竖向平排列    :boxed_radio_column{//其下为有框竖向平排列
:row{
:edit_box{label="文字高度:";key="VZG";width=5;}
:edit_box{label="起点编号:";key="QDH";width=5;}
}

:radio_row {//无加框行
:boxed_radio_row{//boxed_radio_row加框按钮行      radio_row {//无加框行
label=" 引 线 ";
:row{
:radio_button{label="有";key="BH-Y";}
:radio_button{label="无";key="BH-W";}
}
}

:boxed_radio_row{//boxed_radio_row加框按钮行          radio_row {//无加框行
label=" 方 式 ";key="JDQJ";
      :radio_button{label="递增";key="FS-Z";}
      :radio_button{label="递减";key="FS-J";}
}
}

:boxed_radio_row{//boxed_radio_row加框按钮行          radio_row {//无加框行
label="插入点位置";key="YH--";
      :radio_button{label="上";key="YH-S";}
      :radio_button{label="下";key="YH-X";}
      :radio_button{label="左";key="YH-Z";}
      :radio_button{label="右";key="YH-Y";}      
}

:row{//其下为水平排列

:button{width=5;label="编号";key="accept";alignment = centered;fixed_width = true;is_default = true;}//按钮

: button {//自定义一个退出按钮
                        width=5;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退出";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
      
    }
   : button {//自定义一个按钮
                        width=5;
                        key = "SM-1";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置      
    }
    }
}
}
}
http://bbsfile.co188.com/forum/106/1192064722661.gif

这个数据运算的源代码是从网上捡来的,我只不过是增加了对话框界面,并略改了原代码中只能计算单行文字的功能,从而使只有含有数据的文字,均能进行运算。



JFCX : dialog{label=" 钢 构 C A D --- 数 据 累 加";
      :image {//幻灯显示框
                        key = "kimage";
                        color = -2;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width =40;//景宽
                        aspect_ratio =0.8;//高宽比,但也会被其它控件拉大
                        }

             :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "答 案 保 留 到 小 数 点 后 位 数 =" ;//编辑框左边的名称
                key="DA" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=3 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
            }//截面长编辑框完,以下编辑框类同
spacer_1 ;//加空行
            :toggle { label= "将 答 案 写 入 图 中"; key="TZ" ;}// 打勾

spacer_1 ;//加空行
:row{//无框行

//    ok_cancel;//确定和取消按钮

:button{width=10;label="选 取 数 据";key="accept";alignment = centered;fixed_width = true;is_default = true;}//按钮

: button {//自定义一个退出按钮
                        width=5;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退出";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
      
    }
    : button {//自定义一个按钮
                        key = "SM";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
                        }
    }

http://bbsfile.co188.com/forum/141/1192064889447.gif


这个画型钢系列的程序中的一个角钢杆件程序,因也有了五金手册中的数据支持,就顺手编写了这类画型钢杆件的程序。
此类程序中对框中,运用了一个动作控制两个幻灯图片的分别动态变化显示,为程序操作代来了图文并冒的效果。


GJ_01 : dialog{//7-6.DCL      程 序 编 制 : 云 南 十 四 冶 ---何 人 强
      label=" 钢 构 C A D --- 角 钢 杆 件";
:radio_column{//其下为无框竖向平排列
         :row{//其下为水平排列
      :image {//幻灯显示框
                        key = "kimage";
                        color = -2;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 20;//景宽
                        aspect_ratio = 1;//高宽比,但也会被其它控件拉大
                        }                        
//         :boxed_radio_column{//其下为有框竖向平排列
:radio_column{//其下为无框竖向平排列
:radio_column{//其下为无框竖向平排列

         :row{//其下为水平排列
   :boxed_radio_row{// boxed_radio_row 加框按钮行单选          radio_row {//无加框按钮行单选
//   :radio_row{// boxed_radio_row 加框按钮行单选          radio_row {//无加框按钮行单选   
label="角 钢 类 型";
      :radio_button{label="等边";key="DBJG";}
      :radio_button{label="不等边";key="B-DBJG";}
}

:boxed_radio_row{label="画 图 形 式";
      :radio_button{label="剖面";key="M-1";}//单选
      :radio_button{label="前视";key="M-2";}
      :radio_button{label="府视";key="M-3";}
      :radio_button{label="后视";key="M-4";}      
      }
}
:row{//其下为水平排列
:popup_list{      //下拉选单
label="型 号";
key="klist";      //key值
edit_width=20;
}

:popup_list{      //下拉选单
label="组合形式";
key="ZH";      //key值
edit_width=22;
}
}
      :image {//幻灯显示框
                        key = "kimage-1";
                        color = -2;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 60;//景宽
                        aspect_ratio = 0.2;//高宽比,但也会被其它控件拉大
                        }
}
}            
      }
         :row{//其下为水平排列
:edit_box{label="出图比例 1 :";key="CTBL";width=2;}
:edit_box{label="主线宽:";key="CTXK";width=2;}
:edit_box{label="两端截短:";key="LBSD";width=2;}
:edit_box{label="间距 a =";key="JJ";width=2;}
      }      
:boxed_column{      //有框行
      :text { label="此 处 显 示 选 择 过 的 型 号 参 数 , 未 选 择 将 不 能 正 确 画 图 。";width=60;key="text-1";}      //可变的文字对象2
}

:row{//其下为水平排列
:column{//无框行boxed_
      :text { label="点 击 下 拉 框 后 可 用 滚 轮 选 择";width=35;key="text-2";}      //可变的文字对象2
}

:toggle { label= "画轴线"; key="HZX" ;}
:button{width=5;label="画 图";key="accept";alignment = centered;fixed_width = true;is_default = true;}//按钮

: button {//自定义一个退出按钮
                        width=5;
                        key = "cancel";//退出与确定的区别:确定为key = "accept";
                        label = "退 出";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
      
    }

: button {//自定义一个按钮
//                        width=5;
                        key = "SM";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置      
    }   
    }
}
}//钢 构 C A D ---杆 件 角 钢


http://bbsfile.co188.com/forum/117/1192065113121.gif


这是一个很简单的小程序,但其源代码,我认为也要比晓东和明经上公开的此类要有用得多,最起码还是中文界面的吧

ZC_BH_1 : dialog{
      label=" 钢 构 C A D --- 自 动 序 号" ;
//:radio_column{//其下为无框竖向平排列    :boxed_radio_column{//其下为有框竖向平排列
:row{
:boxed_radio_column{//其下为有框竖向平排列
label=" 编 号 ";
:edit_box{label="起点:";key="QDH";width=3;}
:edit_box{label="终点:";key="ZDH";width=3;}
}
:boxed_radio_column{//其下为有框竖向平排列
label=" 文 字 ";
:edit_box{label="高度:";key="VZG";width=3;}
    : button {//自定义一个按钮
                        width=10;
                        key = "SM-1";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";//is_default = true;    //缺省按钮,一个话框中必须也只能有一个缺省按钮
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置      
    }
}
}
ok_cancel;
}


http://bbsfile.co188.com/forum/30/1191911663430.gif


以上程序,包含了对话框中的:输入数据记忆、按钮点控记忆、按钮点击的相关控制、幻灯片的动态显示控制等等。

此处只是选择了很少一部分有代表性的,如各位对“钢构CAD”程序中别的子程序源代码感兴趣,也可在此发表看法,我会综合各位朋友们的看法,将程序源代码及开发思路,在这个网站要发出来的。


//何人强/20050618/于曲靖双友钢铁厂   061013于师宗改写增加幻灯显示
RYWT : dialog{
      label=" 钢 构 C A D --- 板 金 放 样 系 列 程 序 --- 任 意 弯 头";

:row{//其下为水平排列
      :image {//幻灯显示框
                        key = "kimage";
                        color = -2;//背景色:1白2A黑3蓝4白5灰6白7红8灰9白10蓝
                        width = 40;//景宽
                        aspect_ratio = 1;//高宽比,但也会被其它控件拉大
                        }

:radio_column{//其下为无框竖向排列

:boxed_radio_row {
label="1、管道参数";//key="SRBL";
             :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "外径" ;//编辑框左边的名称
                key="GDYJ" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=7 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
            }//截面长编辑框完,以下编辑框类同

:edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "弯曲角度" ;//编辑框左边的名称
                key="WQJD" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=7 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
            }

:edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "弯头节数" ;//编辑框左边的名称
                key="WTJS-1" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=7 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
            }//      :text_part {label=" N 等分环形节数为 N + 1";}      //纯文字显示
}

:boxed_radio_row {
label="2、弯曲半径输入方式";key="SRFS";
      :radio_button{label="倍数输入";key="BSSR";}
      :radio_button{label="手工输入";key="SGSR";}
          :edit_box {//编辑框是允许用户在其中输入或编辑单行文字的控件。
                label= "      弯曲半径" ;//编辑框左边的名称
                key="SGSR-1" ;//指定一个 ASCII 名称,即为行数后的文本框指定一个代码
                edit_width=7 ;//以平均字符宽度为单位指定 edit_box 控件中编辑框或输入框的文本区宽度。
            }
   }

   :boxed_radio_row {
label="3、弯曲半径倍数";key="BSSR-";
      :radio_button{label="1";key="BSSR-1";}
      :radio_button{label="1.5";key="BSSR-15";}//注:此行不能写为key="BSSR-1.5";
:radio_button{label="2";key="BSSR-2";}
:radio_button{label="2.5";key="BSSR-25";}//注:此行不能写为key="BSSR-2.5";
:radio_button{label="3";key="BSSR-3";}      
   }
:boxed_column{      //第二组框行
            label=" 按倍数确定的弯曲半径 ";key="SGSR-BS" ;
:concatenation{      //水平群集连结
      :text_part {label="";}      //纯文字显示
      :text {width=55;key="t_text";}      //可变的文字对象1
      :text_part{label="";}      //纯文字显示
      }
}
:boxed_column{      //第三组框行//            label="";

:concatenation{      //水平群集连结//      :text_part {label="";}      //纯文字显示
:text {width=55;key="t_text-1";}      //可变的文字对象2
      }
spacer_1 ;//加空行--()
:text {width=55;key="t_text-2";}      //可变的文字对象3
}
spacer_1 ;//加空行--()
:row{//其下为水平排列
    ok_cancel;//确定和取消按钮
   
: button {//自定义一个按钮
                        key = "SM";//退出与确定的区别:确定为key = "accept";
                        label = "说 明";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
: button {//自定义一个按钮
                        key = "E_mail";//退出与确定的区别:确定为key = "accept";
                        label = "关 于";
                        fixed_width = true;//使按钮外框的宽度收缩到恰好可以容纳其内部的文字
                        alignment = centered;//使按钮居中放置
                        }
                }
                }
                        }
    }
http://bbsfile.co188.com/forum/11/1191912159089.gif


tender138 发表于 2024-7-24 14:58:35

好东西一定要顶啊

18112600842 发表于 2024-4-7 19:02:22

下来学习,谢谢楼主!

趣意人生 发表于 2021-2-13 20:59:25


下来学习,谢谢楼主!

skynoon 发表于 2011-7-28 20:37:08

好东西一定要顶啊

ALXY 发表于 2011-7-29 08:55:53

钢构CAD是很不错的,支持!

自贡黄明儒 发表于 2011-7-29 12:48:58

好东西,我的同事很多在用

tjuzkj 发表于 2011-8-1 12:06:44

看了一下,受益匪浅!

戏男 发表于 2011-9-3 11:59:32

非常值得的资料

mac 发表于 2011-9-3 15:32:09

不跟贴,对不住楼主呀

yjr111 发表于 2011-9-4 00:43:30

在学DCL,顶一下!

xhq1954425 发表于 2011-9-4 06:41:46

下来学习,谢谢楼主!

xqw72 发表于 2011-9-6 19:37:08

要是能有动画或截图演示就更好了。
页: [1] 2 3 4 5 6
查看完整版本: 众多动态对话框源码 LISP 与 DCL 实例源码