EDA365电子工程师网

标题: FORM自动创建工具 [打印本页]

作者: kevin890505    时间: 2014-8-15 15:13
标题: FORM自动创建工具
本帖最后由 kevin890505 于 2014-8-18 21:54 编辑

一般skill大家都把form整合在il里面,但是自己写FORM的时候由于位置,尺寸等原因往往要测试无数次才能达到想要的效果,这个过程不知道大家感觉如何,反正我觉得好像盲人摸象一样,头大的很,今天偶然看到别的论坛有人发的这个工具,NBXX,很直观
而且转换完成后直接生产il文件,里面包含主函数以及form函数和form-action函数,很方便,人性化,对于创建一些复杂form应该有帮助

使用方法也比较简单:
1,先用koda软件手动绘制好你要的FORM,然后保存为KXF文件
2,再用xml2bnf把刚才的KXF转化为il文件
3,自己修改下里面的函数或者参数名,OK,接下来就自由发挥了
帅气的很
附上地址:
KODA:http://koda.darkhost.ru/page.php?id=download
XML2BNF:https://github.com/xml2bnf/xml2bnf

由于第二个网址貌似还不是有点卡,5M的东西下了我10分钟,还是把附件传上来好点,顺便一起传了吧

顺便加个例子瞧瞧,这个是用里面的模板界面转换成的form
  1. (defun my_form ()
  2.                         time = getCurrentTime()
  3.                         time = parseString(time)
  4.                         day = nth(1 time)
  5.                         month = car(time)
  6.                         month = upperCase(month)
  7.                         year = nth(3 time)
  8.                         date = strcat(" Date: " day " " month " " year)
  9.                          CreateForm()
  10.                         myform=axlFormCreate( (gensym) form_file nil 'Form_Action t)
  11.                         axlFormDisplay(myform)
  12.                         axlUIWPrint(myform date)
  13.                 )
  14. (defun CreateForm ()
  15. drain()
  16. form_file = "TAB_form.form"
  17. myform = outfile(form_file "w")
  18. fprintf(myform "#Created by xml2bnf  perl utility\n")
  19. fprintf(myform "#Coded by Venkata Ramanan/Santa Clara, CA\n\n")
  20. fprintf(myform "FILE_TYPE=FORM_DEFN VERSION=2\n")
  21. fprintf(myform "FORM AUTOGREYTEXT\n")
  22. fprintf(myform "FIXED\n")
  23. fprintf(myform "PORT 62 33\n")
  24. fprintf(myform "HEADER \"Form Field Type Demo\"\n\n")
  25. fprintf(myform "POPUP <ENUM>\"ITEM1\"\"0\",\"ITEM2\"\"1\",\"ITEM3\"\"2\",\"LAST ONE\"\"3\".\n\n")
  26. fprintf(myform "TILE\n\n")
  27. fprintf(myform "## TAB Definition Start## \n")
  28. fprintf(myform "TABSET \"tab\"\n")
  29. fprintf(myform "OPTIONS tabsetDispatch\n")
  30. fprintf(myform "FLOC 1 1\n")
  31. fprintf(myform "FSIZE 57 24\n\n")
  32. fprintf(myform "TAB \"TabSheet1\"\n\n")
  33. fprintf(myform "## Text Field in TAB## \n")
  34. fprintf(myform "TEXT \"Label1\"\n")
  35. fprintf(myform "FLOC 7 3\n")
  36. fprintf(myform "TGROUP \"TabSheet1\"\n")
  37. fprintf(myform "ENDTEXT\n\n")
  38. fprintf(myform "## Text Field in TAB## \n")
  39. fprintf(myform "TEXT \"Label1\"\n")
  40. fprintf(myform "FLOC 7 10\n")
  41. fprintf(myform "TGROUP \"TabSheet1\"\n")
  42. fprintf(myform "ENDTEXT\n\n")
  43. fprintf(myform "ENDTAB\n\n")
  44. fprintf(myform "TAB \"TabSheet2\"\n\n")
  45. fprintf(myform "## List Field in TAB## \n")
  46. fprintf(myform "FIELD List1\n")
  47. fprintf(myform "FLOC 7 6\n")
  48. fprintf(myform "LIST \" \" 14 6\n")
  49. fprintf(myform "FGROUP \"TabSheet2\"\n")
  50. fprintf(myform "ENDFIELD \n\n")
  51. fprintf(myform "## List Field in TAB## \n")
  52. fprintf(myform "FIELD List2\n")
  53. fprintf(myform "FLOC 30 6\n")
  54. fprintf(myform "LIST \" \" 15 6\n")
  55. fprintf(myform "FGROUP \"TabSheet2\"\n")
  56. fprintf(myform "ENDFIELD \n\n")
  57. fprintf(myform "## Text Field in TAB## \n")
  58. fprintf(myform "TEXT \"Label3\"\n")
  59. fprintf(myform "FLOC 7 4\n")
  60. fprintf(myform "TGROUP \"TabSheet2\"\n")
  61. fprintf(myform "ENDTEXT\n\n")
  62. fprintf(myform "## Text Field in TAB## \n")
  63. fprintf(myform "TEXT \"Label4\"\n")
  64. fprintf(myform "FLOC 31 4\n")
  65. fprintf(myform "TGROUP \"TabSheet2\"\n")
  66. fprintf(myform "ENDTEXT\n\n")
  67. fprintf(myform "ENDTAB\n\n")
  68. fprintf(myform "TAB \"TabSheet3\"\n\n")
  69. fprintf(myform "ENDTAB\n\n")
  70. fprintf(myform "ENDTABSET\n\n")
  71. fprintf(myform "ENDTILE\n\n")
  72. fprintf(myform "ENDFORM\n\n")

  73. close(myform)
  74. )


  75. (defun Form_Action (myform)
  76. (let (t1 item index field cnt)(printf "field/value %L = %L (int %L\n)"
  77. myform->curField myform->curValue, myform->curValueInt )
  78. (printf "doneState %L\n" myform->doneState )
  79. case(myform->curField
  80.                 ("List1"

  81.                 ;List Field
  82.                 ;Enter Action Here
  83.                
  84.                 )
  85.                 ("List2"

  86.                 ;List Field
  87.                 ;Enter Action Here
  88.                
  89.                 )
  90.         )
  91.                 )

  92. if((nequal myform->doneState 0)
  93. axlFormClose(myform))
  94. )
复制代码

作者: GSO_library    时间: 2014-8-18 11:00
这写软件是免费的吗?公司可不可以用
作者: GSO_library    时间: 2014-8-18 11:02
软件需不需要license
作者: recallme    时间: 2014-8-19 10:06
学习了
作者: pallayout    时间: 2014-8-28 19:30
好像不能实现用bmp
作者: kkman2000    时间: 2015-8-21 14:28
支持支持支持  非常感謝
作者: liuanty    时间: 2016-6-4 08:00
下载试试感谢楼主分享!
作者: hy20060614    时间: 2016-6-14 11:16
谢谢分享
作者: weiprop    时间: 2017-1-26 07:36
謝謝分享
作者: lovesweet33    时间: 2017-1-26 18:47
感谢楼主分享~
作者: lovesweet33    时间: 2017-1-27 08:24
感谢楼主分享~
作者: mentorkk    时间: 2017-1-27 09:51
感谢楼主分享~
作者: lovesweet33    时间: 2017-1-28 19:34
感谢楼主分享
作者: 王开鑫55    时间: 2017-8-2 14:17
本帖最后由 王开鑫55 于 2017-8-2 14:23 编辑

可以,不错,不能放在中文目录下,我放在桌面上的,不能转换
作者: billgong168    时间: 2017-10-13 12:14
楼主真是好人啊,感谢分享。
作者: maikeo    时间: 2018-1-23 22:34
标记一下,非常感谢
作者: digitzing    时间: 2018-2-6 15:31
好东西,顶起了!
作者: gonumc    时间: 2018-2-24 16:40
谢谢楼主分享
作者: lorby    时间: 2018-7-14 20:31
很好的工具




欢迎光临 EDA365电子工程师网 (http://bbs.elecnest.cn/) Powered by Discuz! X3.2