WheelView 拓展:滚轮选择框扩展,滚轮日历选择框和旋转日历扩展

« 返回首页

滚轮选择框扩展

WheelView 与数字选择框类似,但滚轮内容可以是任意字符串。

原始代码来自 WheelView:效果类似 Android 4.0 以上原生的 DatePicker。

感谢 @wildcontrol 赞助本扩展。

演示图片(示例共用到 3 个扩展):

Download link here;

aix拓展 cn.kevinkun.WheelView.aix

demo WheelView.aia

Wheel Calendar 扩展

Wheel Calendar 扩展提供了一个可自定义的交互式日历选择框,采用滚轮设计,让用户可以轻松地在应用中集成日期选择功能。无论您是构建调度应用、表单还是任何需要日期选择的应用,轮盘日历选择框都提供了用户友好的界面。

下载链接

版本 1.0: WheelCalendarV1.0.aix

版本 3.0(推荐): SpinCalendarV3.aix

版本信息

  • 版本 1.0:WheelCalendarV1.0.aix (14.1 KB) - 2025年3月18日发布
  • 版本 2.0:已废弃
  • 版本 3.0:SpinCalendarV3.aix (12.7 KB) - 2025年3月22日发布,功能增强版

功能概述

扩展特性

  • 滚轮日历选择框:直观的轮盘界面设计
  • 自定义和交互式:支持各种自定义选项
  • 日期选择:简单易用的日期选择功能
  • 年龄计算:计算用户与当前日期的年龄差
  • 生日倒计时:显示距离下一个生日的天数
  • 多种输出格式:支持不同的日期格式输出

截图

Logo 和主界面

Wheel Calendar Logo 主界面

输出示例

输出示例1 输出示例2

Spin Calendar V3 界面

Spin Calendar V3 示例1 Spin Calendar V3 示例2

函数

OpenWheel 打开轮盘(年份,月份,日期)
打开滚轮日历选择框并设置初始日期。
  • 年份:数字类型,初始年份
  • 月份:数字类型,初始月份(1-12)
  • 日期:数字类型,初始日期
SetDate 设置日期(年份,月份,日期)
设置日历的当前日期。
  • 年份:数字类型,要设置的年份
  • 月份:数字类型,要设置的月份(1-12)
  • 日期:数字类型,要设置的日期
GetSelectedDate 获取选中日期() {:YAILList}
获取用户选择的日期信息。
  • 返回值:列表类型,包含年、月、日的列表
GetSelectedYear 获取选中年份() {:.number .read-only}
获取用户选择的年份。
  • 返回值:数字类型,选中的年份
GetSelectedMonth 获取选中月份() {:.number .read-only}
获取用户选择的月份。
  • 返回值:数字类型,选中的月份(1-12)
GetSelectedDay 获取选中日期() {:.number .read-only}
获取用户选择的日期。
  • 返回值:数字类型,选中的日期
GetDateText 获取日期文本() {:.text .read-only}
获取格式化的日期文本。
  • 返回值:文本类型,格式化的日期字符串
GetCurrentDate 获取当前日期() {:YAILList}
获取当前系统日期。
  • 返回值:列表类型,包含当前年、月、日的列表
SetMinDate 设置最小日期(年份,月份,日期)
设置可选择的最小日期。
  • 年份:数字类型,最小年份
  • 月份:数字类型,最小月份(1-12)
  • 日期:数字类型,最小日期
SetMaxDate 设置最大日期(年份,月份,日期)
设置可选择的最大日期。
  • 年份:数字类型,最大年份
  • 月份:数字类型,最大月份(1-12)
  • 日期:数字类型,最大日期
SetThemeColor 设置主题颜色(颜色)
设置日历的主题颜色。
  • 颜色:数字类型,主题颜色值
SetTodayColor 设置今日颜色(颜色)
设置今日日期的显示颜色。
  • 颜色:数字类型,今日日期颜色值
SetSelectedColor 设置选中颜色(颜色)
设置选中日期的颜色。
  • 颜色:数字类型,选中日期颜色值

高级函数

CalculateAge 计算年龄(出生年份,出生月份,出生日期) {:YAILList}
计算指定出生日期到当前日期的年龄信息。
  • 出生年份:数字类型,出生年份
  • 出生月份:数字类型,出生月份(1-12)
  • 出生日期:数字类型,出生日期
  • 返回值:列表类型,包含年龄、月数、天数的列表
GetAgeText 获取年龄文本(出生年份,出生月份,出生日期) {:.text}
获取格式化的年龄文本描述。
  • 出生年份:数字类型,出生年份
  • 出生月份:数字类型,出生月份(1-12)
  • 出生日期:数字类型,出生日期
  • 返回值:文本类型,年龄描述文本
GetDaysUntilBirthday 获取生日倒计时(出生年份,出生月份,出生日期) {:.number .read-only}
计算距离下一个生日还有多少天。
  • 出生年份:数字类型,出生年份
  • 出生月份:数字类型,出生月份(1-12)
  • 出生日期:数字类型,出生日期
  • 返回值:数字类型,距离下一个生日的天数

事件

DateSelected 日期选择(年份,月份,日期)
当用户选择日期时触发。
  • 年份:数字类型,选中的年份
  • 月份:数字类型,选中的月份(1-12)
  • 日期:数字类型,选中的日期
CalendarClosed 日历关闭()
当日历选择框关闭时触发。

属性

IsVisible 是否可见 {:.boolean}
设置或获取日历是否可见。
SelectedYear 选中年份 {:.number .read-only}
获取当前选中的年份。
SelectedMonth 选中月份 {:.number .read-only}
获取当前选中的月份(1-12)。
SelectedDay 选中日期 {:.number .read-only}
获取当前选中的日期。
CurrentYear 当前年份 {:.number .read-only}
获取当前系统年份。
CurrentMonth 当前月份 {:.number .read-only}
获取当前系统月份(1-12)。
CurrentDay 当前日期 {:.number .read-only}
获取当前系统日期。

使用示例

基础日期选择

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

处理日期选择

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

日期验证和设置

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

年龄计算

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

生日倒计时

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

主题自定义

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

日期范围限制

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

调度应用示例

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

表单填写示例

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

自动计算年龄

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

高级应用场景

活动预约系统

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

年龄限制注册

when Screen1.Initialize() {
  KevinkunWheelView1.ShowInLayout(VerticalArrangement1, ["今天", "明天"], 0, "day")
  WheelCalendar1.InitializeIn(HorizontalArrangement1)
  SpinCalendar1.SetArrangement(VerticalArrangement1)
}

when KevinkunWheelView1.AfterChoose(choice, index, id) {
  Label1.Text = choice
}

注意事项

  1. 日期格式:月份使用1-12的数字格式
  2. 年龄计算:基于当前系统时间计算
  3. 生日倒计时:自动计算距离下一个生日的天数
  4. 主题设置:颜色值使用十六进制格式
  5. 版本兼容:推荐使用版本3.0,功能更完善
  6. 内存使用:长时间使用后建议适当释放资源

应用场景

  • 调度应用:事件预约、日程安排
  • 表单系统:用户注册、信息采集
  • 生日应用:生日提醒、年龄验证
  • 教育应用:课程安排、考试日期
  • 健康应用:医疗预约、服药提醒
  • 旅行应用:出行日期、酒店预订
  • 社交应用:活动组织、聚会安排

版权信息

  • 原作者:Still_Learning
  • 原始网址:https://community.appinventor.mit.edu/t/free-wheel-calendar-spin-calendar-extension/142640
  • 发布日期:2025年3月19日

文档最后更新:2025年11月20日

文档反馈