本文首发于:VAPS XT开发入门教程06:新建文件介绍
我们来看一下VAPS XT的基本文件类型和格式
VAPS XT工程的所有文件都是XML格式保存的。一个页面一般会保存为两个文件*.vcls/*.vimp
。vcls(v class)一般保存声明,比如数据结构、事件名称等等,vimp(v implementation)一般保存页面的实现、事件的操作等等
点击新建
Root Project
最开始的第一步肯定是新建根工程,扩展名为*.vrpj。其他的所有文件都是依附于根工程下的。
有且只有一个
设置工程名,工程保存路径
点击确认
可以看到,空白工程也会自动添加一些文件。
Graphical Object(GO)
最常用的
设置名称,路径,绘图单位。
会自动跳转到属性设置界面
添加我们需要的属性,可以是软件自带的,也可以是我们设计的数据结构。
打开设计文件
默认为黑色。
我们向里面添加一个子页面,虽然是子页面,但是有可能是可此页面是同级的。
可以看到,只要把子页面放进去,右侧就可以预览。
在数据流中,HyperTemplateSmallWindow_1是子页面的名称,而.
后面的选项就是在vcls中设置的属性数据结构。
也可以在事件、状态机中使用。
Format
Format文件保存也是vcls/vimp,但是它没有属性页面,只有设计页面。
Format页面可以被编译为lib/exe。而其他的页面只能导出为代码。
Container
![container](https://cdn.feater.top/vapsxt_new_container.png?imageView2/0/q/75|watermark/2/text/ZmVhdGVyLnRvcA==/font/5a6L5L2T/fontsize/800/fill/I0ZGMDAwMA==/dissolve/100/gravity/SouthWest/dx/10/dy/10)
暂时没发现和GO有什么区别
Clipboard Object
![clipboard](https://cdn.feater.top/vapsxt_new_clipboard_object.png?imageView2/0/q/75|watermark/2/text/ZmVhdGVyLnRvcA==/font/5a6L5L2T/fontsize/800/fill/I0ZGMDAwMA==/dissolve/100/gravity/SouthWest/dx/10/dy/10)
使用和GO差不多,但是它和GO不同的地方是一般的GO在使用时是引用,而这个会创建一个新的。
Calculator
![calculator](https://cdn.feater.top/vapsxt_new_calculator.png?imageView2/0/q/75|watermark/2/text/ZmVhdGVyLnRvcA==/font/5a6L5L2T/fontsize/800/fill/I0ZGMDAwMA==/dissolve/100/gravity/SouthWest/dx/10/dy/10)
自定义计算器,不定数量的输入,不定数量的输出,具体的算法需要自己在vimp文件中实现。
当然,如果不需要自己实现计算器,可以使用Toolbox中的Calculators控件。详见VAPS XT开发入门教程09:计算器介绍
Data Sender/Receiver
数据发送接收控件
![data](https://cdn.feater.top/vapsxt_new_data_sender_receiver.png?imageView2/0/q/75|watermark/2/text/ZmVhdGVyLnRvcA==/font/5a6L5L2T/fontsize/800/fill/I0ZGMDAwMA==/dissolve/100/gravity/SouthWest/dx/10/dy/10)
既然是发送接受数据,那么是什么样的数据呢?需要在Type中指定,也可以是自定义数据结构(见VAPS XT开发入门教程10:基本数据类型介绍)
点击确定后,会在工程中添加两个文件
![rcv](https://cdn.feater.top/vapsxt_data_rcvf50buf.png?imageView2/0/q/75|watermark/2/text/ZmVhdGVyLnRvcA==/font/5a6L5L2T/fontsize/800/fill/I0ZGMDAwMA==/dissolve/100/gravity/SouthWest/dx/10/dy/10)
可以看到它在我们设置的名称f50Buff前自动添加了snd/rcv关键词。
使用时将需要的控件拖拽到界面中然后就能使用缓存中的数据了。
Subproject
![subproject](https://cdn.feater.top/vapsxt_new_subproject.png?imageView2/0/q/75|watermark/2/text/ZmVhdGVyLnRvcA==/font/5a6L5L2T/fontsize/800/fill/I0ZGMDAwMA==/dissolve/100/gravity/SouthWest/dx/10/dy/10)
我们来看一下实际的效果
![demo](https://cdn.feater.top/vapsxt_subproject_demo.png?imageView2/0/q/75|watermark/2/text/ZmVhdGVyLnRvcA==/font/5a6L5L2T/fontsize/800/fill/I0ZGMDAwMA==/dissolve/100/gravity/SouthWest/dx/10/dy/10)
DataIO子工程下包含一系列文件,而且这个只是VAPS XT工程的树状管理,如果文件也需要树状管理,那么就需要手动操作修改文件所在的路径了
Class
单独使用
单独使用就是数据结构的实例化,要将基类改为Data
合并使用
见下面两个
Built Implementation
Class + Built Implementation和起来就是GO
Coded Implementatin
Class + Coded Implementation和起来就是CodedObjects,详见
Table
可以在子工程中添加与根工程一样的Table以使用图片表或者字体表
Display Definition
暂时没发现和Format有什么区别
Styling Rules
类似Qt中的qss,设置统一的格式,然后共享使用