code_26189.txt
Млин целый вечер потратил на перебивку всех календарей в клиенте, и только к ночи вылез этот баг
------------ Дoбавленo в 21.47:
Tad,
В твоем примере нет дочерних форм. Именно с этим и не могу разобраться.
В остальном то что у тебя в схеме, то использовал и я в своей. Идентично.
Я не могу разобратся что подавать в мультик при закрытии доч.формы и при её открытии, в том числе не только на добавление записи но и на Редактировании существующей.
------------ Дoбавленo в 21.54:
Вот твоё только с дочерней.
открой дочернюю, выбери числа в календарях. Закрой дочернюю. Снова открой.
------------ Дoбавленo в 22.07:
Ага, выловил, когда в расположенный в мультике компонент календаря приходит дата из редактируемой записи то не происходит собития OnChange и код IC соответственно не выполняется. И если я нажимаю Сохранить изменения то в запрос идет пустота вместо даты.
------------ Дoбавленo в 22.32:
Снова пришлось паутинки наплести.
Остановился на таком:
Add(ChildPanelEx,13970209,308,161)
{
}
BEGIN_SDK
Add(EditMultiEx,15156336,21,21)
{
WorkCount=#59:doData=Приходит дата из БДили пустое если даты там не было|21:doConvert=DataConvert|
VarCount=#19:ResRD=Значение даты|
Width=461
Height=165
link(doData,14931862:doCase,[(28,27)(28,62)])
link(doConvert,12121190:doConvert,[(77,34)(77,132)])
link(ResRD,12121190:Result,[(27,165)(139,165)])
}
Add(Edit,12748076,434,42)
{
Left=3
Top=2
Width=85
Height=15
Color=255
Text=""
ReadOnly=0
Point(doSendToBack)
Point(doBringToFront)
}
Add(DatePicker,1277244,238,56)
{
Top=-1
Width=124
Height=21
Ctl3D=0
AlignPicker=1
SetDateOnChange=1
Point(DateTime)
link(onChange,15224980:doWork2,[(298,62)(298,55)])
}
Add(Panel,16214912,434,84)
{
Left=364
Top=7
Width=124
Height=20
}
Add(HubEx,15224980,325,49)
{
link(onEvent,528079:doWork,[])
}
Add(InlineCode,528079,357,49)
{
WorkPoints=#6:doWork|
EventPoints=#4:Init|6:toBack|7:toFront|0:|
VarPoints=#5:ResRD|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|21:uses kol,Share,Debug;|0:|4:type|28: THiAsmClass = class(TDebug)|10: private|14: Rd:integer;|3: |9: public|36: init, toBack, toFront: THI_Event;|45: procedure ResRd(var dt:TData; Index:Word);|49: procedure doWork(var _Data:TData; Index:Word);|3: |5: end;|0:|14:implementation|0:|29:procedure THiAsmClass.doWork;|5:BEGIN|29: Rd := Trunc(toReal(_Data));|16: If Rd<>0 then |8: begin|44: _hi_onEvent(init,Rd); // установить дату|36: _hi_onEvent(toBack); // открыть|6: end|40: else _hi_onEvent(toFront); // скрыть|4:END;|0:|28:procedure THiAsmClass.ResRd;|5:BEGIN|19: dtInteger(dt,Rd);|5:END; |4:end.|
link(Init,11516050:doWork1,[(403,55)(403,33)(226,33)])
link(toBack,12748076:doSendToBack,[])
link(toFront,12748076:doBringToFront,[])
}
Add(DoData,14446106,140,35)
{
Data=Integer(0)
link(onEventData,15224980:doWork1,[(329,41)])
}
Add(HubEx,11516050,222,42)
{
Angle=1
link(onEvent,1277244:doSetDate,[(226,62)])
}
Add(Hub,6024373,147,70)
{
link(onEvent1,11516050:doWork2,[(192,76)(192,48)])
link(onEvent2,15224980:doWork3,[(211,83)(211,98)(329,98)])
}
Add(DateConvertor,7975239,98,56)
{
Mode=8
Format="yyyy-MM-dd"
Point(Result)
link(onResult,6024373:doEvent1,[(138,62)(138,76)])
}
Add(Case,14931862,35,56)
{
link(onNextCase,7975239:doConvert,[])
link(onTrue,14446106:doData,[(87,69)(87,41)])
}
Add(DateConvertor,12121190,133,126)
{
Mode=9
Format="yyyy-MM-dd"
Point(Result)
Point(Data)
link(Data,1277244:DateTime,[(139,107)(244,107)])
}
END_SDK
В точку DataConvert стучусь первым действием при нажатии кнопки Сохранить изменения на форме.