找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

巢课
电巢直播8月计划
查看: 6270|回复: 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 | 只看该作者
支持支持支持  非常感謝

6

主题

181

帖子

2755

积分

四级会员(40)

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

积分
2755
2#
发表于 2010-3-8 12:14 | 只看该作者
谢谢LZ的慷慨分享

0

主题

12

帖子

-1万

积分

未知游客(0)

积分
-11900
3#
发表于 2010-3-8 20:40 | 只看该作者
謝謝樓主,寫得很好!
鑒定了我學下去的信心!

22

主题

396

帖子

5195

积分

五级会员(50)

Rank: 5

积分
5195
4#
发表于 2010-4-12 17:39 | 只看该作者
楼主辛苦了,关注中!支持一下

11

主题

173

帖子

1984

积分

四级会员(40)

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

积分
1984
5#
发表于 2010-4-13 21:51 | 只看该作者
收益匪浅啊

11

主题

173

帖子

1984

积分

四级会员(40)

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

积分
1984
6#
发表于 2010-4-14 09:22 | 只看该作者
期待第六天

16

主题

267

帖子

2584

积分

四级会员(40)

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

积分
2584
7#
发表于 2010-4-20 17:23 | 只看该作者
很好,谢谢

1

主题

90

帖子

237

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
237
8#
发表于 2010-4-22 13:47 | 只看该作者
很好。正在学了。顶起来,

6

主题

154

帖子

3263

积分

五级会员(50)

Rank: 5

积分
3263
9#
发表于 2010-5-1 08:55 | 只看该作者
谢谢。
态度决定一切,
行动创造未来。

0

主题

12

帖子

-1万

积分

未知游客(0)

积分
-11900
10#
发表于 2010-5-21 12:22 | 只看该作者
顶啊,不过后面几天呢?

35

主题

152

帖子

740

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
740
11#
发表于 2010-5-22 21:53 | 只看该作者
楼主后面何时在更新啊,泪流期待。。

4

主题

9

帖子

-8961

积分

未知游客(0)

积分
-8961
12#
发表于 2010-7-14 13:57 | 只看该作者
好东西,期待楼主的更新!

0

主题

41

帖子

657

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
657
13#
发表于 2010-9-10 09:07 | 只看该作者
好东西,期待楼主的更新!

21

主题

197

帖子

551

积分

三级会员(30)

Rank: 3Rank: 3Rank: 3

积分
551
14#
发表于 2011-1-23 20:44 | 只看该作者
顶!

0

主题

13

帖子

-8986

积分

未知游客(0)

积分
-8986
15#
发表于 2011-4-15 10:55 | 只看该作者
学习中
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

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

巢课

技术风云榜

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

GMT+8, 2024-11-22 03:39 , Processed in 0.070557 second(s), 40 queries , Gzip On.

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

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

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