找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 6277|回复: 30
打印 上一主题 下一主题

十天学会Skill之第五天

    [复制链接]

117

主题

2352

帖子

1万

积分

EDA365特邀版主

Rank: 6Rank: 6

积分
13799

最佳敬业奖

跳转到指定楼层
1#
发表于 2010-3-8 11:45 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
十天学会Skill之第五天
By deargds
https://www.eda365.com
学习目的:了解Skill与Allegro交互接口,创建一个简单的窗体实例。

一,了解Skill中常用的一些交互函数

axlUIYesNo("Are you ready?");弹出YES NO选择框
axlUIYesNoCancel("Are you ready?");弹出YES NO CANCEL三态选择框
以上函数会根据用户所选结果返回一个值,我们可以判断这个返回值来进行相关的操作。



axlUIMultipleChoice("Pick a choice" list("a" "b" "c"));多项选择



axlUIPrompt( "Enter Your name" "Cat" ) ;提示用户输入内容并返回
axlUIConfirm( "Hello" );弹出提示框

以上两个函数组合一下执行
axlUIConfirm(axlUIPrompt( "Enter Your name" "Cat" ))

axlMeterCreate;创建进度条,需与其它函数配合使用
axlMeterUpdate
axlMeterDestroy


创建进度条示例:
defun(test ()
        axlMeterCreate("test", "", t);创建进度条
        for(n 1 4
                sleep(1);延迟1秒
                axlMeterUpdate(n*25 "test");更新进度
        )
        axlMeterDestroy();关闭进度条
)


弹出NET选择框
axlUIDataBrowse('NET '(RETRIEVE_NAME) "test" t)
建议查看下axlUIDataBrowse函数的详细说明

二,创建程序交互窗口

Skill的窗体是通过对应的form文件来进行描述的,每个不同的窗体对应不同的FORM文件,里面包括了窗体的属性,每个控件的位置,大小,相关的属性等描述。
FORM文件内容示例:

FILE_TYPE=FORM_DEFN VERSION=2
FORM
FIXED
PORT 42 5
HEADER "Progress Meter"

TILE

TEXT
TLOC 1 3
INFO progressText 40
ENDTEXT

FIELD bar
FLOC 1 1
PROGRESS 41 3
ENDFIELD

ENDTILE

ENDFORM

SKILL内置了一些WIN32控件,如按钮,文本框,单选,复选,列表,树状列表,下拉列表,进度条等,
在FORM文件中,每个控件都有自己的FIELD名称,可以通过FIELD来访问该控件以获取和设置控件的值。

在编写好Form文件后,可以通过axlFormTest()函数来进行测试,
例如axlFormTest("C://Cadence//SPB_15.7//share//pcb//text//forms//createsplitplane.form")

实际的Skill程序中为了方便,通常都会使用动态生成Form文件的方法来创建窗体,结合前面了解过的文件输入输出端口,比较容易实现。

示例如下:

defun( test ()
        f = "/test.form"; 定义test.form文件
        p = outfile(f "w")
        fprintf(p "FILE_TYPE=FORM_DEFN VERSION=2\n")
        fprintf(p "FORM\n")
        fprintf(p "FIXED\n")
        fprintf(p "PORT 22 8\n")
        fprintf(p "HEADER \"TEST\"\n")
        fprintf(p "TILE\n")
        fprintf(p,"FIELD tip\n\n");开始写入文本框定义
        fprintf(p,"FLOC 1 1\n");定义坐标位置
        fprintf(p,"STRFILLIN 15 40\n");控件尺寸
        fprintf(p,"ENDFIELD\n\n")
        fprintf(p "FIELD pop\n");开始写入按钮POP定义
        fprintf(p "FLOC 1 4\n")
        fprintf(p "MENUBUTTON \"Pop\" 8 3\n")
        fprintf(p "ENDFIELD\n")
        fprintf(p "FIELD close\n");开始写入按钮EXIT定义
        fprintf(p "FLOC 10 4\n")
        fprintf(p "MENUBUTTON \"Exit\" 8 3\n")
        fprintf(p "ENDFIELD\n")
        fprintf(p "ENDTILE\n")
        fprintf(p "ENDFORM\n")
        close(p);test.form文件写入结束
        
        h = axlFormCreate((gensym) f nil 'test_call t);调用axlFormCreate函数根据test.form文件创建窗体,并关联窗体回调函数test_call
        axlFormDisplay(h);显示窗体
)

defun( test_call (h)
        case( h -> curField ;获取当前窗体激活的控件
                ("pop"
                        axlUIConfirm(axlFormGetField(h "tip"));获取FIELD为tip的控件内容,并弹出
                )
                ("close"
                        axlFormClose(h);关闭窗体
                        deleteFile(f);删除生成的FORM文件
                )
        )
)

在回调函数中经常用到的函数及属性
axlFormSetField;设置控件值
axlFormGetField;获取控件值
axlFormSetFieldEditable;禁用/允许控件
axlFormSetFieldVisible;隐藏/显示控件
formHandle -> curField;返回窗体当前活动的控件。
formHandle -> curValue;返回窗体当前活动控件的值,类型与FORM文件中所定义类型一致,也可以通过axlFormCreate定义为string类型。


另外在帮助文件X:\Cadence\SPB_15.7\share\pcb\examples\skill\form\basic目录下有非常详细的FORM文件示例,可以参考一下。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

评分

参与人数 1贡献 +10 收起 理由
frankyon + 10 顶啊~非常好的原创~期待老大继续!!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏10 支持!支持!3 反对!反对!
谁画出这天地 又画下我和你

97

主题

314

帖子

670

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
670
推荐
发表于 2013-8-21 17:27 | 只看该作者
版主outfile(filename "w") filename 是相对路径怎么办啊?
~

1

主题

209

帖子

173

积分

二级会员(20)

Rank: 2Rank: 2

积分
173
推荐
发表于 2015-8-22 20:15 | 只看该作者
支持支持支持  非常感謝

2

主题

165

帖子

329

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
329
31#
发表于 2018-2-1 17:25 | 只看该作者
多谢版主

28

主题

164

帖子

652

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
652
30#
发表于 2016-3-23 09:46 | 只看该作者
谢谢楼主

6

主题

167

帖子

478

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
478
29#
发表于 2015-8-24 10:35 | 只看该作者

97

主题

710

帖子

2971

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2971
26#
发表于 2012-12-29 13:52 | 只看该作者
没时间学习啊

0

主题

5

帖子

238

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
238
25#
发表于 2012-12-24 10:53 | 只看该作者
期待後續的學習能繼續發行

12

主题

96

帖子

2176

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2176
24#
发表于 2012-12-17 16:22 | 只看该作者
谢谢 再次学skill

27

主题

130

帖子

-1万

积分

未知游客(0)

积分
-11310
23#
发表于 2012-11-23 10:14 | 只看该作者
新手谢谢楼主了!

8

主题

81

帖子

659

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
659
22#
发表于 2012-11-8 15:46 | 只看该作者
大神,第六天怎么就不更了啊,好期待啊,正在学习中~受益匪浅,
希望得到指点{:soso_e154:}

9

主题

209

帖子

642

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
642
21#
发表于 2012-10-19 09:21 | 只看该作者
期待后续更新,感谢楼主

11

主题

56

帖子

314

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
314
20#
发表于 2012-2-11 14:24 | 只看该作者
楼主,太宝贵的资料了,第六天以后的为什么都没有啊?

7

主题

283

帖子

2532

积分

四级会员(40)

Rank: 4Rank: 4Rank: 4Rank: 4

积分
2532
19#
发表于 2011-11-27 12:21 | 只看该作者
谢谢分享

3

主题

61

帖子

-8934

积分

未知游客(0)

积分
-8934
18#
发表于 2011-11-26 16:17 | 只看该作者
楼主,为什么从第六天以后就没有了呢?作为初学者,我很期待啊!我的分很少,也没资格给你评价,但很希望你能把十天的都发给我kang9016@foxmail.com  万分感激!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

巢课

技术风云榜

关于我们|手机版|EDA365 ( 粤ICP备18020198号 )

GMT+8, 2024-11-25 17:04 , Processed in 0.071056 second(s), 38 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表