vivienluo 发表于 2014-11-21 22:28:40

FORM中列表框(LIST)的使用详解

LIST列表框可使用户方便的选择某项或同时选择多项。LIST中包含了多个选项清单。
其显示效果如下:


在FORM中,LIST定义下FIELD字段部分,通过关键词LIST定义,方法如下:
LIST基本结构如下:

FIELD label
FLOC x y
LIST "" w h
list_options
ENDFIELD
例如:

FIELD listTest             ;定义FIELD字段
FLOC 1 3                  ;定义FIELD坐标位置
LIST "" 18 6            ;定义LIST列表框
ENDFIELD               ;结束FIELD
说明:
LIST基本结构为LIST "" w h , 其中LIST后面的双引号必须保留,请双引号中间无任何字符,w表示的是LIST的宽度,h表示的是LIST的高度,当LIST中选项过多或过长时,LIST会自动显示水平或垂直滚动条,不需要手动设置。
list可选项list_options可设置LIST中个项如何排序,当设置为OPTIONS SORT时,会自动以数字、字母增序排列,比如最开始的图片,当设置为SORT时显示效果看下图,注意其中的区别:



list_options还可设置为ALPHANUMSORT、PRETTYPRINT。其中的区别此处就不多说了,可以自己去测试下。

LIST默认是只能选择单项的,如果需要选择多项,可在上面说的OPTIONS后面加关键词 multiselect实现多选。例如OPTIONS PRETTYPRINT multiselect

下面介绍下skill中常用的LIST操作AXL函数:
axlFormListOptions 用于设置是否双击进行选择,LIST默认的是单击选择。
axlFormListDeleteAll 用于删除LIST中所有的LIST项
axlFormListSelect 用于选择LIST中某一个LIST项
axlFormListGetItem 用于获取指定索引的LIST项,比如获取排在第三个的LIST项。
axlFormListAddItem 用于向LIST中添加指定的项
axlFormListDeleteItem 用于向LIST中删除指定的项
axlFormListGetSelCount 用于获取LIST中选择个数,仅在LIST设置为多选的情况下有效。
axlFormListGetSelItems 用于获取LIST中选择的项,仅在LIST设置为多选的情况下有效。
axlFormListSelAll 选中LIST中所有的项,仅在LIST设置为多选的情况下有效。


更多关于LIST的操作,可回复本贴进行讨论。。。

本列的详细代码如下:
FORM文件:
FILE_TYPE=FORM_DEFN VERSION=2      
FORM                                                      
FIXED                                                      
PORT 20 4                                             
HEADER "FORM LIST TEST"               

TILE
                                 
TEXT "LIST列表框测试"      
TLOC 1 1                        
ENDTEXT                              

FIELD listTest
FLOC 1 3
LIST "" 18 6
OPTIONS PRETTYPRINT multiselect
ENDFIELD

ENDTILE                           
ENDFORM
SKILL文件:defun( formtest ()
      ;axlFormTest("./ListForm.form")
      form = axlFormCreate((gensym) "./ListForm.form" nil nil t)
      axlFormDisplay(form)
      layer = axlGetParam("paramLayerGroup:ETCH")->groupMembers
      axlFormListAddItem(form "listTest" layer -1)
);end defun


stevenzhu 发表于 2014-11-22 09:30:35

沙发舒服,感谢楼主~

chuchiwolong 发表于 2014-11-28 11:24:27

感谢楼主,赞一个!

fhcode 发表于 2015-1-21 12:30:56

学习咯感谢楼主

PKN1216083420 发表于 2015-1-21 17:05:59

谢谢分享!

Dio 发表于 2015-2-4 15:12:49

楼主你好,小生正在慢慢学习FORM和list,感谢楼主的知识分享

我尝试把form源码保存为ListForm.form然后skill 源码添加form的路径,加载后运行,提示

E- *Error* axlFormDisplay: argument #1 should be any user-defined (other) type (type template = "o") - nil

请教下进一步调试的思路应该是怎么样的呢?

vivienluo 发表于 2015-2-4 17:15:53

Dio 发表于 2015-2-4 15:12
楼主你好,小生正在慢慢学习FORM和list,感谢楼主的知识分享

我尝试把form源码保存为ListForm.form然 ...

出现这种问题一般都是form文件格式有错误。
你可以先使用axlFormTest测试Form是否能够正常显示。

Dio 发表于 2015-2-4 17:29:49

vivienluo 发表于 2015-2-4 17:15
出现这种问题一般都是form文件格式有错误。
你可以先使用axlFormTest测试Form是否能够正常显示。

是的,form里面多了个乱码,不过后来正常调入form之后list框是空白,看来.il的一些语句我还要看下

wisology 发表于 2015-2-7 22:39:32

学习了,讲的很详细。

王开鑫55 发表于 2018-1-6 14:20:07

有获取list里所有内容的函数?
页: [1] 2
查看完整版本: FORM中列表框(LIST)的使用详解