aardio

aardio

请教一下,如何用aardio实现Python下面这个单行自动刷新功能?

问题困惑admin 回复了问题 • 2 人关注 • 1 个回复 • 202 次浏览 • 2021-08-02 20:18 • 来自相关话题

上位机学习笔记:Hid上位机软件的实现

经验分享苍术 回复了问题 • 11 人关注 • 29 个回复 • 12950 次浏览 • 2021-07-05 11:22 • 来自相关话题

如何在指定目录下创建一个文件夹?

问题困惑ccbwx 回复了问题 • 2 人关注 • 1 个回复 • 610 次浏览 • 2020-07-21 19:07 • 来自相关话题

aardio 自动重复在输入框内输入内容,每输入完一次,自动清空内容

问题困惑admin 回复了问题 • 2 人关注 • 1 个回复 • 647 次浏览 • 2020-07-14 07:42 • 来自相关话题

学习记录:用aardio软件开发上位机

新手交流╰⋛⋋⊱⋋๑胡萝卜๑⋌⊰ 回复了问题 • 34 人关注 • 84 个回复 • 14045 次浏览 • 2018-04-24 18:40 • 来自相关话题

上位机编写之aardio调用html5图表控件

其他分享爱哭的热带鱼 回复了问题 • 15 人关注 • 19 个回复 • 7033 次浏览 • 2018-01-16 14:08 • 来自相关话题

aardio开发上位机学习启用独立域名了: www.htmlayout.cn , 请移步到此处学习!

回复

其他分享admin 发起了问题 • 1 人关注 • 0 个回复 • 1737 次浏览 • 2018-01-04 21:31 • 来自相关话题

AARDIO模态窗口怎么做成如下效果

问题困惑admin 回复了问题 • 2 人关注 • 1 个回复 • 1219 次浏览 • 2018-01-02 19:35 • 来自相关话题

怒了!aar里各种字符和数据格式相互转换总结

回复

新手交流admin 回复了问题 • 2 人关注 • 11 个回复 • 3046 次浏览 • 2017-10-08 17:49 • 来自相关话题

(自用)aar里面的一些基本功能笔记

其他分享admin 发表了文章 • 39 个评论 • 3222 次浏览 • 2017-09-14 13:29 • 来自相关话题

string库中的concat拼接字符串:这个函数提示里面只是显示了两个可用参数,实际应用过程中,可以添加无数个参数,,,都会拼接到一起的.str = string.concat(str,linestr[i],'\r\n',"aaadddggg");这个意思就是把括号里面的四个参数作为字符串拼接到了一起... 查看全部

string库中的concat拼接字符串:

blob.png

这个函数提示里面只是显示了两个可用参数,实际应用过程中,可以添加无数个参数,,,都会拼接到一起的.

str = string.concat(str,linestr[i],'\r\n',"aaadddggg");

这个意思就是把括号里面的四个参数作为字符串拼接到了一起...

(自用)AAR里一些好玩的功能

其他分享admin 发表了文章 • 65 个评论 • 7461 次浏览 • 2017-08-23 12:39 • 来自相关话题

最近aar作者Jacen He更新了一些新库:二维码和条形码的识别库Zbar//生成测试二维码
import qrencode.bitmap;
var qrBmp = qrencode.bitmap("http://www.stm32cube.com/#Stm32cube中文网" );
qrBmp.copyBitmap(100).save("/qrcode.jpg",80) 
 
//识别二维码    
import zbar;
import soImage; //此扩展库要使用最新版

var img = soImage();
img.load("/qrcode.jpg");//加载二维码图像
img.grayScale();
    
scanner = zbar.scanner();
scanner.config('qrcode.enable');//可省略

import console;
scanner.scan(img.getData(),img.getWidth(),img.getHeight(),function(typeName,data){
     console.log(typeName,data)
    })
     
    
console.pause();二维码和条形码的应用挺广泛的,这个库实用性很大,先前也实现过类似功能,不过用的调用js的方法. 查看全部

最近aar作者Jacen He更新了一些新库:

二维码和条形码的识别库Zbar

//生成测试二维码
import qrencode.bitmap;
var qrBmp = qrencode.bitmap("http://www.stm32cube.com/#Stm32cube中文网" );
qrBmp.copyBitmap(100).save("/qrcode.jpg",80) 
 
//识别二维码    
import zbar;
import soImage; //此扩展库要使用最新版

var img = soImage();
img.load("/qrcode.jpg");//加载二维码图像
img.grayScale();
    
scanner = zbar.scanner();
scanner.config('qrcode.enable');//可省略

import console;
scanner.scan(img.getData(),img.getWidth(),img.getHeight(),function(typeName,data){
     console.log(typeName,data)
    })
     
    
console.pause();

blob.png

二维码和条形码的应用挺广泛的,这个库实用性很大,先前也实现过类似功能,不过用的调用js的方法.

(转)aardio字符串模式匹配快速入门

回复

其他分享admin 回复了问题 • 2 人关注 • 9 个回复 • 2565 次浏览 • 2017-08-05 01:01 • 来自相关话题

Aardio学习笔记4

其他分享admin 发表了文章 • 11 个评论 • 3277 次浏览 • 2017-07-17 13:08 • 来自相关话题

还是分析Gcode代码用的,先前是直接循环获取一行的数据然后解析显示到listbox中,现在需要点击任意一行然后进行解析测试,如果没有选中任意一行那么就继续循环解析:listbox中有这么个函数:win.ui.ctrl.listbox() = 列表框\n!listbox.
!listbox.cls = 设计时类名
!listbox.className = 运行时类名
!listbox.clear() = 清除列表框所有内容
!listbox.delete() = 删除当前选中项
!listbox.delete(__) = 删除指定项
!listbox.getItemText(__/*项索引*/) = 获取指定项文本
!listbox.getItemRect(__/*项索引*/) = 获取指定项区块位置\n返回::RECT() 结构体
!listbox.getAt(x,y) = 返回指定客户区坐标所在的项索引.
!listbox.add(__/*请输入文本*/) = 添加列表项到尾部
!listbox.add(__/*请输入文本*/,-1) = 添加列表项到尾部
!listbox.add(__/*请输入文本*/,1) = 添加列表项到头部
!listbox.selIndex = 获取或设置列表框当前选中项\n仅在单选模式下有效,多选模式下请使用 getSelected() setSelected() 函数
!listbox.selText = 获取当前选项的文本\n或根据指定的文本查找并改变选项对于这些理解的不是很深,所以需要一步步实践下:姑且会用到mainForm.listbox.selIndex, mainForm.listbox.selText于是在界面中增加一个按钮,用来显示哪个被点选了...console.log(mainForm.listbox.selIndex,mainForm.listbox.selText);blob.png实现上面的完整代码如下:import win.ui;/*DSG{{*/mainForm = win.form(text="aardio form";right=561;bottom=654)mainForm.add(Motion_file={cls="listbox";left=373;top=10;right=552;bottom=530;edge=1;items={};z=2};button={cls="button";text="加载";left=16;top=542;right=173;bottom=591;z=3};button2={cls="button";text="转换";left=197;top=541;right=551;bottom=590;z=4};button3={cls="button";text="获取谁被点选了";left=20;top=598;right=177;bottom=647;z=5};listbox={cls="listbox";left=11;top=9;right=361;bottom=529;edge=1;items={};vscroll=1;z=1})/*}}*/import console;console.open()mainForm.button3.oncommand = function(id,event){ //mainForm.msgbox( mainForm.button3.text ); console.log(mainForm.listbox.selIndex,mainForm.listbox.selText);}mainForm.button.oncommand = function(id,event){ //mainForm.msgbox( mainForm.button.text ); var filecontent = string.load("\res\5047.nc");    var linestr = string.split(filecontent,'<\r\n>')    for(i=1;#linestr;1){           //增加编码转换,这样就不会显示乱码了        mainForm.listbox.add(string.fromto(linestr[i],0,65001));    } }G_conv = function(str){    var delspace = string.replace(str," ","");    var letter = string.split(delspace);    var num = "";    for(i=1;#letter;1){        //如果字符为空字符则不作处理继续循环        if(letter[i] == " "){            continue ;        }        //强制转换为数字格式,不是数字则返回null,是则返回数字        var k,v = tonumber(letter[i]);        //判断是数字,或者是负号,或者是小数点?        if( (k != null) || (letter[i] == "-")|| (letter[i] == ".")){            //连接这些数字            num = num ++ letter[i];            //如果字符串末尾是数字,则直接输出数字            if(i == #letter){                //console.log(num)                mainForm.Motion_file.add(num);                num ="";            }        }else {    //不是数字,直接输出            if(num != ""){                mainForm.Motion_file.add(num);                num = "";            }            //console.log(num)            mainForm.Motion_file.add(letter[i]);            //console.log(letter[i])        }      }            }var iItem =1;mainForm.button2.oncommand = function(id,event){ var lineCurnum ; mainForm.Motion_file.clear(); G_conv(mainForm.listbox.getItemText(iItem)); iItem++; if(iItem>mainForm.listbox.count){ iItem = 1; } }mainForm.listbox.wndproc = function(hwnd,message,wParam,lParam){    select(message) {        case 0x233/*_WM_DROPFILES*/ {            mainForm.listbox.clear();            var path = win.getDropFile(wParam)[1];            var filecontent = string.load(path);            var linestr = string.split(filecontent,'<\r\n>')            for(i=1;#linestr;1){                   //增加编码转换,这样就不会显示乱码了                mainForm.listbox.add(string.fromto(linestr[i],0,65001));            }                     }        else {        }    }     }mainForm.enableDpiScaling();mainForm.show();return win.loopMessage(); 查看全部

还是分析Gcode代码用的,先前是直接循环获取一行的数据然后解析显示到listbox中,现在需要点击任意一行然后进行解析测试,如果没有选中任意一行那么就继续循环解析:

listbox中有这么个函数:

win.ui.ctrl.listbox() = 列表框\n!listbox.
!listbox.cls = 设计时类名
!listbox.className = 运行时类名
!listbox.clear() = 清除列表框所有内容
!listbox.delete() = 删除当前选中项
!listbox.delete(__) = 删除指定项
!listbox.getItemText(__/*项索引*/) = 获取指定项文本
!listbox.getItemRect(__/*项索引*/) = 获取指定项区块位置\n返回::RECT() 结构体
!listbox.getAt(x,y) = 返回指定客户区坐标所在的项索引.
!listbox.add(__/*请输入文本*/) = 添加列表项到尾部
!listbox.add(__/*请输入文本*/,-1) = 添加列表项到尾部
!listbox.add(__/*请输入文本*/,1) = 添加列表项到头部
!listbox.selIndex = 获取或设置列表框当前选中项\n仅在单选模式下有效,多选模式下请使用 getSelected() setSelected() 函数
!listbox.selText = 获取当前选项的文本\n或根据指定的文本查找并改变选项

对于这些理解的不是很深,所以需要一步步实践下:

姑且会用到

mainForm.listbox.selIndex, mainForm.listbox.selText

于是在界面中增加一个按钮,用来显示哪个被点选了...

console.log(mainForm.listbox.selIndex,mainForm.listbox.selText);

blob.png

实现上面的完整代码如下:

import win.ui;

/*DSG{{*/

mainForm = win.form(text="aardio form";right=561;bottom=654)

mainForm.add(

Motion_file={cls="listbox";left=373;top=10;right=552;bottom=530;edge=1;items={};z=2};

button={cls="button";text="加载";left=16;top=542;right=173;bottom=591;z=3};

button2={cls="button";text="转换";left=197;top=541;right=551;bottom=590;z=4};

button3={cls="button";text="获取谁被点选了";left=20;top=598;right=177;bottom=647;z=5};

listbox={cls="listbox";left=11;top=9;right=361;bottom=529;edge=1;items={};vscroll=1;z=1}

)

/*}}*/


import console;

console.open()

mainForm.button3.oncommand = function(id,event){

//mainForm.msgbox( mainForm.button3.text );

console.log(mainForm.listbox.selIndex,mainForm.listbox.selText);

}



mainForm.button.oncommand = function(id,event){

//mainForm.msgbox( mainForm.button.text );

var filecontent = string.load("\res\5047.nc");

    var linestr = string.split(filecontent,'<\r\n>')

    for(i=1;#linestr;1){   

        //增加编码转换,这样就不会显示乱码了

        mainForm.listbox.add(string.fromto(linestr[i],0,65001));

    }

}



G_conv = function(str){

    var delspace = string.replace(str," ","");

    var letter = string.split(delspace);

    var num = "";

    for(i=1;#letter;1){

        //如果字符为空字符则不作处理继续循环

        if(letter[i] == " "){

            continue ;

        }

        //强制转换为数字格式,不是数字则返回null,是则返回数字

        var k,v = tonumber(letter[i]);

        //判断是数字,或者是负号,或者是小数点?

        if( (k != null) || (letter[i] == "-")|| (letter[i] == ".")){

            //连接这些数字

            num = num ++ letter[i];

            //如果字符串末尾是数字,则直接输出数字

            if(i == #letter){

                //console.log(num)

                mainForm.Motion_file.add(num);

                num ="";

            }

        }else {    //不是数字,直接输出

            if(num != ""){

                mainForm.Motion_file.add(num);

                num = "";

            }

            //console.log(num)

            mainForm.Motion_file.add(letter[i]);

            //console.log(letter[i])

        }

  

    }

  

     

     

}

var iItem =1;

mainForm.button2.oncommand = function(id,event){

var lineCurnum ;

mainForm.Motion_file.clear();

G_conv(mainForm.listbox.getItemText(iItem));

iItem++;

if(iItem>mainForm.listbox.count){

iItem = 1;

}

}



mainForm.listbox.wndproc = function(hwnd,message,wParam,lParam){

    select(message) {

        case 0x233/*_WM_DROPFILES*/ {

            mainForm.listbox.clear();

            var path = win.getDropFile(wParam)[1];

            var filecontent = string.load(path);

            var linestr = string.split(filecontent,'<\r\n>')

            for(i=1;#linestr;1){   

                //增加编码转换,这样就不会显示乱码了

                mainForm.listbox.add(string.fromto(linestr[i],0,65001));

            }

             

        }

        else {

        }

    }

     

}



mainForm.enableDpiScaling();

mainForm.show();


return win.loopMessage();


上位机学习之aardio笔记3

回复

其他分享admin 回复了问题 • 1 人关注 • 1 个回复 • 2044 次浏览 • 2017-06-19 19:07 • 来自相关话题

aardio软件开发上位机学习笔记2

新手交流admin 回复了问题 • 3 人关注 • 25 个回复 • 5453 次浏览 • 2017-06-13 13:23 • 来自相关话题

条新动态, 点击查看
admin

admin 回答了问题 • 2016-09-29 20:54 • 84 个回复 不感兴趣

学习记录:用aardio软件开发上位机

赞同来自:

再看上面实现的皮肤代码:

namespace theme{ 
    liebiao = {&... 显示全部 »

再看上面实现的皮肤代码:

namespace theme{ 
    liebiao = {    //这个可以自己定义模版名字,我用作列表
        group = "div";//给元素分个组,我用div标识
        background = { //背景
            
         default = "\res\20160929194357.png";//图片
        }
        color = {//定义初始化的字体颜色
             hover = 0xFF57c0ff; //鼠标放上去时悬停的状况 
             active = 0xFFffc057; //鼠标点击时 
        }
        checked = {  //被点击选择后
             color = {
                hover = 0xFF57c0ff; //鼠标放上去时悬停的状况 
                 active = 0xFFffc057; //鼠标点击时 
             }
             background = { 
                 default= 'GIF89a\x16\0\x0B\0\x80\x01\0\0\xC0\xFF\xFF\xFF\xFF!\xF9\x04\x01\0\0\x01\0,\0\0\0\0\x16\0\x0B\0\0\x02\x19\x8C\x8F\xA9\xCB\xED\x0B"xPR%\xE7Eys\xEB\x19]\x18\x8C\xA4\x93EM\x01\0;'
             }
        }
    }
    close = {
        color = {
            hover = 0xff57c0ff; //鼠标放上去时悬停的状况
            active = 0xff07c707; //鼠标点击时 
        } 
    }
}
winform.plus1.skin(theme.aaa);//应用元素模版
winform.plus2.skin(theme.aaa);
winform.plus3.skin(theme.aaa);
winform.plus4.skin(theme.aaa);
winform.plus5.skin(theme.aaa); 
winform.btnClose.skin(theme.close);

a:link是超级链接的初始状态
a:hover是把鼠标放上去时悬停的状况 
a:active 是鼠标点击时 
a:visited是访问过后的情况

zdsurge

zdsurge 回答了问题 • 2017-10-15 10:32 • 29 个回复 不感兴趣

上位机学习笔记:Hid上位机软件的实现

赞同来自:

历害,慢慢学习中。 

历害,慢慢学习中。 

请教一下,如何用aardio实现Python下面这个单行自动刷新功能?

回复

问题困惑admin 回复了问题 • 2 人关注 • 1 个回复 • 202 次浏览 • 2021-08-02 20:18 • 来自相关话题

上位机学习笔记:Hid上位机软件的实现

回复

经验分享苍术 回复了问题 • 11 人关注 • 29 个回复 • 12950 次浏览 • 2021-07-05 11:22 • 来自相关话题

如何在指定目录下创建一个文件夹?

回复

问题困惑ccbwx 回复了问题 • 2 人关注 • 1 个回复 • 610 次浏览 • 2020-07-21 19:07 • 来自相关话题

aardio 自动重复在输入框内输入内容,每输入完一次,自动清空内容

回复

问题困惑admin 回复了问题 • 2 人关注 • 1 个回复 • 647 次浏览 • 2020-07-14 07:42 • 来自相关话题

学习记录:用aardio软件开发上位机

回复

新手交流╰⋛⋋⊱⋋๑胡萝卜๑⋌⊰ 回复了问题 • 34 人关注 • 84 个回复 • 14045 次浏览 • 2018-04-24 18:40 • 来自相关话题

上位机编写之aardio调用html5图表控件

回复

其他分享爱哭的热带鱼 回复了问题 • 15 人关注 • 19 个回复 • 7033 次浏览 • 2018-01-16 14:08 • 来自相关话题

aardio开发上位机学习启用独立域名了: www.htmlayout.cn , 请移步到此处学习!

回复

其他分享admin 发起了问题 • 1 人关注 • 0 个回复 • 1737 次浏览 • 2018-01-04 21:31 • 来自相关话题

AARDIO模态窗口怎么做成如下效果

回复

问题困惑admin 回复了问题 • 2 人关注 • 1 个回复 • 1219 次浏览 • 2018-01-02 19:35 • 来自相关话题

怒了!aar里各种字符和数据格式相互转换总结

回复

新手交流admin 回复了问题 • 2 人关注 • 11 个回复 • 3046 次浏览 • 2017-10-08 17:49 • 来自相关话题

(转)aardio字符串模式匹配快速入门

回复

其他分享admin 回复了问题 • 2 人关注 • 9 个回复 • 2565 次浏览 • 2017-08-05 01:01 • 来自相关话题

上位机学习之aardio笔记3

回复

其他分享admin 回复了问题 • 1 人关注 • 1 个回复 • 2044 次浏览 • 2017-06-19 19:07 • 来自相关话题

aardio软件开发上位机学习笔记2

回复

新手交流admin 回复了问题 • 3 人关注 • 25 个回复 • 5453 次浏览 • 2017-06-13 13:23 • 来自相关话题

aardio开发上位机のwebkit界面设计

回复

新手交流admin 回复了问题 • 2 人关注 • 6 个回复 • 3367 次浏览 • 2017-05-02 09:22 • 来自相关话题

(自用)aar里面的一些基本功能笔记

其他分享admin 发表了文章 • 39 个评论 • 3222 次浏览 • 2017-09-14 13:29 • 来自相关话题

string库中的concat拼接字符串:这个函数提示里面只是显示了两个可用参数,实际应用过程中,可以添加无数个参数,,,都会拼接到一起的.str = string.concat(str,linestr[i],'\r\n',"aaadddggg");这个意思就是把括号里面的四个参数作为字符串拼接到了一起... 查看全部

string库中的concat拼接字符串:

blob.png

这个函数提示里面只是显示了两个可用参数,实际应用过程中,可以添加无数个参数,,,都会拼接到一起的.

str = string.concat(str,linestr[i],'\r\n',"aaadddggg");

这个意思就是把括号里面的四个参数作为字符串拼接到了一起...

(自用)AAR里一些好玩的功能

其他分享admin 发表了文章 • 65 个评论 • 7461 次浏览 • 2017-08-23 12:39 • 来自相关话题

最近aar作者Jacen He更新了一些新库:二维码和条形码的识别库Zbar//生成测试二维码
import qrencode.bitmap;
var qrBmp = qrencode.bitmap("http://www.stm32cube.com/#Stm32cube中文网" );
qrBmp.copyBitmap(100).save("/qrcode.jpg",80) 
 
//识别二维码    
import zbar;
import soImage; //此扩展库要使用最新版

var img = soImage();
img.load("/qrcode.jpg");//加载二维码图像
img.grayScale();
    
scanner = zbar.scanner();
scanner.config('qrcode.enable');//可省略

import console;
scanner.scan(img.getData(),img.getWidth(),img.getHeight(),function(typeName,data){
     console.log(typeName,data)
    })
     
    
console.pause();二维码和条形码的应用挺广泛的,这个库实用性很大,先前也实现过类似功能,不过用的调用js的方法. 查看全部

最近aar作者Jacen He更新了一些新库:

二维码和条形码的识别库Zbar

//生成测试二维码
import qrencode.bitmap;
var qrBmp = qrencode.bitmap("http://www.stm32cube.com/#Stm32cube中文网" );
qrBmp.copyBitmap(100).save("/qrcode.jpg",80) 
 
//识别二维码    
import zbar;
import soImage; //此扩展库要使用最新版

var img = soImage();
img.load("/qrcode.jpg");//加载二维码图像
img.grayScale();
    
scanner = zbar.scanner();
scanner.config('qrcode.enable');//可省略

import console;
scanner.scan(img.getData(),img.getWidth(),img.getHeight(),function(typeName,data){
     console.log(typeName,data)
    })
     
    
console.pause();

blob.png

二维码和条形码的应用挺广泛的,这个库实用性很大,先前也实现过类似功能,不过用的调用js的方法.

Aardio学习笔记4

其他分享admin 发表了文章 • 11 个评论 • 3277 次浏览 • 2017-07-17 13:08 • 来自相关话题

还是分析Gcode代码用的,先前是直接循环获取一行的数据然后解析显示到listbox中,现在需要点击任意一行然后进行解析测试,如果没有选中任意一行那么就继续循环解析:listbox中有这么个函数:win.ui.ctrl.listbox() = 列表框\n!listbox.
!listbox.cls = 设计时类名
!listbox.className = 运行时类名
!listbox.clear() = 清除列表框所有内容
!listbox.delete() = 删除当前选中项
!listbox.delete(__) = 删除指定项
!listbox.getItemText(__/*项索引*/) = 获取指定项文本
!listbox.getItemRect(__/*项索引*/) = 获取指定项区块位置\n返回::RECT() 结构体
!listbox.getAt(x,y) = 返回指定客户区坐标所在的项索引.
!listbox.add(__/*请输入文本*/) = 添加列表项到尾部
!listbox.add(__/*请输入文本*/,-1) = 添加列表项到尾部
!listbox.add(__/*请输入文本*/,1) = 添加列表项到头部
!listbox.selIndex = 获取或设置列表框当前选中项\n仅在单选模式下有效,多选模式下请使用 getSelected() setSelected() 函数
!listbox.selText = 获取当前选项的文本\n或根据指定的文本查找并改变选项对于这些理解的不是很深,所以需要一步步实践下:姑且会用到mainForm.listbox.selIndex, mainForm.listbox.selText于是在界面中增加一个按钮,用来显示哪个被点选了...console.log(mainForm.listbox.selIndex,mainForm.listbox.selText);blob.png实现上面的完整代码如下:import win.ui;/*DSG{{*/mainForm = win.form(text="aardio form";right=561;bottom=654)mainForm.add(Motion_file={cls="listbox";left=373;top=10;right=552;bottom=530;edge=1;items={};z=2};button={cls="button";text="加载";left=16;top=542;right=173;bottom=591;z=3};button2={cls="button";text="转换";left=197;top=541;right=551;bottom=590;z=4};button3={cls="button";text="获取谁被点选了";left=20;top=598;right=177;bottom=647;z=5};listbox={cls="listbox";left=11;top=9;right=361;bottom=529;edge=1;items={};vscroll=1;z=1})/*}}*/import console;console.open()mainForm.button3.oncommand = function(id,event){ //mainForm.msgbox( mainForm.button3.text ); console.log(mainForm.listbox.selIndex,mainForm.listbox.selText);}mainForm.button.oncommand = function(id,event){ //mainForm.msgbox( mainForm.button.text ); var filecontent = string.load("\res\5047.nc");    var linestr = string.split(filecontent,'<\r\n>')    for(i=1;#linestr;1){           //增加编码转换,这样就不会显示乱码了        mainForm.listbox.add(string.fromto(linestr[i],0,65001));    } }G_conv = function(str){    var delspace = string.replace(str," ","");    var letter = string.split(delspace);    var num = "";    for(i=1;#letter;1){        //如果字符为空字符则不作处理继续循环        if(letter[i] == " "){            continue ;        }        //强制转换为数字格式,不是数字则返回null,是则返回数字        var k,v = tonumber(letter[i]);        //判断是数字,或者是负号,或者是小数点?        if( (k != null) || (letter[i] == "-")|| (letter[i] == ".")){            //连接这些数字            num = num ++ letter[i];            //如果字符串末尾是数字,则直接输出数字            if(i == #letter){                //console.log(num)                mainForm.Motion_file.add(num);                num ="";            }        }else {    //不是数字,直接输出            if(num != ""){                mainForm.Motion_file.add(num);                num = "";            }            //console.log(num)            mainForm.Motion_file.add(letter[i]);            //console.log(letter[i])        }      }            }var iItem =1;mainForm.button2.oncommand = function(id,event){ var lineCurnum ; mainForm.Motion_file.clear(); G_conv(mainForm.listbox.getItemText(iItem)); iItem++; if(iItem>mainForm.listbox.count){ iItem = 1; } }mainForm.listbox.wndproc = function(hwnd,message,wParam,lParam){    select(message) {        case 0x233/*_WM_DROPFILES*/ {            mainForm.listbox.clear();            var path = win.getDropFile(wParam)[1];            var filecontent = string.load(path);            var linestr = string.split(filecontent,'<\r\n>')            for(i=1;#linestr;1){                   //增加编码转换,这样就不会显示乱码了                mainForm.listbox.add(string.fromto(linestr[i],0,65001));            }                     }        else {        }    }     }mainForm.enableDpiScaling();mainForm.show();return win.loopMessage(); 查看全部

还是分析Gcode代码用的,先前是直接循环获取一行的数据然后解析显示到listbox中,现在需要点击任意一行然后进行解析测试,如果没有选中任意一行那么就继续循环解析:

listbox中有这么个函数:

win.ui.ctrl.listbox() = 列表框\n!listbox.
!listbox.cls = 设计时类名
!listbox.className = 运行时类名
!listbox.clear() = 清除列表框所有内容
!listbox.delete() = 删除当前选中项
!listbox.delete(__) = 删除指定项
!listbox.getItemText(__/*项索引*/) = 获取指定项文本
!listbox.getItemRect(__/*项索引*/) = 获取指定项区块位置\n返回::RECT() 结构体
!listbox.getAt(x,y) = 返回指定客户区坐标所在的项索引.
!listbox.add(__/*请输入文本*/) = 添加列表项到尾部
!listbox.add(__/*请输入文本*/,-1) = 添加列表项到尾部
!listbox.add(__/*请输入文本*/,1) = 添加列表项到头部
!listbox.selIndex = 获取或设置列表框当前选中项\n仅在单选模式下有效,多选模式下请使用 getSelected() setSelected() 函数
!listbox.selText = 获取当前选项的文本\n或根据指定的文本查找并改变选项

对于这些理解的不是很深,所以需要一步步实践下:

姑且会用到

mainForm.listbox.selIndex, mainForm.listbox.selText

于是在界面中增加一个按钮,用来显示哪个被点选了...

console.log(mainForm.listbox.selIndex,mainForm.listbox.selText);

blob.png

实现上面的完整代码如下:

import win.ui;

/*DSG{{*/

mainForm = win.form(text="aardio form";right=561;bottom=654)

mainForm.add(

Motion_file={cls="listbox";left=373;top=10;right=552;bottom=530;edge=1;items={};z=2};

button={cls="button";text="加载";left=16;top=542;right=173;bottom=591;z=3};

button2={cls="button";text="转换";left=197;top=541;right=551;bottom=590;z=4};

button3={cls="button";text="获取谁被点选了";left=20;top=598;right=177;bottom=647;z=5};

listbox={cls="listbox";left=11;top=9;right=361;bottom=529;edge=1;items={};vscroll=1;z=1}

)

/*}}*/


import console;

console.open()

mainForm.button3.oncommand = function(id,event){

//mainForm.msgbox( mainForm.button3.text );

console.log(mainForm.listbox.selIndex,mainForm.listbox.selText);

}



mainForm.button.oncommand = function(id,event){

//mainForm.msgbox( mainForm.button.text );

var filecontent = string.load("\res\5047.nc");

    var linestr = string.split(filecontent,'<\r\n>')

    for(i=1;#linestr;1){   

        //增加编码转换,这样就不会显示乱码了

        mainForm.listbox.add(string.fromto(linestr[i],0,65001));

    }

}



G_conv = function(str){

    var delspace = string.replace(str," ","");

    var letter = string.split(delspace);

    var num = "";

    for(i=1;#letter;1){

        //如果字符为空字符则不作处理继续循环

        if(letter[i] == " "){

            continue ;

        }

        //强制转换为数字格式,不是数字则返回null,是则返回数字

        var k,v = tonumber(letter[i]);

        //判断是数字,或者是负号,或者是小数点?

        if( (k != null) || (letter[i] == "-")|| (letter[i] == ".")){

            //连接这些数字

            num = num ++ letter[i];

            //如果字符串末尾是数字,则直接输出数字

            if(i == #letter){

                //console.log(num)

                mainForm.Motion_file.add(num);

                num ="";

            }

        }else {    //不是数字,直接输出

            if(num != ""){

                mainForm.Motion_file.add(num);

                num = "";

            }

            //console.log(num)

            mainForm.Motion_file.add(letter[i]);

            //console.log(letter[i])

        }

  

    }

  

     

     

}

var iItem =1;

mainForm.button2.oncommand = function(id,event){

var lineCurnum ;

mainForm.Motion_file.clear();

G_conv(mainForm.listbox.getItemText(iItem));

iItem++;

if(iItem>mainForm.listbox.count){

iItem = 1;

}

}



mainForm.listbox.wndproc = function(hwnd,message,wParam,lParam){

    select(message) {

        case 0x233/*_WM_DROPFILES*/ {

            mainForm.listbox.clear();

            var path = win.getDropFile(wParam)[1];

            var filecontent = string.load(path);

            var linestr = string.split(filecontent,'<\r\n>')

            for(i=1;#linestr;1){   

                //增加编码转换,这样就不会显示乱码了

                mainForm.listbox.add(string.fromto(linestr[i],0,65001));

            }

             

        }

        else {

        }

    }

     

}



mainForm.enableDpiScaling();

mainForm.show();


return win.loopMessage();


公告:
以后Aardio软件学习启用独立网站!
www.htmLayout.cn