滚轮选择框扩展
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 和主界面

输出示例

Spin Calendar V3 界面

函数
- 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-12的数字格式
- 年龄计算:基于当前系统时间计算
- 生日倒计时:自动计算距离下一个生日的天数
- 主题设置:颜色值使用十六进制格式
- 版本兼容:推荐使用版本3.0,功能更完善
- 内存使用:长时间使用后建议适当释放资源
应用场景
- 调度应用:事件预约、日程安排
- 表单系统:用户注册、信息采集
- 生日应用:生日提醒、年龄验证
- 教育应用:课程安排、考试日期
- 健康应用:医疗预约、服药提醒
- 旅行应用:出行日期、酒店预订
- 社交应用:活动组织、聚会安排
版权信息
- 原作者:Still_Learning
- 原始网址:https://community.appinventor.mit.edu/t/free-wheel-calendar-spin-calendar-extension/142640
- 发布日期:2025年3月19日
文档最后更新:2025年11月20日
扫码添加客服咨询