我有一个带有日历的表格。单击日历时,他们将变量设置CurDateSel
为日历上选择的日期。
我有一个常量数组(周),其中存储了Monday
[Index 0] 到Sunday
[Index 6] 的值。
我也有一个StringGrid
过去一周中的几天跨越网格顶部,从星期日到星期一,但是,我现在已将其更改为将网格的第一列显示为CurDateSel
日期(Now
当表格开始)和以下网格列来存储所选日期之后的日期。
例如,如果选择了星期六:
Saturday|Sunday|Monday|Tuesday|Wednesday|Thursday|Friday
然后我有一个过程,它遍历存储的预订列表,并将具有相应日期和日期的预订添加到网格中。例如,如果预订是在 23 日星期六下午 2 点进行的,则程序将在 y 轴上转到下午 2 点,然后转到轴上的第 5 列,因为这对应于星期六,在我的数组 WEEK 中。
但是,由于我的列现在根据当天更改,因此存储的预订值不会转到相应的日期,而是转到通常存储日期的列,如果这些列从星期一开始并在星期日结束。
我决定创建一个新数组来存储一周的值,其中一周的开始是当天,一周的结束是当天 + 6 天。我称这个数组SelDayArray
。
例如,如果是星期六,则此数组将从 开始Index[0] = Saturday
并以 . 结尾Index[6] = Friday
。
我试图编写代码来填充第二个数组,但是我似乎无法正确填充它。
procedure ReturnUpdatedDay;
var
i, x, p, CurDayNo: Integer;
begin
i := 0;
CurDayNo := ReturnDayCell(FormatDateTime('dddd', CurDateSel));
repeat
SelDayArray[i] := Week[CurDayNo+i];
Inc(i);
until (CurDayNo + i) = 7;
Dec(i);
p := i;
for x := 0 to (CurDayNo-p) do
begin
Inc(i);
SelDayArray[i] := Week[x];
end;
end;
My ReturnDayCell
FunctionDayNo
根据数组的固定常量数组返回WEEK
。因此,如果选择星期六作为当前日期,该过程将返回5
,CurDayNo
并且= 5
因此,我的ReturnUpdatedDay
程序应该将 my SelDayArray
to的值设置TheCurrentDay
[Index 0]
为TheCurrentDay+6
[Index 6]
这适用于“星期六”这一天。当我将列表打印到备忘录中时,我会收到以下值:周六、周日、周一……周五。
但是,当我在星期六前几天尝试时,我要么收到访问冲突错误,要么列表的最后两天没有存储/打印。当我选择星期日时,我收到访问冲突错误。
请有人帮我看看我做错了什么。对于任何拼写错误或令人困惑的信息,我们深表歉意。谢谢。