上一节我们完成了页面 NewRequestScreen 的解析,那个页面相当于是提交请假申请的第一步,选择要请的假期的类型。
本节接下来会沿着这个申请,一步步解析相关的页面。
当点选了假期类型后,所跳转到的页面就是下面这个 SelectDatesScreen,让用户选择假期的开始日期和结束日期。
1. 页面结构
从上图能看出的是,整个页面由多种独立控件组成。从上到下,这个页面涉及到图标、标签、图片、几何形状、日期拾取器和按钮六种控件。
2. 控件解析
接下来我们就逐个看这些控件和如何结合在一起运行的。
首先,注意到SelectDatesScreen层面上设置了 OnVisible 属性:
OnVisible = If(!_editingRequest && !_reviewRequest, Set(_leaveStart,Today());Set(_leaveEnd,Today())); //如果当前既不是编辑之前的申请(!_editingRequest) 也不是查看之前的申请(!_reviewRequest),就把开始日期和结束日期都设置成当天(相当于是新建一个申请)。
//注意: 本节多次用到这两个布尔类型的变量 _editingRequest 和 _reviewRequest。
//这两个变量在之前的HomeScreen里有做过初始化设置,后续根据申请页面的状态不同,还有几个页面也对其进行了初始化设置。
2.1 iconBackSelectDates - 左上角的返回按钮
OnSelect = Back();Reset(LeaveStartDatePicker);Reset(LeaveEndDatePicker) //返回上一页,然后重置两个日期拾取器
2.2 LabelSelectDatesHeader - 页面标题
Text = If(_editingRequest, "Edit ", "Select ") & "dates" //根据当前页面的属性是编辑之前的申请还是新建申请(通过变量 _editingRequest 进行控制),显示不同的标题
2.3 ImageLeaveType - 假期类型图标
Image = If(_editingRequest, LookUp(LeaveTypeCollection, Upper(type)=Upper(First(RequestEdit).LeaveType)).icon, _selectedLeaveType.icon)
//和上面的标签控件很类似,也是根据当前页面的属性进行相应的后续处理。区别在于上面是直接固定设定好不同情况下的文字提示,这里是根据情况设置不同的图标。
//如果当前是编辑页面,就通过LookUp函数从LeaveTypeCollection里找出对应的假期类型图标; 否则就利用上一节传递过来的变量 _selectedLeaveType, 其实也是个对象,通过 . 运算符来获取所选的假期对应的图标。
//这里还涉及到第四节设置的一个集合 RequestEd

本文解析了一个请假申请流程中SelectDatesScreen页面的设计与实现细节,包括页面结构、控件功能及逻辑处理等内容。
最低0.47元/天 解锁文章
3382

被折叠的 条评论
为什么被折叠?



