鸿蒙(HarmonyOS)自定义Dialog实现时间选择控件

一、操作环境

操作系统:  Windows 11 专业版、IDE:DevEco Studio 3.1.1 Release、SDK:HarmonyOS 3.1.0(API 9)

二、效果图

三、代码

SelectedDateDialog.ets文件
/**
 * 时间选择
 */
@CustomDialog
export struct SelectedDateDialog {
  @State selectedDate: Date = new Date()
  private callback: (value: DatePickerResult) => void
  @State value: DatePickerResult = {
    year: new Date().getFullYear(),
    month: new Date().getMonth(),
    day: parseInt(new Date().getDate().toString().padStart(2, '0')) }
  controller: CustomDialogController//自定义dialog必须声明

  aboutToAppear() {
    console.log("时间选择Loading展示》》》》》")
  }

  build() {
    Column() {
      DatePicker({
        start: new Date('2014-1-1'), //起始时间
        end: new Date('2030-1-1'), //结束时间
        selected: this.selectedDate, //默认所选时间
      })
        .margin({ top: 20 })
        .lunar(false) //日期是否显示农历。 - true:展示农历。 - false:不展示农历。 默认值:false
        .onChange(value => {
          console.log("轮换结果:" + value)
          this.value = value
        })

      Blank()

      Button('确定').borderRadius('3').width('30%')
        .margin({ bottom: 20 })
        .onClick((event: ClickEvent) => {
          console.log("时间:" + this.value.year + this.value.month + this.value.day)
          this.callback?.(this.value)
          this.controller.close()
        })
    }
    .width('100%')
    .height('50%')
  }
}

在page中的调用方式:

selectTimeDialog: CustomDialogController = new CustomDialogController({
    builder: SelectedDateDialog({ callback: (value) => {
      console.log("选择结果:" + value.year)
      this.changeTime = value.year + "-" + (value.month + 1) + "-" + value.day//月份从0开始,故需+1
    } }),
    cancel: this.closeDialog, //点击空白区域回调
    autoCancel: true,
    alignment: DialogAlignment.Bottom,
    offset: { dx: 0, dy: -20 },
    gridCount: 4,
    customStyle: false
  })

  closeDialog() {
    console.info('Click the callback in the blank area')
    this.selectTimeDialog.close()
  }

  openDialog() {
    //点击事件中直接调用
    this.selectTimeDialog.open()
  }

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

数据结构和算法入门

1.了解数据结构和算法 1.1 二分查找 二分查找(Binary Search)是一种在有序数组中查找特定元素的搜索算法。它的基本思想是将数组分成两半,然后比较目标值与中间元素的大小关系,从而确定应该在左半部分还是右半部分继续查找。这个…

Hyperledger Fabric 网络体验 - 网络启动过程概览

进入fabric-samples/test-network目录,执行指令: ./network.sh up -i 2.5执行完指令能看到fabric已经启动。 作为第一次Fabric网络体验,网络启动主要包含三个操作,分别是生成配置文件、启动网络和操作网络。 配置文件 使用cr…

数驭未来,景联文科技构建高质大模型数据库

国内应用层面的需求推动AI产业的加速发展。根据IDC数据预测,预计2026年中国人工智能软件及应用市场规模会达到211亿美元。 数据、算法、算力是AI发展的驱动力,其中数据是AI发展的基石,中国的数据规模增长速度预期将领跑全球。 2024年《政府工…

部署jar包遇到“zip file closed”和“ JCE cannot authenticate the provider BC”

一:导致原因 1、是因为自己打包时使用的jdk8而后运行时使用的是jdk17,jdk版本不一致导致的文件类型异常 二:报错截图 三:解决问题 1、使用jdk几打包就使用jdk几运行,列如我使用的是jdk8打包,使用jdk8运行…

甲方怒斥!!!为什么媒体不按原稿发布?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 前几天执行了一个媒体邀约的项目,邀约媒体参会,以及活动现场一切都很顺利,稿件同步的很晚,但还是让几个媒体连夜进行了刊登报道&#xff0…

MySQL作业五

1. 创建表goods,orders 2. 向商品表中插入商品记录 3. 触发器操作 3.1 建立触发器,订单表中增加订单数量后,商品表商品数量同步减少对应的商品订单出数量,并测试 3.2 建立触发器,实现功能:客户取消订单,恢复商品表对应…

五、工厂方法模式

文章目录 1 基本介绍2 案例2.1 Drink 抽象类2.2 Tea 类2.3 Coffee 类2.4 DrinkFactory 抽象类2.5 TeaFactory 类2.6 CoffeeFactory 类2.7 Client 类2.8 Client 类运行结果2.9 总结 3 各角色之间的关系3.1 角色3.1.1 Product ( 抽象产品 )3.1.2 ConcreteProduct ( 具体产品 )3.1…

如何开启或者关闭 Windows 安全登录?

什么是安全登录 什么是 Windows 安全登录呢?安全登录是 Windows 附加的一个组件,它可以在用户需要登录的之前先将登录界面隐藏,只有当用户按下 CtrlAltDelete 之后才出现登录屏幕,这样可以防止那些模拟登录界面的程序获取密码信息…

【Apache Doris】数据副本问题排查指南

【Apache Doris】数据副本问题排查指南 一、问题现象二、问题定位三、问题处理 本文主要分享Doris中数据副本异常的问题现象、问题定位以及如何处理此类问题。 一、问题现象 问题日志 查询报错 Failed to initialize storage reader, tablet{tablet_id}.xxx.xxx问题说明 查…

SSD基本架构与工作原理

SSD的核心由一个或多核心的CPU控制器、DRAM缓存以及多个NAND闪存芯片组成。CPU控制器负责管理所有读写操作,并通过DRAM缓存存储映射表等元数据,以加速寻址过程。 NAND闪存则是数据存储的实际介质,其组织结构从大到小依次为通道(包…

Springboot项目远程部署gitee仓库(docker+Jenkins+maven+git)

创建仓库 创建一个Springboot项目,勾选web将该项目创建git本地仓库,再创建远程仓库推送上去 创建TestController RestControllerRequestMapping("/test")public class TestController {GetMapping("/hello")public String sayHell…

LeetCode 热题 HOT 100 (001/100)【宇宙最简单版】

【链表】 No. 0160 相交链表 【简单】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持&#x…

【系统架构设计 每日一问】四 如何对关系型数据库及NoSql数据库选型

根据不同的业务需求和场景,选择适合的数据库类型至关重要。以下是一个优化后的表格展示,涵盖了管理型系统、大流量系统、日志型系统、搜索型系统、事务型系统、离线计算和实时计算七大类业务系统的数据库选型建议。先明确下NoSQL的分类 NoSQL数据库分类…

RabbitMQ_基础篇

文章目录 第一章 消息中间件1.1 应用场景1.2 常用消息中间件1.2.1 ActiveMQ1.2.2 RabbitMQ1.2.3 RocketMQ1.2.4 Kafka 第二章 RabbitMQ2.1 为什么选择RabbitMQ2.2 RabbitMQ简介2.3 RabbitMQ架构2.4 RabbitMQ工作模式2.4.1 Hello World2.4.2 Work Queues2.4.3 Publish/Subscribe…

分离式网络变压器的集成化设计替代传统网络变压器(网络隔离滤波器)尝试

Hqst盈盛(华强盛)电子导读:今天分享的是应用了分离式网络变压器设计的的新型网络变压器(网络隔离变压器) 今天我们一起来看这款新型网络变压器,它就是应用分离式网络变压器集成到电路板上,加上外…

googleTest 源码主线框架性分析

本文备忘一个主题的分析过程和结论,即,googleTest框架中是如何调用相关的测试宏的? TEST TEST_F TEST_P 等等 1,googleTest 环境与简单示例 1.1 下载 googletest 并编译 下载: $ git clone https://github.com/goog…

linux环境安装mongoDB

一、安装单体mogodb 目标:在Linux中部署一个单机的MongoDB,作为生产环境下使用。 提示:和Windows下操作差不多。 步骤如下: (1)先到官网下载压缩包 mongod-linux-x86_64-4.0.10.tgz 。 (2&…

细说MCU用定时器控制ADC采样频率的实现方法并通过Simulink查看串口输出波形

目录 一、硬件工程 二、建立Simulink模型 1.安装MATLAB和Simulink 2.建立Simulink模型 三、代码修改 1.修改回调函数 2.产看结果 3.完整的main.c 本文作者的文章 细说MCU用定时器控制ADC采样频率的实现方法-CSDN博客 https://wenchm.blog.csdn.net/article/details/…

《python语言程序设计》第6章4题反向显示一个整数,使用函数reverse 实现 4位数

* def reverse(n):a n // 1000b n % 1000 // 100c n % 1000 % 100 // 10d n % 100 % 10return str(d) str(c) str(b) str(a)numberT 3456 aText reverse(numberT) print(f"{numberT} is reverse number {aText}")

Spring的IoC与DI介绍

Spring基础 Spring Framework系统架构 Spring Framework是Spring生态圈中最基础的项目,是其它项目的根基。 IoC(Inversion ofControl)控制反转 使用对象时,由主动new产生对象转换为由外部提供给对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转。Sprin…