学习记录:用aardio软件开发上位机
一直想学习一款软件能做上位机用,
我的要求: 能生成 独立的 / 绿色的 exe
很喜欢市面上那种 只有一个 exe文件, 无需安装,直接可以运行 ,界面功能不需要很多够用就行.
不需要安装任何运行库,labvIEW和labwindows都需要NI的运行库,一个库都几百兆
vb的程序需要.net环境.
用c++编程倒是满足,可惜不会
delphi貌似生成的也很大.
昨天找到个国产软件 aardio,
aardio 专用于桌面软件快速开发,开发环境仅 6.5 MB, 绿色软件解压即用 - 无论个人或企业都可以永久免费使用本软件开发商用、或非商用的应用程序。使用aardio开发的软件不需要放置鸣谢链接、不需要声明使用aardio开发。
aardio 编程语言aardio是专用于桌面软件快速开发的新一代混合型编程语言 - 具有动态语言轻便、灵活的特性,而且又可以同时支持静态类型开发,象静态语言那样使用。aardio可以直接支持原生DLL,即使是外部EXE进程中的函数,也可以使用一句代码声明为普通的aardio函数对象( 原生call支持 ),aardio支持非常多的标准调用约定,例如 stdcall,cdecl,thiscall,fastcall,regparm(n) 等调用约定都可以支持。aardio虽然小,但支持的接口很丰富、可以支持com静态动态双接口,象VBS一样原生支持com对象。
用一个简单的代码演示一下,下面的aardio代码定义了一个结构体:
//定义类这种全新的混合编程语言开创了一种全新的编程方式,也因为这种语言特性,aardio可以非常方便的嵌入各种第三方语言,目前aardio可以嵌入汇编机器码,C语言,Java,PHP,C#,Python,Javascript,VBScript......等等数量众多的第三方编程语言,方便的互调函数,并且这些调用第三方语言的功能模块都是使用aardio实现( 开放源码 )。
class POINT {
int x; int y; //静态类型
func = function(){
//动态类型
}
}
aardio可以将硬盘目录,硬盘文件一键嵌入EXE文件,将全部程序包含所有资源生成独立的绿色EXE文件,aardio制作的程序大多不需要安装程序,也不需要释放DLL运行库,可以方便的制作免安装绿色软件。
aardio支持多线程开发,复杂的多线程开发在aardio中变得非常简单,标准库也提供大量简化多线程开发的辅助支持库,为多线程软件开发带来很大的方便(请参考aardio范例 -> 多线程 )。
aardio的标准库基本使用纯aardio源码实现,并且全部开源,标准库提供了大量的简化编程的常用函数,涉及到软件开发的方方面面,极大的简化了桌面软件开发过程。
好了,没事的时候学习一下这个软件,开贴记录.
84 个回复
admin
赞同来自:
再看上面实现的皮肤代码:
a:link是超级链接的初始状态
a:hover是把鼠标放上去时悬停的状况
a:active 是鼠标点击时
a:visited是访问过后的情况
admin
赞同来自: tinyuns
串口通信: 调用Pcomm.dll,来编写一个串口调试工具
整体界面
在[用户库]中添加一个代码文件Pcomm.aardio
上面是对外部dll的调用方法,
主界面的代码:
上面特别注意的地方是查询电脑上有的串口的操作:
admin
赞同来自:
1.状态栏的使用
这个要用到 首先定义一个状态栏,在底部增加 往状态栏里面添加元素块,并分别定义他们的宽度是整个窗口宽度的一半 当我们需要改变状态栏相应元素块,要用到 后面的 1 意思是第几个分块,这里第一个分块里面写的是端口状态,第二个分块写的是操作状态.
上面的意思就是:往第一个区块里写入:端口状态:端口打开成功,端口号.....
2. 字符串的操作
这里要说一下有个地方 上面msg定义的是字符型,所以主函数调用的时候,用的是
status.setText("端口状态:"++Pcomm.Msg[tostring(state)],1)
把state的状态转换为string后取的值.!!3.回调函数的使用 使用的时候,是在 打开串口的一瞬间. 打开端口,设置端口参数,然后使能接收回调
admin
赞同来自:
admin
赞同来自:
dll的api的使用:
例如
原型是
可以看出,int还是int,但是buf这个数组指针就要写为pointer
然后是
虽然也可以写为
但是因为函数的原型为
我还是建议利用上面那种写法,这样更容易理解.
原型为
VOID (CALLBACK *func)(int port)的指针函数要改为
pointer func(int port)
admin
赞同来自:
可以做机器码用。
admin
赞同来自:
以前都是找内存读取滚动条位置,后来遇到一个游戏客户端的滚动条内存基址怎么也找不到,做了很多努力都失败了,因为这个内存基址已经不属于程序领空。最后感觉这个滚动条应该是系统直接控制的, 和程序本身关系不大,所以直接调用系统的API应该可以获得。本人小白, API了解的不多,网上查了查资料才会用这个API了,现在回想起来,以前真是走了很多弯路,能直接用API获取的数据,我居然那么多次都去找内存、找基址。好在这次老办法遇到困难,才知道了这个简单办法。
下面是AAU(AARDIO)中获取窗口滚动条位置的API用法:
GetScrollPos= User32.api(“GetScrollPos”,”int(int hWnd,int bar)”);
pos=GetScrollPos(hwnd,0);
第一个参数是窗口句柄,第二个参数是滚动条方向。0:横向 1:竖向
晴朗 - 智能计量研发
赞同来自: tinyuns 、陈鸿
非常感谢admin,只学写c,非常想自己开发上位机软件开发测试程序,但一直不知道aardio,今天看到admin的帖子才知道,非常感谢。
admin
赞同来自: (/≧▽≦)/~┴┴
窗体中嵌入外部应用程序示例:
admin
赞同来自:
winform.button.oncommand = function(id,event){
var hwnd = winex.waitActive(,,,,,process("calc.exe").id)
win.setParent(hwnd,winform.edit.hwnd);
//win.setPos(hwnd,0,0)
}
任意的控件,使用它的句柄就可以了.
补充:
win.center(hwnd) 居中放置窗口,参数是窗口的句柄
admin
赞同来自:
操作外部窗体测试:
第一步测试,先查找已经打开的第一幅图中的软件,改软件里面有个按钮,点击后弹出"你好",
在设计里面添加一个按钮,功能是先
用winex.find查找打开的软件的名字,获取到这个软件的句柄.
然后利用句柄就可以做些事情了.
比如,quit退出这个软件,settext重新设置这个软件的标题名称.
admin
赞同来自:
实现查找外部窗体中的按钮并执行点击.
利用了winex.findex命令
findEx(.(父窗口句柄,第几个匹配,类名模式串 ,标题模式串, 控件ID )=查找子窗口,除父窗口句柄外所有参数可选\n返回值为句柄
意思是查找这个窗体中的,名字叫"弹出你好"的一个控件数组,但是只选择里面第0个使用,并获取这个控件的id句柄
获取到句柄后,直接运行了点击这个控件的操作,
所以弹出了结果.
admin
赞同来自:
数组去重复操作
听说还有个更好的办法,将数值和键值交换两次...
admin
赞同来自:
这里详细介绍下上面的 数组去重的方法:
定义t3个数组,循环tab数组里面的每个元素,将每个元素值作为数组tab2的键值,如果该键值所在的元素不存在,那么就说明没有重复数字出现,于是将这个数值放入第三个数组tab3中.
这样tab3中就是剔除重复之后的数值了.
这里有个地方要注意的:
tab2[key] =
""
;
这句话,如果是经常写C的人可能不是很理解,写单片机的话,这个就会理解为空,但是aar中却不这样理解,应理解为空字符,这个是个数值.
其实要是改写为:
tab2[key] =
"1"
; 这样可能就更好理解了.就是将这个键值对应的数赋值为1,这样里面就有数值了,那么判断 not tab2[key] 这个就是如果键值对应的数不存在,那么........
admin
赞同来自:
With的用法:
引用自http://bbs.aardio.com/forum.ph ... Dwith
admin
赞同来自: rebellion51
将外部引用的文件,例如dll文件,封装到发布的exe里面:
作用:使发布的文件只有一个exe没有其他多余的文件.
比如,前面介绍的串口调试工具,用到了pcomm.dll文件,那时候发布的程序,包含两个文件,一个exe一个dll,这样看起来不够绿色,所以,在程序的路径里面加入$符号即可.
然后库的目录中,选择 [内嵌资源]
admin
赞同来自:
树形滚动条效果,利用static控件实现:
这里需要牢记的一个地方:
实现的功能是点击窗体的任意位置,按住鼠标不放,能够拖动窗体
代码如下:
这个功能以后肯定会用到
admin
赞同来自:
面板鼠标事件:
0x201是当光标在窗口客户区时,左键单击事件时发出的消息
0x202是当光标在窗口客户区时,用户释放鼠标左键时发出的消息
0x203是当光标在窗口客户区时,左键双击事件时发出的消息
admin
赞同来自: (/≧▽≦)/~┴┴
界面扁平化处理:第一个参数是应用的窗体,第二个参数是透明度(255为不透明),第三个参数是边界羽化宽度
admin
赞同来自:
托盘图标使用方法:
1,弹出托盘和提示信息
2,最小化窗体到托盘,并提示,点击托盘恢复窗体
3,右键点击托盘,弹出一个菜单
admin
赞同来自: Nuclear
记录两种LED数字字体显示的办法:
上面绿色的那个是一个led字体,Digifacewide
这种办法貌似需要在发布的时候,把字体一起打包安装才行......
这个是它的弊端.
另外一个办法是利用plus图片实现,即第二张个黑色的数字那个.
这里面的图片是这样生成的.
先网上下载一个7段式数码图片
删除白色的底,保留黑色的字,然后魔法棒选择黑色的字体的每根线,将每根线保存城一个副本图层,然后全选,新建一个透明图片,保存为png,粘贴后,一根一根删除不用的先,分别保存之后
软件里新建plus将每个图片放入,点击顶部的排序,放置好后,就可以了.
admin
赞同来自:
carl有一个进程通信库
process.command
win.sendCopyData
winform.onCopyData
用这个通信 _WM_COPYDATA,,,我分析一个棋牌游戏找发包CALL,找了好久,原来是用_WM_COPYDATA进行通讯的
win.sendCopyData
winform.onCopyData
这个用法还真简单
admin
赞同来自:
为了能够根据所输入的数值的要给长度自动的增加数码管长度,需要添加一个函数
下面的代码里面bit就是代表位数,比如-765,那么这个-号就是4-1=3位
而这个位数的计算通过下面的办法
第一步取得输入值
第二步分解这个输入值
第三步取得这个输入值的字符数长度
然后根据这个字符长度取得对应位置要显示的数值.
之后就是显示的函数
这里要注意的是,我们平时用到的mainform.Led这样的写法,其实就是mainform[Led]的简化
ok,随意输入数值测试,得到
但是这个还有一个问题,当我之前输入的值长度比现在输入的长度长的时候,那么只会刷新掉后面的,前面的不变,这个问题还么解决
吉米
赞同来自:
学习一下
admin
赞同来自:
http://www.mamicode.com/info-detail-1077379.html
admin
赞同来自:
只有一个架子,没有功能,练习之作
admin
赞同来自:
admin
赞同来自:
如果先检测到了已经占用的话 那么先关闭这个串口 如果没有占用的话 那么再执行打开操作
我想问一下是否可以通过fsys来判断呢?如果不可以的话 是否就需要用
mscomm这样的控件 或者pcomm控件来判断?import fsys.file;
var file = fsys.file("\\.\COM3")
if( file ){
//打开了COM3
file.close();
}
4楼的回答是正确答案 但是可能大家不知道为什么其中要按照给出代码中的格式去写COM3
具体我找了一下相关资料
大家可以看
以下的几个连接
http://www.baidu.com/s?bs=UNC%E8 ... 8%E5%AF%B9%E8%B1%A1
http://www.cnblogs.com/coderle ... .html
http://hi.baidu.com/haibin_gl/ ... 0b294
http://ar.newsmth.net/thread-b45bcc45bd6f25.html
又找了点文章
在百度搜索 CreateFile 串口
http://www.cnblogs.com/ezhong/ ... .html
然后实际测试 是可以的. 这个也是可以的 也可以
也就是说,查询问题应该先从WINAPI入手。。
admin
赞同来自:
要实现按钮点击的动作可编辑,那么按钮对应的流程就要能改,那么就需要在按钮上点击右键能够弹出一个[编辑功能]菜单,于是
先在界面上随便放三个按钮控件,程序里,导入应用窗口
然后把每个按钮的[响应命令]里面添加一个输出显示
这样当按任意按钮的时候,黑色应用窗口就会输出对应信息
,这个时候需要在按钮上面添加一个右键菜单功能,那么需要导入[菜单支持库]
然后先编写一个菜单供引用
菜单完成后就要再按钮上添加此功能了,我们需要使用按钮的[消息回调]功能
所谓消息回调,就是消息(message)的配合,我们需要的是右键消息(0x205/*_WM_RBUTTONUP*/)
但是按钮(botton)没有这种类似富媒体编辑控件的winform.richedit.popMenu()函数,我们只能获取此时鼠标的位置,并将这个位置作为弹出右键菜单的位置
admin
赞同来自: talentkkk
上面按钮是实现了右键菜单,但是如果里面又很多按钮其他的按钮也要这么操作添加,太麻烦了.有没有简单点的办法?
经过大神指点,可以用这种方式,遍历所有的button控件,
于是我们将所有的按钮事件(oncommand)都注释掉,
这样无论你添加了多少个按钮,逗可以输出这个按钮的名称.
admin
赞同来自:
上面显示按钮名称的实现了之后,就可以把先前写的鼠标右键事件,按照上面类似的写法添加到for里面
这样做了之后确实可以点击右键的编辑,实现编辑,
但是,只是修改了其中一个按钮的名字,我要实现点击任意按钮修改任意名称,怎么做?
还是要利用这个for,让每个按钮都按照下面的流程操作
创建弹出菜单
列出此菜单功能函数
创建按钮消息回调
右键消息中加入弹出菜单
这里需要注意一点,上面的代码中
为什么要用name中增加一个pop的字符呢?
这是因为如果不加的话,winform[name]相当于winform.name而这个是界面上面已经存在的控件.会导致出错,随意添加一个字符就避免了这种问题.....
还有一点也要注意,就是下面用到的
这个里面要对应修改啊...
ok,功能实现完毕,
其他的控件都是类似的操作
admin
赞同来自:
获取窗口在整个屏幕中的位置
admin
赞同来自:
退出调用的办法,return.
admin
赞同来自:
如果popup里面不填写参数,那么就默认是此时鼠标点击地方的位置.
所以我们可以这样写
效果和上面的是一样的.
还有一种办法:
如果popup(x,y,true)里面的参数true改为false也一样,
这个true的含义是否是屏幕坐标,选false就不是屏幕坐标就可以直接用x,y了而不需要
x+dx等等操作了
admin
赞同来自:
admin
赞同来自:
笔记:
纠结了一天的dll调用,终于初步搞定了.
函数原型的调用
为什么后面要用cdecl这个调用约定?
我自己的理解是这个dll是用vc++写的,风格呢就是c的风格,所以调用约定指定为C
它的原型是
下一个函数
原型为
还有一个
原型为
这里需要注意的是最后一个,因为版本号的读取,c原型里面是用的指针指向数组的头,是一个字节一字节的数据,所以这样写.
这些操作完成后,需要调用
这里要注意注释部分(110)的0,是随机写的,什么数字都可以的
,要特别注意这里的写法:
这样写是因为aardio中这样规定的,所有原型中修改的数据,必须在输出中体现!
下面是读版本号
因为我们的dll里面已经规定版本号是16个字节,所以我这里填写的是16.
第一步给数据分配空间,
第二步获取str这个指针
第三步,取这个指针的数据,按字节进行处理,
这里参考了以前的帖子里面的串口助手的写法.
admin
赞同来自:
admin
赞同来自: lulmlc
admin
赞同来自:
OCX控件一例:
[com] 利用WMPlayer.OCX制作音乐播放器
admin
赞同来自:
调用
admin
赞同来自:
记录: Hid 上位机实现
利用 UsbHidApi.dll实现hid比较方便
VB用的调用为
先调用dll
一个一个来,先实验下
它的原函数为:
功能为:查看这个dll库的版本,
使用的时候要这样
这里的raw.malloc(10)分配10个内存给它用.
下面是官方的介绍
admin
赞同来自:
下一个
调用的时候用
运行会自动弹出一个弹窗,里面显示的是这个dll的库版本号
admin
赞同来自:
admin
赞同来自:
Hidapi库搞定了,下面是完整的代码:
先上封装的用户库 Usbhidapi.aardio
主程序程序:
main.aardio
功能介绍:
枚举: 列出电脑中所有的hid协议的设备,比如鼠标,键盘.....
使用介绍:
先初始化
打开
设置非阻塞
发送
接收
admin
赞同来自:
群里有大神分享的一个排序最快的办法:
T1,T2,T3三个number, 怎么快速得出它们三个的最大数与最小数的差值???
最简单的办法:
//取跨值
这个办法看起来高大上,但是不知道和循环排序再去减哪个更快?
admin
赞同来自:
转载一个摄像头的调用方法:afvideocapture - 视频捕获控件( 摄像头操作 )
原文地址:http://bbs.aardio.com/forum.php?mod=viewthread&tid=2992&highlight=%C9%E3%CF%F1%CD%B7
主要是对视频设备(摄像头)的操作,函数命名按照 Windows 消息名称命名。
用法第一步:
在aardio中创建 win.form 窗体,从工具箱拖动自定义控件到界面上。
修改自定义控件的类名为 afvideocapture
用法第二步:
切换到代码视图,在 import win.ui 后面添加一行 代码:
范例源码
win.ui.ctrl.afvideocapture支持库源码:
使用方法:
扩展库的名称来看:win.ui.ctrl.afvideocapture
是在win目录下的ui目录中的ctrl虚拟目录里建立一个名称为afvideocapture的用户库文件
然后将哪个扩展库的代码黏贴进去即可.
admin
赞同来自: talentkkk
获取电脑上自带的计算器计算框里面的值:
下面记录下为什么这么写:
需要一个辅助软件 彗星编程助手,这个软件可以获取任意窗体和控件的句柄.
看到右边这个static是位于第四个,所以里面偏移写的是4.
而窗口查找的控件类即为:static
admin
赞同来自: talentkkk
利用QQ邮箱截图TXGYMailCamera.dll使用截图功能:
本来想用微信的那个dll,但是发现微信那个截图保存功能不完善,保存的时候不能选择保存的格式,而且也没默认格式,还要自己手写.
这个dll不能集成到生成的exe文件里,目前不知道原因,只能发布exe之后把这个dll一同发布.
admin
赞同来自: talentkkk
实现一个好玩的功能,将一个压缩包比如rar的,和一个gif动态图片进行合并,然后合并为一个动态的gif图片,
这个图片里面就包含了这个rar的压缩包,而且也不影响这个gif图片的浏览,但是如果你将这个图片的格式改为rar或者zip,那么他就可以加压出来我们合并进去的那个rar文件,
怎么样?好玩吧?
这个可以实现什么功能呢? 封装为gif后,更方便传播了.
而且你可以录制一个gif演示这个压缩包程序的文件,然后把这个程序代码打包放到这个图片里,让别人先看演示动画,看完后,解压图片,就可以运行演示的那个代码.
这样就在D盘生成了一个test.png这样的图片了.
利用windows自带的copy也可以实现这个功能:
admin
赞同来自: lulmlc
截图指定窗口并保存jpg
Travis
赞同来自:
哇,厉害!
wide(BG7RGT)
赞同来自:
学习,再学习,大神
admin
赞同来自:
图表控件:
图表的实现需要引用webkit,利用开源的html5技术,
国内外有很多的这方面的资料:
举例:百度图表,网址echarts.baidu.com
免费使用下载
这里我们新建一个窗体,里面添加一个custom控件,
准备把这个图表显示在这个控件里面,而且填充满控件
利用css属性:
admin
赞同来自: talentkkk
要实现图表能够拖动:
新增的
即可实现.其他的操作看官方文档了
gonghuwei
赞同来自:
太长了,下次看。
PUMA
赞同来自:
mark先,慢慢看
admin
赞同来自: talentkkk
实现透明窗体但是窗体内图片和js显示:
我测试上面的代码之后的显示效果如下:
这里还有要给问题:
当我运行的时候,先出现的是一个常规界面,之后立马转成了上面的图片形式,
没有深入研究,先放着.
admin
赞同来自: talentkkk
回复: 实现透明窗体但是窗体内图片和js显示:
找到问题了,只要将默认的界面设置位无边框就可以了...
admin
赞同来自:
取字符串中的某个字符操作:
示例:
第一次取的是字符3对应的字节码即ascii对应的
而双中括号去到的是对应的字符.
admin
赞同来自:
获取电脑CPU信息的截图,代码楼上已经有了
admin
赞同来自:
转)定时任务的一个例子:
admin
赞同来自:
可控数字格式化方法:
读取输入框中的数字,将它放置到格式化函数中
注意上面用的++ 连接符,这样写! 字符串的连接用++
admin
赞同来自:
查询硬件信息的方法:
在上面我们曾经用到了串口通信,我们利用读取注册表来获取到了系统中所有的硬件串口的端口号,但是,有些时候我们电脑中的硬件串口不止一个,这样的话,我们每次打算使用串口,必须先要去到设备管理器里面看看我们准备使用的硬件串口到底是哪个,才能在软件里面选择相应的com口,这样做就显得繁琐了,我们能不能在软件里面加入一个硬件串口的友好名称指示,这样就不必每次去到设备管理器里面查看了.,
如下图所示:
我电脑中有两个串口
而先前我们的软件中选择只能看到这些:
我们只看到端口确实有两个,分别是com1和com2,但是我们不知道应该用的是哪个
但是我们去到设备管理器里面看到,他们两个显示的名称分别是:
如果软件中用这个名称进行指示,那么就不会搞错端口了.
为了实现这个功能,我们需要用到以下功能:
首先新建了个控制台,写入下面的代码:
这个代码运行后的结果是:
这样就得到了我们想要的友好名称
下面说下为什么是上面的写法:
第一,这个代码是我根据aardio的例子改编来的
这个示例是列出电脑中的主板等硬件信息,如果我们只是想列出其他设备管理器里面的特定分类的东西,那么我们需要先知道这个分类里面的GUID码
举例: 我们这里需要列出设备管理器中的端口(com和LPT)分类
我们在这个分类里面的任意一个设备上面点击右键->属性->详细信息->设备类(GUID)
然后在这个代码上面点击右键,选择复制.
把这个代码复制到上面的程序中,例如:
这样就能定性这个分类了.
然后你肯定也会疑惑下面的代码中的数字是从哪里来的????
他们里面的
从哪里得知的啊??
解答这个问题,你就要取微软的官方看文档了,这里我百度搜到的注释先列出来.
我也是为了自己以后使用查询方便.
再说说我是怎么知道是那两个变量的.
我们再上面我提到的详细信息界面里面看到里面又很多各种各样的信息,这些信息都是可以读取的.至于上面的名称分别读取的哪个,我也不是很清楚,可以到微软取核对,我没用到的就没去核对了.
我上面用的变量名,是这样发现的,我在百度上面搜: 获取串口名称,然后发现了个网址,里面有用vc写的获取设备的友好名称的办法.我看到
然后我又去百度搜
发现这个正是我要的友好名称的变量名.
于是我又去搜这个变量对应的数值.然后就得到了上面的程序.
admin
赞同来自:
自制数字键盘:
某些时候我们需要点击输入框然后弹出一个特定样式键盘.
现在我遇到的问题是:需要在win平板上面运行程序,程序里有几个输入框,里面限定了必须是数字.也就是说,必须弹出纯数字键盘,而且键盘要足够大,因为用到的是触摸,不能利用鼠标和键盘.
我画了一个数字键盘
这里面的功能一目了然,精简之后的代码如下:
键盘只负责发送所对应的数字到主程序窗口,而获取到这个指令之后,由主窗口自己分辨处理.
主窗口处理的思路:
当用户点击任意一个输入框,则将输入框选中标志置为相对应的数字,当用户点击了数字键盘里面的数字,主窗口接收到发送回来的数据,通过这个选中标志进行分别处理.
当然,如果用户点击数字键盘之外的任意地方,数字键盘就自动销毁.
主程序示例如下:
上面点击输入框,用的是 输入框获得焦点 事件.
admin
赞同来自:
接着小键盘更新:
增加一个判断键盘是否超出屏幕范围,当超出屏幕范围不能显示完全的话,则将键盘显示在输入框的上部.
至此,自制数字键盘结束.
admin
赞同来自:
配置文件ini的使用:
上面是读出,下面是写入:
再写一个用到的下拉列表框使用
下面是关于一个输入框的调用:
如果输入框里面的东西发生变化,那么就获取这个消息进行处理,这里是进行比较,如果里面的值大于一个阀值则相对的动作触发.
admin
赞同来自:
数字键盘更新:
修改键盘主窗口显示位置函数
自动判断应该显示的位置,不再局限在全屏模式,窗口模式同样可以进行键盘位置显示判定
admin
赞同来自:
软件运行时可拖动按钮调整位置:
这里应该注意setpos是相对于软件窗口而不是整个屏幕
admin
赞同来自:
拖动控件的改造:
admin
赞同来自:
实现软件中控件拖动后位置保存功能:
实现拖动控件之后,保存控件的位置信息,然后当再次打开软件的时候,调用位置信息文件,恢复到之前拖动之后的界面.
实现思路:
将Movefun函数改造为3个参数,添加name参数,这个参数是控件的名称(不是控件显示在外部的text名),
两种思路,一种是建立一个表,里面键值存储控件的id,例如button3.id,内容value存这个button3名,通过迭代器存储界面中所有的控件id,然后使用的时候根据控件的id从表中取出name.
另外一种就是直接将name参数在forin迭代器中直接使用.
本例中即使用这种方法.
admin
赞同来自:
鼠标拖拽框选实现选中控件:
这里需要特别注意一个地方:
这个是怎么知道要用这个函数的呢?
我点击
右键查看它的代码.拉倒下面之后发现了这个
看到里面有个判断两个区块碰撞相交,呵呵,这个正好是我要的一个功能
但是怎么使用呢?
根据上面的注释,貌似应该是一个RETC的intersectsWith上另一个RETC
那么就进行实验,于是有了
mainform.button.getRect().intersectsWith(::RECT(x,y,m,n))
果然合适
admin
赞同来自:
此示例演示了aardio与Javascript间使用JSON交换数据的方法。
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio echarts";right=909;bottom=669;border="dialog frame";max=false;min=false)
/*}}*/
import web.form;
var wb = web.form( winform );
import web.json;
wb.external = {
getOption = function( num ){
var data = {
calculable = true;
legend = {
data = { "直接访问"; "邮件营销"; "联盟广告"; "视频广告"; "搜索引擎" };
orient = "vertical";
x = "left"
};
series = {
{
center = { "50%"; "60%" };
data = {
{ name = "直接访问"; value = 335 };
{ name = "邮件营销"; value = 310 };
{ name = "联盟广告"; value = 234 };
{ name = "视频广告"; value = 135 };
{ name = "搜索引擎"; value = 1548 }
};
name = "访问来源"; radius = "55%"; type = "pie"
}
};
title = { subtext = "纯属虚构"; text = "某站点用户访问来源"; x = "center" };
toolbox = {
feature = {
dataView = { readOnly = false; show = true };
magicType = {
option = { funnel = { funnelAlign = "left"; max = 1548; width ="50%"; x = "25%" }};
show = true;
type = { "pie"; "funnel" }
};
mark = { show = true };
restore = { show = true };
saveAsImage = { show = true }
}; show = true
};
tooltip = { formatter = "{a} <br/>{b} : {c} ({d}%)"; trigger = "item" }
}
return web.json.stringify(data);
}
}
wb.html = /**
<!doctype html>
<html>
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="UTF-8">
</head>
<body>
<div id="main" style="height:600px;"></div>
<script src="http://echarts.baidu.com/dist/ ... gt%3B
<script>
var myChart = echarts.init(document.getElementById('main'));
myChart.setOption( JSON.parse( external.getOption() ) );
</script>
</body>
</html>
**/
winform.show(); //显示窗体
//启动消息循环
win.loopMessage();
admin
赞同来自:
写个webkit的应用方面的东西:
用到了layui界面
先写了个测试按钮的网页
可以看到里面我定义了几个按钮样式,并且分别定义了他们被单击的事件回调函数
例如
意思就是,单击调用zhixing()这个函数,而这个函数可以再aar的引用界面里自己定义.
这里面我们看到了,这个zhixing()函数,执行的动作是,查找要执行动作的按钮的class类,然后把它的onclick事件清空,把它的样式改为禁止点击样式.
这里有个我的猜想,就是我要修改什么事件就直接写就可以,不知道对不对
admin
赞同来自:
软件发布后运行界面框选和拖拽功能:
上面楼层实现了鼠标拉框进行框选,这里我们来实现框选中后进行拖拽排序功能:
这里问题找了好长时间,归结最后是因为movefun中少了一句
╮(╯▽╰)╭
效果图就不上了,就是框选后可以鼠标点击按住移动....
admin
赞同来自:
最近利用串口接收到ascii码,这里列举一个处理的办法:
最后一行就是我要显示的内容.
一个设备发送来的就是最后一行的数据,用串口助手16进制接收到的是第一行的显示的数据.
admin
赞同来自: 悄悄飞
将一个数字格式化为16进制字符显示(双字节)
admin
赞同来自:
listview支持bindConfig自动保存控件的行列数据
壹句壹傷
赞同来自:
这个类似 vb
admin
赞同来自:
我的STM32DUBE
赞同来自:
斑竹, 那个HID 上位机我很有兴趣 但是我调试死活调试不成功,报错,我在网上找的 UsbHidApi.dll 在加载.DLL的时候说找不到函数,斑竹能不能把你的HID 上位机的aardio源码发一份给我 或者发你测试没问题的那个UsbHidApi.dll给我 我的QQ邮箱770684845@qq.com 感谢不尽。
余一水
赞同来自:
就想知道这是什么编程语言?
admin
赞同来自: talentkkk
学习用plus做漂亮界面过程中的代码:
整个代码工程下载:http://pan.baidu.com/s/1nuZYRvN
爱哭的热带鱼
赞同来自:
绝好的学习帖呀
╰⋛⋋⊱⋋๑胡萝卜๑⋌⊰ - 80后,学渣
赞同来自:
很好的学习帖子。