Вверх ↑
Ответов: 948
Рейтинг: 4
#1: 2017-11-14 22:09:01 ЛС | профиль | цитата
Такой вариант для регулирования +/- 1 дней пойдет?
В некоторых случаях срок выполнения работ рассчитывается с даты оплаты, а в некоторых с о следующего дня. Надо установить возможность автоматического расчета сроков для разных событий.

Add(MainForm,10345291,329,280)
{
Width=632
Height=108
}
Add(DatePicker,1825606,329,322)
{
Left=15
Top=15
Width=130
Height=21
Point(DateInt)
link(onChange,8046800:doAdd,[])
}
Add(Edit,12926443,385,280)
{
Left=150
Top=15
Width=30
Text="20"
}
Add(InlineCode,8046800,378,322)
{
WorkPoints=#5:doAdd|
EventPoints=#5:onRes|
DataPoints=#7:DateInt|7:DaysAdd|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|16: FDT:integer;|9: public|38: DateInt, DaysAdd, onRes :THI_Event;|48: procedure doAdd(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|29:procedure THiAsmClass.doAdd;|24: var i,Da,Dow,c:integer;|5:begin|10: C:=0;|36: FDT := toIntegerEvent(DateInt);|35: Da := toIntegerEvent(DaysAdd);|38: If (FDT = 0) OR (Da=0) Then Exit;|19: While (c<=Da) do |8: begin|13: inc(FDT);|38: If (DayOfWeek(FDT)<6) then inc(C);|7: end;|27: _hi_onEvent(onRes,FDT);|4:End;|4:end.|
link(onRes,14103650:doSetDate,[])
link(DateInt,1825606:DateInt,[(384,310)(372,310)(372,365)(335,365)])
link(DaysAdd,12926443:Text,[])
}
Add(DatePicker,14103650,455,322)
{
Left=185
Top=15
Width=145
Height=21
Point(DateTime)
link(onChange,15667617:doAdd,[])
}
Add(DatePicker,2645261,595,322)
{
Left=425
Top=15
Width=160
Height=21
Point(Data)
}
Add(Edit,8233132,525,273)
{
Left=355
Top=15
Text="-1"
}
Add(InlineCode,15667617,518,322)
{
WorkPoints=#5:doAdd|
EventPoints=#5:onRes|
DataPoints=#7:DateInt|7:DaysAdd|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|16: FDT:integer;|9: public|38: DateInt, DaysAdd, onRes :THI_Event;|48: procedure doAdd(var _Data:TData; Index:Word);|5: end;|0:|14:implementation|29:procedure THiAsmClass.doAdd;|24: var i,Da,Dow,c:integer;|5:begin|10: C:=0;|36: FDT := toIntegerEvent(DateInt);|35: Da := toIntegerEvent(DaysAdd);|38: If (FDT = 0) OR (Da=0) Then Exit;|19: While (c<=Da) do |8: begin|13: inc(FDT);|38: If (DayOfWeek(FDT)<6) then inc(C);|7: end;|27: _hi_onEvent(onRes,FDT);|4:End;|4:end.|
link(onRes,2645261:doSetDate,[])
link(DateInt,14103650:DateTime,[(524,310)(492,310)(492,366)(461,366)])
link(DaysAdd,8233132:Text,[])
}

карма: 0

0