|
十天学会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
评分
-
查看全部评分
|