Вверх ↑
Этот топик читают: Гость
Ответов: 1376
Рейтинг: 197
#46: 2011-11-27 21:25:08 ЛС | профиль | цитата
А я, для себя, на будущее, остановился на этой схеме (без навязывания мнения)
code_25992.txt
карма: 1

0
файлы: 1code_25992.txt [2.1KB] [219]
Ответов: 16884
Рейтинг: 1239
#47: 2011-11-27 21:40:00 ЛС | профиль | цитата
А я, для себя, на будущее, остановился на этой схеме (без навязывания мнения)
code_25993.txt
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1code_25993.txt [2KB] [187]
Ответов: 952
Рейтинг: 4
#48: 2011-12-15 01:25:37 ЛС | профиль | цитата
Как подать 0 на хаб при закрытии дочерней формы?
code_26188.txt


Не могу никак совладать с этим календарем етить его.
Предыдущие схемы не работают при редактировании записи БД. Данные из записи в компоненте появляются при открытии формы Редактировать. Но если что то в записи изменил, что то одно, и нажал Сохранить, то календари которые ты на форме Редактировать не трогал - в БД внесутся пустые места. Т.е. до редактирования в записи была дата договора, а после сохранения изменений (например названия фирмы), эта дата в записи пропала. Пустое место.
карма: 0

0
файлы: 1code_26188.txt [2.9KB] [194]
Ответов: 16884
Рейтинг: 1239
#49: 2011-12-15 01:29:02 ЛС | профиль | цитата
user_asm, я тебе приводил пример. Там всё работает.
http://forum.d2h.ru//getfile/25684
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#50: 2011-12-15 22:33:53 ЛС | профиль | цитата
Вот что сейчас в моей схеме:
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


------------ Дoбавленo в 22.33:
В точку DataConvert стучусь первым действием при нажатии кнопки Сохранить изменения на форме.
карма: 0

0
файлы: 2code_26189.txt [2.8KB] [179], u_a_dogovor2.rar [3.6KB] [122]
Ответов: 16884
Рейтинг: 1239
#51: 2011-12-16 11:07:37 ЛС | профиль | цитата
user_asm, не могу я понять твою химию
Загнал свой пример в дочернюю форму - всё нормально работает.
Загнал в панель - тоже нормально.
Что ты делаешь - непонятно.
Где-то ты нарушил порядок следования событий.
user_asm писал(а):
Вот что сейчас в моей схеме:

Вот что сейчас должно быть в твоей схеме:
Add(ChildPanelEx,13970209,140,119)
{
}
BEGIN_SDK
Add(EditMultiEx,15156336,21,21)
{
@Group=50964304
WorkCount=#6:doData|
VarCount=#19:ResRD=Значение даты|
Width=286
Height=165
link(doData,7975239:doConvert,[(38,27)(38,125)])
link(ResRD,12474190:GetData,[(27,179)(139,179)])
}
Add(DatePicker,1277244,63,77)
{
@Group=50964304
Top=-1
Width=104
Height=21
Ctl3D=0
AlignPicker=1
SetDateOnChange=1
Point(DateTime)
link(onChange,15224980:doWork2,[])
}
Add(Panel,16214912,259,112)
{
@Group=50964304
Top=55
Width=128
Height=20
}
Add(HubEx,15224980,150,77)
{
@Group=50964304
link(onEvent,528079:doWork,[])
}
Add(InlineCode,528079,182,77)
{
@Group=50964304
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,1277244:doSetDate,[(228,83)(228,61)(51,61)(51,83)])
link(toBack,12748076:doSendToBack,[])
link(toFront,12748076:doBringToFront,[])
}
Add(DateConvertor,7975239,63,119)
{
@Group=50964304
Mode=8
Format="yyyy-MM-dd"
link(onResult,15224980:doWork3,[(154,125)])
}
Add(DateConvertor,12121190,182,140)
{
@Group=50964304
Mode=9
Format="yyyy-MM-dd"
Point(Data)
link(onResult,12474190:doData,[(226,146)(226,134)(121,134)(121,146)])
link(Data,528079:ResRD,[])
}
Add(EventFromData,12474190,133,140)
{
@Group=50964304
link(onEvent,12121190:doConvert,[])
}
Add(Edit,12748076,259,70)
{
@Group=50964304
Left=3
Top=2
Width=85
Height=15
Color=255
Text=""
ReadOnly=0
Point(doSendToBack)
Point(doBringToFront)
}
Add(Button,2902524,64,21)
{
@Group=50964304
Left=105
Width=20
WinStyle=1
Caption="X"
Data=String()
link(onClick,15224980:doWork1,[(154,27)])
}
END_SDK


ИМХО
------------ Дoбавленo в 11.07:
P.S. И не удаляй кнопку с крестиком. Если человек не там открыл дату, как её уничтожить ???????
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#52: 2011-12-16 20:31:56 ЛС | профиль | цитата
А ты не сохраняй результат на дочерней форме.
Именно на той что я выложил выше. Даты выбери но не сохраняй, закрой форму или нажми Отмена.
Потом снова открой - даты заполнены, красного на них нет.
------------ Дoбавленo в 20.31:
http://forum.hiasm.com//getfile/26204
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#53: 2011-12-16 20:40:58 ЛС | профиль | цитата
Tad писал(а):
Где-то ты нарушил порядок следования событий.

карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
Ответов: 952
Рейтинг: 4
#54: 2011-12-16 20:52:23 ЛС | профиль | цитата
Что то не могу разобраться. Вроде аналогично ... Ладно, щас кумекать буду ....
карма: 0

0
Ответов: 16884
Рейтинг: 1239
#55: 2011-12-16 21:24:05 ЛС | профиль | цитата
Ну и в чем проблема ?
u_adog.rar
карма: 25
Немного терпения! Дежурный экстрасенс скоро свяжется с Вами!
0
файлы: 1u_adog.rar [3.8KB] [115]
55
Сообщение
...
Прикрепленные файлы
(файлы не залиты)