Cadence Skill 论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 20631|回复: 13

[AXL函数] FORM创建函数 - axlFormCreate

[复制链接]
发表于 2013-5-13 22:00:47 | 显示全部楼层 |阅读模式
axlFormCreate函数用于加载一个FORM,并返回创建FORM的DBID,axlFormCreate一般结构为:
axlFormCreate(
s_formHandle
t_formfile
[lt_placement]
g_formAction
g_nonBlock
[g_stringOption]
)
⇒ r_form/nil

注意,FORM必须为FIXED类型,否则将不能使用axlFormCreate创建form,使用该函数创建FORM后,并不会立即将FORM显示出来,必须使用axlFormDisplay函数显示FORM。

各个参数详解:
s_formHandle : 这个代表FORM的句柄,简单的理解,就是该FORM在那个窗口上显示,一般这个参数我们使用 (gensym)

t_formfile :这个指定FORM文件的完整路径。

[lt_placement] :可选参数,这个代表FORM的显示位置。当使用nil 时,allegro会调用默认的位置显示。
下面是位置参数(注,使用的时候选择括号中的字母即可)
north(n) northeast(ne) east(e) southeast(se)
south(s) southwest(sw) west(w) northwest(nw)
center(c)

Inner or Outer 设置FORM显示在ALLEGRO里面还是外面,默认为里面即 Inner
Canvas or Window 设置FORM显示在drawing area还是整个windows,drawing area即allegro中绘制PCB的区域(简单理解,就是黑色的那个大区域)
其他还包括Border or NoBorder、MsgLines (Default 1),这儿就不说了,基本上很少用到。

比如我想显示在左上角,即northwest(nw),且在drawing area区域显示,那么lt_placement参数就使用(nw Canvas)
g_formAction :对FORM所有触发事件响应的函数,比如对点击某个按钮,则会执行该函数。

g_nonBlock :可设置FORM是否在non-blocking模式下运行。

[g_stringOption] :可选参数,如果为t,那么form返回的所有值都为string格式。一般设置为nil

返回值:
r_form/nil ,加载成功则返回form的dbid,否则返回nil


例子:
  1. form = axlFormCreate( (gensym) "formtest.form" '(se outer) '_formtestCallBk t )
复制代码
这里加载一个FORM,显示在southeast(se),事件函数为_formtestCallBk。



发表于 2015-1-16 11:41:51 | 显示全部楼层
太详细了,谢谢!
发表于 2015-1-16 11:42:38 | 显示全部楼层
太详细了,谢谢!
发表于 2015-4-18 08:26:09 来自手机 | 显示全部楼层
罗老师辛苦了,正需要,收藏了。
发表于 2015-4-18 08:26:55 来自手机 | 显示全部楼层
罗老师,non-blocking模式是啥意思呀?
 楼主| 发表于 2015-4-18 10:01:39 | 显示全部楼层
leench124 发表于 2015-4-18 08:26
罗老师,non-blocking模式是啥意思呀?

non-blocking就是FORM状态下能否运行其他的命令,FORM显示与其他运行不冲突。
发表于 2015-4-18 12:26:47 来自手机 | 显示全部楼层
vivienluo 发表于 2015-4-18 10:01
non-blocking就是FORM状态下能否运行其他的命令,FORM显示与其他运行不冲突。

明白了,另外补充下。当处于block状态时只会阻止skill命令,对allegro命令没有影响。换言之,是否处于non-blocking状态,对allegro命令没有影响,还可以执行add cline,move等allegro命令。
附上help文档的英文原文:
Use of blocking mode blocks the progress of the SKILL code, but does not prevent other Allegro PCB Editor events from occurring. For example, if blocked, users can start the Add Line command from Allegro PCB Editor menus.
发表于 2017-2-4 09:30:53 | 显示全部楼层
继续学习中,感谢。
发表于 2017-4-28 10:34:52 | 显示全部楼层
罗老师,我無法指定 Form 顯示的位置 (一直在同個位置顯示)
用法如下: (想顯示在左上)
axlFormCreate('myform "./Form_file.form" '(nw Canvas) 'f_callback nil)

不知哪裡出問題...
发表于 2020-2-20 10:03:32 | 显示全部楼层
谢谢罗老师
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|网站地图|Cadence Skill 论坛 ( 蜀ICP备13024417号 )

GMT+8, 2024-12-26 14:12 , Processed in 0.143450 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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