vivienluo 发表于 2013-4-25 23:45:31

SKILL FORM语法格式详解

allegro skill FORM采用巴科斯范式(BNF)的语法格式。
其一般格式为:
FILE_TYPE=FORM_DEFN VERSION=2
FORM
formtype
PORT w h
HEADER "text"
form_header
{tile_def}
ENDFORM

其中:
1. “FILE_TYPE=FORM_DEFN VERSION=2” 这行内容不能修改,且必须出现在FORM文件的第一行。
2. “FORM ”表示FORM开始,FORM到ENDFORM为FORM之间的内容。
3. “formtype”有两个选择,一个为“FIXED” 另一个为 “VARIABLE”,但SKILL只支持“FIXED”类型,所以默认该部分填写“FIXED”
4. “PORT w h” 用于描述FORM的高度和宽度。其中“w-width”描述的是宽度,“h-height”描述的是高度,可根据需要填写。
5. “HEADER "text"” FORM标题栏显示的字符,将"text"替换为自己需要的字符串。
6. form_header包含以下三个选项
   1)[{default_button_def}]定义默认按键标签   2)[{popup_def}]
   3)[{message_def}]

7.“{tile_def}”这是FORM的主要部分,FORM上的各个控件都在该部分定义,比如标签、文本框、按键等。后续本站将会有详细的介绍。
TILE [<tileLabel>]

[{text_def}]
[{group_def}]
[{field_def}]
[{button_def}]
[{grid_def}]
[{glex_def}]
ENDTILE
下面提供一个简单的FORM例子:FILE_TYPE=FORM_DEFN VERSION=2      ;固定不变
FORM                                                      ;表示FORM开始
FIXED                                                      ;FORM类型,这句也固定
PORT 40 4                                                ;FORM大小
HEADER "SKILL FORM TEST"                ;FORM标题栏显示的字符串

TILE                                    ;TILE开始,在FORM最后必须有ENDTILE结束,否则产生错误。
TEXT "Please Input Your Name:"      ;定义一个文本
TLOC 1 1                        ;定义文本位置
ENDTEXT                              ;文本结束

FIELD My_Name                ;定义一个FIELD字段,字段名为My_Name
FLOC 19 1                        ;定义位置
STRFILLIN 13 13                ;定义位置
ENDFIELD                        ;结束FIELD定义

FIELD CMD_OK                ;定义一个FIELD字段,字段名为My_Name
FLOC 35 1                        ;定义位置
MENUBUTTON "OK" 4 3      ;定义一个按键,按键名为“OK”,长宽分别为4 3
ENDFIELD                        ;结束FIELD定义

ENDTILE                              ;结束TILE,与前面的TILE对应
ENDFORM                              ;结束FORM,与前面的FORM对应FORM最终显示效果请看下图:


需要的朋友 可从附件下载FORM测试文件。
使用方法:
1.将解压出来的文件存放于电脑中
2.打开allegro,在命令栏输入skill axlFormTest("file path"),其中file path为文件完整路径。

注:
1.FORM文件的第一行必须为FILE_TYPE
2.FROM文件扩展名必须为.form
3.一个form文件中必须只有一个FORM
4.FORM文件中必须只有一个TILE定义




vivienluo 发表于 2013-5-11 23:08:33

子木 发表于 2013-5-11 22:46 static/image/common/back.gif
这句是多余的吗?还有那位置你是如何定位的啊,就看不懂这里啊?

肯定不是多余的 啊。
FIELD CMD_OK 是定义一个字段名字,在以后的使用它都是通过这个名字来识别的。
FLOC 35 1这个是定义它的位置放在什么地方。
MENUBUTTON "OK" 4 3 这个才是关键的,定义它到底是个什么东西。这儿是定义一个按键。按键上显示为"OK"

vivienluo 发表于 2013-5-11 23:25:19

子木 发表于 2013-5-11 23:18 static/image/common/back.gif
我是想知道数字35 1代表的什么意思,为什么有的用FLOC有的又用TLOC
FLOC 于TLOC 区别就再于第一个字母。
你可以这样记忆:
LOC是location(位置)的缩写。
FLOC 是为FIELD 定义坐标的,因为FIELD第一个字母是F
TLOC 是为TEXT 定义坐标的,因为TEXT第一个字母是T
当然还有其他,比如GROUP,那么就使用GLOC定义坐标。

vivienluo 发表于 2013-5-11 23:26:14

子木 发表于 2013-5-11 23:18 static/image/common/back.gif
我是想知道数字35 1代表的什么意思,为什么有的用FLOC有的又用TLOC

数字代表坐标,第一个是X坐标,第二个是Y坐标。

duan 发表于 2013-8-17 05:40:39

谢谢楼主!

mmmmyuitian 发表于 2014-2-13 14:53:44

能有tab 類型的form的舉例嗎如圖下圖

vivienluo 发表于 2014-2-13 15:22:03

mmmmyuitian 发表于 2014-2-13 14:53 static/image/common/back.gif
能有tab 類型的form的舉例嗎如圖下圖

FILE_TYPE = FORM_DEFN VERSION=2
FORM
FIXED
PORT 40 35
HEADER "xxxxxx"
TILE

TABSET "tab"
OPTIONS tabsetDispatch
FLOC 2 1
FSIZE 35 17

TAB "xxxx"
xxxx

ENDTAB

TAB "xxxx"
xxxxx
ENDTAB

ENDTABSET

ENDTILE
ENDFORM

mmmmyuitian 发表于 2014-2-13 15:44:55

fprintf(myform "TABSET "tab\"\n")
fprintf(myform "OPTIONS tabsetDispatch\n")
fprintf(myform "FLOC2 1\n")
fprintf(myform "FSIZE35 17\n")
fprintf(myform "TAB \"Setup\"\n")

XXXX
fprintf(myform "ENDTAB\n\n")
fprintf(myform "TAB \"CHECK\" \n")

XXX
fprintf(myform "ENDTAB\n\n")               
fprintf(myform "ENDTABSET\n\n")
請幫忙看看有什麼不同

lyh289114980 发表于 2014-10-27 10:46:59

版主请问填写方框有记忆功能是怎么实现的

linuxfor 发表于 2015-1-2 17:47:48

本帖最后由 linuxfor 于 2015-1-2 18:10 编辑

强悍,自己初学者只能看看了!!
使用set telskill
Skill>axlFormTest("d:/MyEmbStudio/skill/test.form")
页: [1] 2
查看完整版本: SKILL FORM语法格式详解