aardio - 日历

news2024/11/26 13:46:20

写了个日历小例程,因 lunar 农历库存在问题,经过研究算是变相解决了,日历也完成了雏形,先开源出来,感兴趣的玩玩。

请下载最新paint库、customPlus库、lunar库。

不同的颜色搭配,实现不同的风格:

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=657;bottom=596)
winform.add(
plus={cls="plus";left=36;top=26;right=330;bottom=303;autohscroll=false;autovscroll=false;dl=1;dt=1;notify=1;z=1}
)
/*}}*/

winform.show();
import godking.customPlus;
var itemModel = {
        {   /* 矩形元素定义 */
            type="rect",  /* 类型:rect */
            rectf={x=3;y=3;width=-3;height=-3},  /* 矩形区域范围。负数表示距离项目右边或底边的距离。 */
            width=1,     /* 边框宽度。为0则无边框。  */
            round=5,     /* 圆角半径。0为矩形,-1为椭圆,其他值(>0)为圆角矩形。 */
            fillcolor=0x55FFFFFF,          /* 正常状态下,填充颜色 */
            itemhoverfillcolor=0x887FFFD4,       /* 鼠标划过项目时,填充颜色 */
            itemselectedfillcolor=0x887FFFD4,    /* 项目选中时,填充颜色 */
        }
         {
             type="text",  /* 类型:text */
             rectf={x=5;y=5;width=-10;height=20},  /*  文本范围。负数表示距离项目右边的距离。 */
             name="lunar",
             text="",  /* 正常状态下文本 */
             font={name="宋体",point=10,color=0xBB2288FF},            /* 正常状态下字体 */
        }
        {   /* 矩形元素定义 */
            type="rect",  /* 类型:rect */
            rectf={x=-20;y=0;width=20;height=20},  /* 矩形区域范围。负数表示距离项目右边或底边的距离。 */
            name = "xiukuang";
            width=1,     /* 边框宽度。为0则无边框。  */
            round=-1,     /* 圆角半径。0为矩形,-1为椭圆,其他值(>0)为圆角矩形。 */
            color=0;
            fillcolor=0,          /* 正常状态下,填充颜色 */
        }        
         {
             type="text",  /* 类型:text */
             rectf={x=-19;y=2;width=20;height=20},  /*  文本范围。负数表示距离项目右边的距离。 */
             name="xiu",
             smooth = true;
             align=1;
             valign=1;
             text="",  /* 正常状态下文本 */
             font={name="黑体",point=11,color=0xFFFF0000},            /* 正常状态下字体 */
        }
         {
             type="text",  /* 类型:text */
             rectf={x=1;y=-25;width=-1;height=25},  /*  文本范围。负数表示距离项目右边的距离。 */
             name="festival",
             align=1,        /* 文本水平对齐方式。0、(近端)左对齐  1、居中  2、(远端)右对齐 */
             valign=1,       /* 文本垂直对齐方式。0、(近端)顶对齐  1、居中  2、(远端)底对齐 */
             text="",  /* 正常状态下文本 */
             font={name="宋体",point=10,color=0x88000000},            /* 正常状态下字体 */
         }
         {
             type="text",  /* 类型:text */
             rectf={x=1;y=5;width=-1;height=-1},  /*  文本范围。负数表示距离项目右边的距离。 */
             name="day",
             cur=32649,   /* 鼠标指针,_IDC_ 开头的常量。 */
             align=1,        /* 文本水平对齐方式。0、(近端)左对齐  1、居中  2、(远端)右对齐 */
             valign=1,       /* 文本垂直对齐方式。0、(近端)顶对齐  1、居中  2、(远端)底对齐 */
             smooth=true,    /* 使用平滑效果,抗锯齿 */
             text="",  /* 正常状态下文本 */
             font={name="Arial",point=30,color=0xFFFF5566},            /* 正常状态下字体 */
             hoverfont=null,       /* 鼠标划过元素时字体 */
             checkedfont=null,     /* 元素被选择时字体 */
             itemhoverfont=null,   /* 鼠标划过项目时字体 */
             itemselectedfont=null,/* 项目选中时字体 */
             disabledfont=null,    /* 项目禁用时字体 */
         }        
}
var c = godking.customPlus(winform.plus,itemModel,,{
    itemWidth=80,     /*项目最小宽度,为0时根据colnum自动计算,所以不能与colnum同时=0*/
    itemHeight=80,    /*项目最小高度,为0时根据rownum自动计算,所以不能与rownum同时=0*/
    autoSizeWidth=false,    /*为true则自动将项目总宽度拉伸填满plus宽度,每个项目宽度不小于itemWidth*/
    autoSizeHeight=false,    /*为true则自动将项目总高度拉伸填满plus高度,每个项目高度不小于itemHeight*/
    rownum=0,     /*项目行数,为0时根据itemHeight自动计算,所以不能与itemHeight同时=0*/
    colnum=7,     /*项目列数,为0时根据itemWidth自动计算,所以不能与itemWidth同时=0*/
    padLeft=10,    /*plus左边空白距离*/
    padTop=50,    /*plus顶边空白距离*/
    padRight=10,    /*plus右边空白距离*/
    padBottom=10, /*plus底边空白距离*/
    autoFit=true,     /*是否自动调整plus组件宽度或高度(其中之一),保证能刚好显示全部行或列*/
                    /*当 itemHeight>0 且 colnum>0 且 rownum=0 时,自动调整plus高度,以能显示全部行*/
                    /*当 itemWidth>0 且 rownum>0 且 colnum=0 时,自动调整plus宽度,以能显示全部列*/
    vertical=false, /*是否将项目设置为竖向排列,行滚动方向设置为横向*/
    bkcolor=0xFFFFFFFFFF, /*背景颜色*/
    bkimg="https://img2.baidu.com/it/u=555782348,2262853825&fm=253&fmt=auto&app=138&f=JPEG?w=760&h=380", /*背景图像*/
    bkimgmode=0, /*背景图平铺模式。0:拉伸填满;1:左上角;2:居中*/
    singleCheck=0,/*元素check单选模式。0:多选;1:每个项目内单选;2:整个列表单选*/
})
c.hide();
var tm = ..time.now();
c.onDrawPageBegin = function(paint){
    paint = toPaint(paint); /*绑定paint对象的智能提示,方便输入后续代码。发布时可屏蔽此行。*/
    paint.textAntiAlias=false;
    for(i=1;7;1){
        var color,fillcolor = 0xFF000000,0x531490B3;
        if i==1 or i==7 { color=0xFFFFFFFF; fillcolor=0xFFB31469 };
        var rectf = ::RECTF((i-1)*80+12,10/*y1*/,76/*x2*/,36);
        paint.fillRoundRectF(rectf,8/*圆角半径*/,fillcolor);
        rectf.y = rectf.y+2;
        paint.drawTextF(rectf,"星期"++({"日","一","二","三","四","五","六"})[i],::LOGFONT(name="宋体";h=16;color=color;brush=null),0,1,1)
    }
}
c.onDrawItemBegin = function(paint){
    paint = toPaint(paint); /*绑定paint对象的智能提示,方便输入后续代码。发布时可屏蔽此行。*/
    paint.drawTextF(0,50,c.plus.width,c.plus.height,tostring(tm.month),::LOGFONT(name="Arial";h=350;color=0x55EEEEEE),0,1,1)
}
import godking.lunar
var lu = godking.lunar()
var m = lu.SolarMonth.fromYm(tm.year, tm.month)
var days = lu.toTable(m.getDays());
var list = {};
var week = days[1].getWeek();
for(i=1;week;1){
    ..table.push(list,{hide=true})
}
for(i=1;#days;1){
    var day = tostring(days[i].getDay());
    var lunar = days[i].getLunar();
    var festival = string.join(lu.toTable(lunar.getFestivals())," ")
    if !#festival {
        festival = string.join(lu.toTable(days[i].getFestivals())," ")
        if !#festival {
             festival = string.join(lu.toTable(days[i].getOtherFestivals())," ")
        } 
    }
    if #festival festival=..string.left(festival,5,true)
    lunar = ..string.split(lunar.toString(),"<年>")[2];
    if days[i].getSalaryRate()>1 {
        ..table.push(list,{day=day,festival=festival,lunar=lunar,xiu="休",xiukuang={color=0xFFFF0000;fillcolor=0xFFFFFFFF}});
    } else {
        ..table.push(list,{day=day,festival=festival,lunar=lunar});
    }
}
c.itemList = list;
c.selectedIndex = week + tm.day;
c.show();
win.loopMessage();

 

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=657;bottom=596;bgcolor=16777215)
winform.add(
plus={cls="plus";left=36;top=26;right=330;bottom=303;autohscroll=false;autovscroll=false;dl=1;dt=1;notify=1;z=1}
)
/*}}*/

winform.show();
import godking.customPlus;
var itemModel = {
        {   /* 矩形元素定义 */
            type="rect",  /* 类型:rect */
            rectf={x=3;y=3;width=-3;height=-3},  /* 矩形区域范围。负数表示距离项目右边或底边的距离。 */
            width=1,     /* 边框宽度。为0则无边框。  */
            round=5,     /* 圆角半径。0为矩形,-1为椭圆,其他值(>0)为圆角矩形。 */
            fillcolor=0x55FFFFFF,          /* 正常状态下,填充颜色 */
            itemhoverfillcolor=0x887FFFD4,       /* 鼠标划过项目时,填充颜色 */
            itemselectedfillcolor=0x887FFFD4,    /* 项目选中时,填充颜色 */
        }
         {
             type="text",  /* 类型:text */
             rectf={x=5;y=5;width=-10;height=20},  /*  文本范围。负数表示距离项目右边的距离。 */
             name="lunar",
             text="",  /* 正常状态下文本 */
             font={name="宋体",point=10,color=0xBB2288FF},            /* 正常状态下字体 */
        }
        {   /* 矩形元素定义 */
            type="rect",  /* 类型:rect */
            rectf={x=-20;y=0;width=20;height=20},  /* 矩形区域范围。负数表示距离项目右边或底边的距离。 */
            name = "xiukuang";
            width=1,     /* 边框宽度。为0则无边框。  */
            round=-1,     /* 圆角半径。0为矩形,-1为椭圆,其他值(>0)为圆角矩形。 */
            color=0;
            fillcolor=0,          /* 正常状态下,填充颜色 */
        }        
         {
             type="text",  /* 类型:text */
             rectf={x=-19;y=2;width=20;height=20},  /*  文本范围。负数表示距离项目右边的距离。 */
             name="xiu",
             smooth = true;
             align=1;
             valign=1;
             text="",  /* 正常状态下文本 */
             font={name="黑体",point=11,color=0xFF880000},            /* 正常状态下字体 */
        }
         {
             type="text",  /* 类型:text */
             rectf={x=1;y=-25;width=-1;height=25},  /*  文本范围。负数表示距离项目右边的距离。 */
             name="festival",
             align=1,        /* 文本水平对齐方式。0、(近端)左对齐  1、居中  2、(远端)右对齐 */
             valign=1,       /* 文本垂直对齐方式。0、(近端)顶对齐  1、居中  2、(远端)底对齐 */
             text="",  /* 正常状态下文本 */
             font={name="宋体",point=10,color=0x88000000},            /* 正常状态下字体 */
         }
         {
             type="text",  /* 类型:text */
             rectf={x=1;y=5;width=-1;height=-1},  /*  文本范围。负数表示距离项目右边的距离。 */
             name="day",
             cur=32649,   /* 鼠标指针,_IDC_ 开头的常量。 */
             align=1,        /* 文本水平对齐方式。0、(近端)左对齐  1、居中  2、(远端)右对齐 */
             valign=1,       /* 文本垂直对齐方式。0、(近端)顶对齐  1、居中  2、(远端)底对齐 */
             smooth=true,    /* 使用平滑效果,抗锯齿 */
             text="",  /* 正常状态下文本 */
             font={name="Arial",point=30,color=0xFF555555},            /* 正常状态下字体 */
             hoverfont=null,       /* 鼠标划过元素时字体 */
             checkedfont=null,     /* 元素被选择时字体 */
             itemhoverfont=null,   /* 鼠标划过项目时字体 */
             itemselectedfont=null,/* 项目选中时字体 */
             disabledfont=null,    /* 项目禁用时字体 */
         }        
}
var c = godking.customPlus(winform.plus,itemModel,,{
    itemWidth=80,     /*项目最小宽度,为0时根据colnum自动计算,所以不能与colnum同时=0*/
    itemHeight=80,    /*项目最小高度,为0时根据rownum自动计算,所以不能与rownum同时=0*/
    autoSizeWidth=false,    /*为true则自动将项目总宽度拉伸填满plus宽度,每个项目宽度不小于itemWidth*/
    autoSizeHeight=false,    /*为true则自动将项目总高度拉伸填满plus高度,每个项目高度不小于itemHeight*/
    rownum=0,     /*项目行数,为0时根据itemHeight自动计算,所以不能与itemHeight同时=0*/
    colnum=7,     /*项目列数,为0时根据itemWidth自动计算,所以不能与itemWidth同时=0*/
    padLeft=10,    /*plus左边空白距离*/
    padTop=50,    /*plus顶边空白距离*/
    padRight=10,    /*plus右边空白距离*/
    padBottom=10, /*plus底边空白距离*/
    autoFit=true,     /*是否自动调整plus组件宽度或高度(其中之一),保证能刚好显示全部行或列*/
                    /*当 itemHeight>0 且 colnum>0 且 rownum=0 时,自动调整plus高度,以能显示全部行*/
                    /*当 itemWidth>0 且 rownum>0 且 colnum=0 时,自动调整plus宽度,以能显示全部列*/
    vertical=false, /*是否将项目设置为竖向排列,行滚动方向设置为横向*/
    bkcolor=0xFFFFFFFFFF, /*背景颜色*/
    bkimg="https://img.tukuppt.com/bg_grid/00/14/08/Z4rmvf5vYk.jpg%21/fh/350", /*背景图像*/
    bkimgmode=0, /*背景图平铺模式。0:拉伸填满;1:左上角;2:居中*/
    singleCheck=0,/*元素check单选模式。0:多选;1:每个项目内单选;2:整个列表单选*/
})
c.hide();
var tm = ..time.now();
c.onDrawPageBegin = function(paint){
    paint = toPaint(paint); /*绑定paint对象的智能提示,方便输入后续代码。发布时可屏蔽此行。*/
    paint.textAntiAlias=false;
    for(i=1;7;1){
        var color,fillcolor = 0xFF000000,0x531490B3;
        if i==1 or i==7 { color=0xFFFFFFFF; fillcolor=0xFFB31469 };
        var rectf = ::RECTF((i-1)*80+12,10/*y1*/,76/*x2*/,36);
        paint.fillRoundRectF(rectf,8/*圆角半径*/,fillcolor);
        rectf.y = rectf.y+2;
        paint.drawTextF(rectf,"星期"++({"日","一","二","三","四","五","六"})[i],::LOGFONT(name="宋体";h=16;color=color;brush=null),0,1,1)
    }
}
c.onDrawItemBegin = function(paint){
    paint = toPaint(paint); /*绑定paint对象的智能提示,方便输入后续代码。发布时可屏蔽此行。*/
    paint.drawTextF(0,50,c.plus.width,c.plus.height,tostring(tm.month),::LOGFONT(name="Arial";h=350;color=0x88555555),0,1,1)
}
import godking.lunar
var lu = godking.lunar()
var m = lu.SolarMonth.fromYm(tm.year, tm.month)
var days = lu.toTable(m.getDays());
var list = {};
var week = days[1].getWeek();
for(i=1;week;1){
    ..table.push(list,{hide=true})
}
for(i=1;#days;1){
    var day = tostring(days[i].getDay());
    var lunar = days[i].getLunar();
    var festival = string.join(lu.toTable(lunar.getFestivals())," ")
    if !#festival {
        festival = string.join(lu.toTable(days[i].getFestivals())," ")
        if !#festival {
             festival = string.join(lu.toTable(days[i].getOtherFestivals())," ")
        } 
    }
    if #festival festival=..string.left(festival,5,true)
    lunar = ..string.split(lunar.toString(),"<年>")[2];
    if days[i].getSalaryRate()>1 {
        ..table.push(list,{day=day,festival=festival,lunar=lunar,xiu="休",xiukuang={color=0xFF550000;fillcolor=0xFFFFFFFF}});
    } else {
        ..table.push(list,{day=day,festival=festival,lunar=lunar});
    }
}
c.itemList = list;
c.selectedIndex = week + tm.day;
c.show();
win.loopMessage();

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1849060.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

小区业主管理系统

摘 要 随着城市化进程的加速和人口的不断增加&#xff0c;小区的数量也在不断增加。小区作为城市居民居住的主要场所&#xff0c;其管理工作也变得越来越重要。传统的小区业主管理方式存在诸多问题&#xff0c;如信息传递不畅、业务处理效率低下等。因此&#xff0c;开发一个高…

循环赛日程表

描述 n 2 ^ k个选手 每个选手必须与其他n-1个选手各赛一次每个选手一天赛一次比赛打n-1天 思路 k 3时的解 我们先进行假设&#xff1a;每个选手第一天和自己比&#xff0c;然后分解成4个子问题&#xff1a; (1)14号的第14天&#xff0c;对手1~4号; (2)14号的第58天&a…

数据结构——优先级队列(堆)Priority Queue详解

1. 优先级队列 队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该场景下&#xff0c;使用队列不合适 在这种情况下&#xff0c;数据结构应…

python-爬虫篇-爬取百度贴吧,段友之家的图片和视频

#!/usr/bin/env python # -*- coding: utf-8 -*-""" 爬取百度贴吧&#xff0c;段友之家的图片和视频 author: cuizy time&#xff1a;2018-05-19 """import requests import bs4 import osdef write_file(file_url, file_type):""&quo…

高可用设备日志采集工具

免费试用下载: Gitee下载 最新版本 优势: A. 开箱即用. 解压直接运行.不需额外安装. B. 批管理设备. 设备配置均在后台管理. C. 无人值守 客户端自启动,自更新. D. 稳定安全. 架构简单,内存占用小,通过授权访问.

Java——包

一、包 1、简要介绍 在Java编程语言中&#xff0c;包&#xff08;Package&#xff09; 是一种用来组织和管理类&#xff08;Class&#xff09;和接口&#xff08;Interface&#xff09;的机制。包为开发者提供了一种逻辑分组的方式&#xff0c;使代码更加模块化、结构化和易于…

获取泛型,泛型擦除,TypeReference 原理分析

说明 author blog.jellyfishmix.com / JellyfishMIX - githubLICENSE GPL-2.0 获取泛型&#xff0c;泛型擦除 下图中示例代码是一个工具类用于生成 csv 文件&#xff0c;需要拿到数据的类型&#xff0c;使用反射感知数据类型的字段&#xff0c;来填充表字段名。可以看到泛型…

开关阀(3):Fisher DVC6200定位器原理及调试

Fisher DVC6200---Digital Valve Controllers&#xff08; 数字阀门控制器&#xff09;简写 DVC,而6200是Fisher DVC定位器发展的一个系列型号&#xff0c;是Fisher结合DVC2000、DVC6000系列&#xff0c;取其特点发展的有着高适用性和高可靠性的阀门定位器。 DVC6200 原理&…

企业智慧办公管理平台

摘要 在之前的疫情中&#xff0c;大多数企业都受到了较大的冲击&#xff0c;然而一些公司却因为工作的特殊性可以居家远程办公&#xff0c;不过这些企业在管理员工的过程中却遇到了较大的困难&#xff0c;这是因为这些企业的管理系统根本大多都无法管理员工的工作项目&#xf…

【启明智显分享】国产工业级HMI芯片Model3C——个位数价,双CAN配置

在工业自动化、汽车控制系统中&#xff0c;通信技术的选择至关重要。其中&#xff0c;CAN&#xff08;Controller Area Network&#xff09;通信协议以其高实时性、可靠性和灵活性&#xff0c;已成为这些领域的首选。 从单CAN到双CAN&#xff1a;双重保障效率翻倍 CAN是一种多…

GNN Algorithms(8): DDPM

扩散模型 diffusion model&#xff1a;正向扩散过程 Forward Diffusion Process、反向生成过程 Reverse Generation Process. 本质&#xff1a;DDPM, Denoising Diffusion Probabilistic Model T steps 加噪&#xff1a;没有参数&#xff0c; ->随机取一个每一步都要加的随…

基于SSM+Jsp的体育竞赛成绩管理系统

开发语言&#xff1a;Java框架&#xff1a;ssm技术&#xff1a;JSPJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包…

Emacs之保存时删除行尾空格(一百四十二)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 优质专栏&#xff1a;多媒…

【机器学习】机器学习赋能交通出行:智能化实践与创新应用探索

&#x1f4dd;个人主页&#x1f339;&#xff1a;Eternity._ &#x1f339;&#x1f339;期待您的关注 &#x1f339;&#x1f339; ❀目录 &#x1f4d2;1. 引言&#x1f4d9;2. 交通流量预测与优化&#x1f31e;数据准备&#x1f319;模型训练与预测⭐评估模型与优化 &#x…

Linux操作系统篇:多线程

一. Linux中线程是怎么理解的 1.1 线程概念 在Linux中&#xff0c;线程是在进程“内部”执行的&#xff0c;线程是处于进程的进程地址空间中运行&#xff0c;线程用到的资源都是进程的资源&#xff0c;线程是执行进程的一部分代码&#xff0c;线程是最小的执行流&am…

C++代码编写风格:Header-Only与声明实现分离的选择

C代码编写风格&#xff1a;Header-Only与声明实现分离的选择 最近看到一些小伙伴问到了几个比较有趣的问题&#xff0c;这里总结一下&#xff0c;这些都是实际面试中出现过的问题&#xff0c;看看你知道多少&#xff0c;考察一下底子。 面试问题1&#xff1a;你通常编写代码的风…

eNSP学习——配置基于全局地址池的DHCP

目录 主要命令 原理概述 实验目的 实验场景 实验拓扑 实验编址 实验步骤 1、基本配置 2、配置基于全局地址池的 DHCP Server 3、配置DHCP Client 主要命令 [R1]dhcp enable //开启 DHCP功能//创建一个全局地址池&#xff0c;地址池名称为huawei1 [R1]ip pool h…

RIP路由协议汇总、版本兼容、定时器、协议优先级配置(华为)

#交换设备 RIP路由协议汇总 一、原理概述 当网络中路由器的路由条目非常多时&#xff0c;可以通过路由汇总&#xff08;又称路由汇聚或路由聚合&#xff09;来减少路由条目数&#xff0c;加快路由收敛时间和增强网络稳定性。路由汇总的原理是&#xff0c;同一个自然网段内的…

linux挂载硬盘(解决linux不显示硬盘问题)

目录 1.查看系统有几块硬盘2.查看挂载情况3.格式化硬盘4.创建挂载目录用于挂载硬盘5.将硬盘挂载到指定的挂载目录6.随系统自启动挂载查看配置文件&#xff0c;看是否已经把这条命令加入配置 帮同门解决挂载失败问题记录 参考视频&#xff1a;只要6步&#xff01;Linux系统下挂载…

内容安全复习 10 - 异常检测

文章目录 概述什么是异常检测异常检测应用与二分类分类器的辨析广义分布外检测&#xff08;OOD&#xff09; 异常检测分类Deep Learning for Feature Extraction&#xff08;用于特征提取的深度学习&#xff09;Learning Feature Representations of Normality&#xff08;学习…