找回密码
 注册
查看: 10741|回复: 33
打印 上一主题 下一主题

十天学会Skill之第五天

    [复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-3-8 11:45 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

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

x
十天学会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文件示例,可以参考一下。

评分

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

查看全部评分

该用户从未签到

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

该用户从未签到

推荐
发表于 2015-8-22 20:15 | 只看该作者
支持支持支持  非常感謝
  • TA的每日心情
    奋斗
    2025-4-23 15:54
  • 签到天数: 170 天

    [LV.7]常住居民III

    推荐
    发表于 2023-11-2 15:09 | 只看该作者
    学习,学习,谢谢分享

    该用户从未签到

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

    该用户从未签到

    6#
    发表于 2010-3-8 20:40 | 只看该作者
    謝謝樓主,寫得很好!
    鑒定了我學下去的信心!
  • TA的每日心情
    奋斗
    2023-2-7 15:02
  • 签到天数: 206 天

    [LV.7]常住居民III

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

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

    12#
    发表于 2010-5-1 08:55 | 只看该作者
    谢谢。

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

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

    该用户从未签到

    17#
    发表于 2011-1-23 20:44 | 只看该作者
    顶!

    该用户从未签到

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

    本版积分规则

    关闭

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

    EDA365公众号

    关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

    GMT+8, 2025-5-24 13:26 , Processed in 0.093750 second(s), 33 queries , Gzip On.

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

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

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