Вверх ↑
Этот топик читают: Гость
Ответов: 1079
Рейтинг: 77
#16: 2025-02-11 20:18:33 ЛС | профиль | цитата
Gunta писал(а):
Я себе это как-то так представляю

Походу ТС сам еще не знает как он это представляет

Скопипастил(нагло стырил) у Вас кусок схемы, понравилась идея с таблицей

Схему не стал упорядочивать, всеравно статью о циркуляции данных не читают, может хоть так поймут как оно там бегает (да и лень мне сегодня)


Add(MainForm,6614047,35,140)
{
Width=849
Height=313
Point(onClose)
link(onCreate,5765194:doEnum,[])
link(onClose,10088875:doEvent1,[(83,167)(83,118)])
}
Add(ChildPanelEx,5765194,98,154)
{
link(onEvent2,696306:doEvent1,[(145,160)(145,125)])
link(onPart1,10904693:doValue,[])
link(onPart2,168900:doWork1,[(365,174)])
link(onPart3,9301816:doValue,[(353,181)(353,244)])
link(onSplit,8860255:doEvent1,[])
}
BEGIN_SDK
Add(EditMultiEx,15651246,21,21)
{
WorkCount=#6:doEnum|
EventCount=#8:onEvent2|7:onPart1|7:onPart2|7:onPart3|7:onSplit|
Width=433
Height=403
link(doEnum,3675150:doEnum,[(85,27)(85,321)])
}
Add(Panel,11288418,35,105)
{
Width=833
Height=35
Align=2
}
Add(Label,1683065,35,49)
{
Left=10
Top=10
Width=82
Height=17
Caption="Начало смен с:"
}
Add(DatePicker,438136,161,49)
{
Left=105
Top=5
Width=155
Height=21
Point(DateInt)
Point(onCloseUp)
link(onCloseUp,1467083:doEvent1,[(204,62)(204,94)(107,94)(107,104)])
}
Add(DateConvertor,411267,161,105)
{
Mode=9
Format="yyyy;M;d"
Point(Data)
link(onResult,9717560:doSplit,[])
link(Data,438136:DateInt,[])
}
Add(Hub,1467083,119,98)
{
InCount=2
OutCount=3
link(onEvent1,10391167:doData,[(153,104)(153,192)(121,192)(121,279)])
link(onEvent2,411267:doConvert,[])
link(onEvent3,15651246:onEvent2,[(146,118)(146,27)])
}
Add(MultiStrData,9717560,231,105)
{
Count=3
link(onPart1,15651246:onPart1,[(292,111)(292,34)])
link(onPart2,15651246:onPart2,[(302,118)(302,41)])
link(onPart3,15651246:onPart3,[(310,125)(310,48)])
}
Add(ComboBox,8581999,308,322)
{
Left=280
Top=5
Width=175
Height=21
ReadOnly=0
Point(Index)
link(onClick,1467083:doEvent2,[(353,335)(353,304)(107,304)(107,111)])
}
Add(StrList,562841,189,245)
{
Strings=#38:Иванов=х,х,н,н,х,х,н,н,х,х,д,д,х,х,д,д|38:Петров=н,н,х,х,н,н,х,х,д,д,х,х,д,д,х,х|39:Сидоров=х,х,д,д,х,х,д,д,х,х,н,н,х,х,н,н|40:Кузнецов=д,д,х,х,д,д,х,х,н,н,х,х,н,н,х,х|46:Равшан=д,х,х,х,х,д,х,х,х,х,н,х,х,х,х,н,х,х,х,х|47:Джамшут=н,х,х,х,х,н,х,х,х,х,д,х,х,х,х,д,х,х,х,х|15:охрана1=д,н,х,х|15:охрана2=х,д,н,х|15:охрана3=х,х,д,н|15:охрана4=н,х,х,д|0:|
Point(doGetString)
Point(onGetString)
link(onGetString,7323567:doSplit,[])
}
Add(ArrayEnum,3675150,203,315)
{
link(onItem,8891442:doSplit,[])
link(Array,562841:Array,[])
}
Add(StrPart,8891442,252,315)
{
Char="="
link(onPart,8581999:doAdd,[])
}
Add(DoData,10391167,133,273)
{
link(onEventData,562841:doGetString,[])
link(Data,8581999:Index,[(139,261)(173,261)(173,364)(328,364)])
}
Add(StrPart,7323567,252,252)
{
Char="="
link(onSplit,15651246:onSplit,[(322,258)(322,55)])
}
END_SDK
Add(StrList,7965454,728,189)
{
@Hint=#21:График смены в цветах|
Strings=#1:д|1:д|1:х|1:х|1:д|1:д|1:х|1:х|1:н|1:н|1:х|1:х|1:н|1:н|1:х|1:х|
Point(doGetString)
Point(String)
Point(IdxToSelect)
}
Add(FormatStr,6701151,749,378)
{
DataCount=1
Mask="%1;"
link(onFString,7214563:doWork2,[])
link(Str1,7965454:String,[])
}
Add(InlineCode,15930644,434,378)
{
WorkPoints=#12:GetMonthDays|
EventPoints=#6:onDays|
DataPoints=#4:Year|5:Month|
Code=#15:unit HiAsmUnit;|0:|9:interface|0:|29:uses Kol,Share,Debug,Windows;|0:|4:type|28: THiAsmClass = class(TDebug)|8: private|3: |7: public|20: onDays:THI_Event;|19: Year: THI_Event;|22: Month:THI_Event; |4: |55: procedure GetMonthDays(var _Data:TData; Index:word);|5: end;|0:|14:implementation|0:|35:procedure THiAsmClass.GetMonthDays;|5:begin|108: _hi_OnEvent(onDays, Int2Str(MonthDays[IsLeapYear(ReadInteger(_Data, Year))][ReadInteger(_Data, Month)]));|6:end; |0:|4:end.|0:|0:|
link(onDays,2221956:doFor,[])
link(Year,10904693:Value,[])
link(Month,13076261:Var2,[])
}
Add(For,2221956,504,378)
{
InData=0
link(onEvent,11351548:doEvent1,[(552,384)(552,377)])
link(onStop,7642751:doEvent1,[(548,391)(548,398)])
link(Start,4990123:Var2,[])
}
Add(Memory,9301816,504,238)
{
Default=Integer(1)
}
Add(MultiElementEx,15350782,665,217)
{
link(onTrue,7965454:doGetString,[])
link(Op2,7965454:Count,[(671,205)(709,205)(709,238)(741,238)])
}
BEGIN_SDK
Add(EditMultiEx,5572494,14,7)
{
WorkCount=#7:doWork2|8:doEvent1|
EventCount=#6:onTrue|
DataCount=#3:Op2|
link(doWork2,7110887:doEvent1,[(49,13)(49,76)])
link(doEvent1,5969604:doWork2,[(39,20)(39,69)])
}
Add(If_else,6423386,161,63)
{
Type=1
link(onTrue,230273:doData,[])
link(onFalse,8458660:doEvent1,[(202,76)(202,117)(37,117)(37,83)])
link(Op2,5572494:Op2,[(174,16)(20,16)])
}
Add(Math,2334012,112,63)
{
Op2=1
ResultType=0
Default=-1
Point(doClear)
link(onResult,6423386:doCompare,[])
link(Op1,12418993:Var2,[])
}
Add(Hub,8458660,42,77)
{
link(onEvent1,7110887:doEvent2,[])
link(onEvent2,5969604:doWork3,[(67,90)])
}
Add(HubEx,5969604,63,63)
{
link(onEvent,2334012:doOperation,[])
}
Add(DoData,230273,231,63)
{
link(onEventData,5572494:onTrue,[(285,69)(285,13)])
link(Data,12418993:Var3,[(237,54)])
}
Add(GetDataEx,12418993,112,49)
{
Angle=3
link(Data,2334012:Result,[(106,54)(106,110)(118,110)])
}
Add(Hub,7110887,77,70)
{
InCount=2
OutCount=1
link(onEvent1,2334012:doClear,[])
}
END_SDK
Add(Hub,11351548,567,371)
{
link(onEvent1,15350782:doEvent1,[(586,377)(586,230)])
link(onEvent2,6701151:doString,[])
}
Add(Memory,10904693,434,161)
{
}
Add(Memory,880184,441,203)
{
}
Add(Math,12749478,252,399)
{
Op2=1
ResultType=0
Point(doClear)
link(onResult,12054949:doCompare,[])
link(Op1,13076261:Var1,[(258,355)])
}
Add(HubEx,168900,361,203)
{
link(onEvent,880184:doValue,[])
}
Add(If_else,12054949,294,399)
{
Type=3
Op2=Integer(12)
link(onTrue,11908777:doEvent1,[])
AddHint(-5,-26,27,13,Op2)
}
Add(Hub,11908777,343,399)
{
OutCount=3
link(onEvent1,168900:doWork3,[(365,405)])
link(onEvent2,4273397:doEvent2,[(375,412)(375,517)])
link(onEvent3,13441865:doWork3,[(410,419)])
}
Add(GetDataEx,13076261,441,350)
{
link(Data,880184:Value,[])
}
Add(Hub,7642751,567,392)
{
OutCount=4
link(onEvent1,7211250:doData,[(611,398)(611,440)])
link(onEvent2,16074127:doClear,[(624,405)(624,391)])
link(onEvent3,9301816:doClear,[(603,412)(603,453)(490,453)(490,251)])
link(onEvent4,12749478:doOperation,[(593,419)(593,443)(231,443)(231,405)])
}
Add(Hub,10867731,371,364)
{
OutCount=3
link(onEvent1,4273397:doEvent1,[(423,370)(423,510)])
link(onEvent2,4732895:doCompare,[(410,377)(410,328)])
link(onEvent3,13441865:doWork2,[])
}
Add(Hub,10088875,196,112)
{
InCount=2
OutCount=3
link(onEvent1,8569429:doClear,[])
link(onEvent2,15350782:doWork2,[(587,125)(587,223)])
link(onEvent3,12749478:doClear,[(224,132)(224,412)])
}
Add(MTStrTbl,12733493,833,266)
{
Top=35
Width=833
Height=240
Align=5
Name="tbl"
Columns=#1:\|1:1|1:2|1:3|1:4|1:5|1:6|1:7|1:8|1:9|2:10|2:11|2:12|2:13|2:14|2:15|2:16|2:17|2:18|2:19|2:20|2:21|2:22|2:23|2:24|2:25|2:26|2:27|2:28|2:29|2:30|2:31|
ColumnWidth=25
ColorItems=0
Grid=0
link(FormatCell,13332854:GetData,[])
}
Add(MT_String,10507392,917,420)
{
link(onResult,12654704:doRowAction,[])
}
Add(DoData,7211250,847,434)
{
link(onEventData,10507392:doMTString,[])
link(Data,7002244:Var2,[])
}
Add(MST_RowAction,12654704,973,420)
{
MSTControl="tbl"
}
Add(StrCat,16074127,847,378)
{
Point(doClear)
link(Str1,7002244:Var3,[(853,365)(890,365)(890,418)])
}
Add(If_else,4732895,616,322)
{
Type=2
Op2=Integer(1)
link(onTrue,4145754:doFor,[])
link(Op1,900744:Var2,[])
}
Add(GetDataEx,4990123,504,294)
{
link(Data,9301816:Value,[])
}
Add(For,4145754,665,322)
{
Start=2
link(onEvent,11069881:doData,[])
link(End,900744:Var3,[(678,299)])
}
Add(HubEx,13441865,406,378)
{
link(onEvent,15930644:GetMonthDays,[])
}
Add(GetDataEx,900744,616,294)
{
Angle=3
link(Data,4990123:Var3,[])
}
Add(DoData,11069881,707,322)
{
Data=String(;)
link(onEventData,7214563:doWork1,[(800,328)])
}
Add(MST_Clear,8569429,826,112)
{
MSTControl="tbl"
}
Add(EventFromData,13332854,847,203)
{
link(onEvent,8769614:doSeparateMT,[])
}
Add(MT_MultiData,8769614,896,203)
{
Count=1
link(onData1,4526268:doGetIndex,[])
}
Add(IndexToChanel,15516131,1050,182)
{
Count=3
link(onEvent1,3407137:doColor,[(1112,188)(1112,223)])
link(onEvent2,6024469:doColor,[(1102,195)(1102,265)])
link(onEvent3,8563778:doColor,[(1092,202)(1092,307)])
}
Add(HubEx,13423211,1183,217)
{
Angle=3
link(onEvent,16511362:doWork3,[])
}
Add(StrList,4526268,945,175)
{
Strings=#1:х|1:н|1:д|
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,10840516:doCase,[])
}
Add(SelectColor,8563778,1141,301)
{
Color=15780518
link(onColor,12615861:doWork3,[(1187,307)])
}
Add(HubEx,12615861,1183,259)
{
Angle=3
link(onEvent,13423211:doWork3,[])
}
Add(SelectColor,6024469,1141,259)
{
Color=10789024
link(onColor,12615861:doWork2,[])
}
Add(Case,10840516,994,182)
{
Value=Integer(-1)
link(onNextCase,15516131:doEvent,[])
link(onTrue,13553286:doData,[(1037,195)(1037,181)])
}
Add(SelectColor,3407137,1141,217)
{
Color=12639424
link(onColor,13423211:doWork2,[])
}
Add(DoData,13553286,1141,175)
{
link(onEventData,16511362:doWork2,[])
}
Add(HubEx,16511362,1183,175)
{
Angle=3
link(onEvent,13332854:doData,[(1187,167)(837,167)(837,209)])
}
Add(Hub,696306,154,119)
{
link(onEvent1,10088875:doEvent2,[])
link(onEvent2,10867731:doEvent1,[(184,132)(184,370)])
}
Add(Str_Enum,15454821,518,189)
{
Delimiter=","
link(onEnum,7965454:doAdd,[])
}
Add(Hub,8860255,483,182)
{
link(onEvent1,7965454:doClear,[(712,188)(712,202)])
link(onEvent2,15454821:doEnum,[])
}
Add(GetDataEx,7002244,847,413)
{
link(Data,16074127:Result,[])
}
Add(StrCat,5166377,476,504)
{
Str2=";"
link(onStrCat,7214563:doWork3,[(800,510)])
link(Str1,13076261:Var3,[(482,355)])
}
Add(Hub,4273397,448,504)
{
InCount=2
OutCount=1
link(onEvent1,5166377:doStrCat,[])
}
Add(HubEx,7214563,796,378)
{
link(onEvent,16074127:doStrCat,[])
}

карма: 0

1
Голосовали:Gitarist
Ответов: 125
Рейтинг: 0
#17: 2025-02-12 02:24:24 ЛС | профиль | цитата
Посмотрел. У всех красота! Мне даже как то неудобно что вам пришлось столько возиться с этим! )) У Леонида, с подсветочкой, пожалуй, самый приятный вариант.
карма: 0

0
Ответов: 8935
Рейтинг: 824
#18: 2025-02-12 16:10:29 ЛС | профиль | цитата
Медаль Леониду!!
Вообще-то такой график смен нарушает трудовой кодекс времён СССР с 41 рабочих часов в неделю, не знаю как сейчас).
карма: 19

0
Ответов: 125
Рейтинг: 0
#19: 2025-02-15 05:13:58 ЛС | профиль | цитата
Леонид писал(а):
Медаль Леониду!!
Вообще-то такой график смен нарушает трудовой кодекс времён СССР с 41 рабочих часов в неделю, не знаю как сейчас).

Медаль - обязательно!

Но всё же возьму схему tom-it, там таргетировано можно выбрать по фамилии смену, это то что нужно)) и даже немного понятно в схеме как чо работает )))) Хотелось бы с подсветками какими нибудь, выходной - красным, раб день - желтым, ночь - голубым , и текущий день бы в рамочку.. но наверно это гемор раскрашивать каждую ячейку...? или можно? не пробовал я рюшечками заниматься никогда.

Редактировалось 4 раз(а), последний 2025-02-15 05:35:56
карма: 0

0
Ответов: 1079
Рейтинг: 77
#20: 2025-02-15 09:00:34 ЛС | профиль | цитата
Gitarist писал(а):
Хотелось бы с подсветками какими нибудь, выходной - красным, раб день - желтым, ночь - голубым , и текущий день бы в рамочку..


Примерно так и есть, только без рамочки
После установки hiasm необходимо обновиться с SVN.
Чтобы новые элементы появились в палитре элементов нужно в папке Hiasm\Elements\Delphi запустить файл sql_to_db.bat
карма: 0

0
Ответов: 125
Рейтинг: 0
#21: 2025-02-15 18:52:42 ЛС | профиль | цитата
tom-it писал(а):
После установки hiasm необходимо обновиться с SVN.

Пожалуйста, подскажите как это делается
------
Нашел в корне лежал HiSVN

--- Добавлено в 2025-02-15 19:43:03

tom-it писал(а):
Примерно так и есть, только без рамочки

Обновился. Да, отлично. Только не пойму где чо править чтоб были не порядковые номера месяцев, а чтоб были человеческие названия апрель, март итд...


-----
Еще немного недопонял, зачем тучу действий делает программа при закрытии формы....

Редактировалось 4 раз(а), последний 2025-02-15 19:45:09
карма: 0

0
Ответов: 832
Рейтинг: 181
#22: 2025-02-16 07:30:58 ЛС | профиль | цитата
Gitarist писал(а):
Хотелось бы с подсветками какими нибудь, выходной - красным, раб день - желтым, ночь - голубым , и текущий день бы в рамочку..

Очень странный набор цветов. Но как говорится, на вкус и цвет товарищей нет.
Gitarist писал(а):
Только не пойму где чо править чтоб были не порядковые номера месяцев, а чтоб были человеческие названия апрель, март итд...


Add(MainForm,12530505,35,49)
{
Width=909
Caption="Тестовая программа"
link(onCreate,3675150:doEnum,[])
}
Add(MonthCalendar,157068,567,147)
{
Holidays=[]
link(onDay,15232918:doNext,[(613,153)(613,181)])
link(Year,5791612:Year,[(573,138)(342,138)])
link(Month,4806429:Position,[(580,131)(482,131)])
}
Add(DateConvertor,5791612,336,84)
{
Format="yyyy;MM"
Point(Data)
Point(Year)
Point(Month)
Point(Day)
link(onResult,4806429:doFor,[])
link(Data,438136:DateTime,[])
}
Add(MST_RowAction,4893562,819,238)
{
MSTControl="tbl"
}
Add(Label,6939501,133,7)
{
Width=893
Height=40
Align=2
Font=[Lucida Console,20,0,0,204]
Caption=""
AutoSize=1
Alignment=2
}
Add(MTStrTbl,12733493,154,406)
{
Top=40
Width=893
Height=221
Align=5
Name="tbl"
Columns=#12:Месяц=100==1|1:1|1:2|1:3|1:4|1:5|1:6|1:7|1:8|1:9|2:10|2:11|2:12|2:13|2:14|2:15|2:16|2:17|2:18|2:19|2:20|2:21|2:22|2:23|2:24|2:25|2:26|2:27|2:28|2:29|2:30|2:31|
ColumnWidth=25
ColorItems=0
Grid=0
link(FormatCell,5058459:GetData,[])
}
Add(EventFromData,5058459,168,343)
{
link(onEvent,2269799:doSeparateMT,[])
}
Add(MT_MultiData,2269799,217,343)
{
Point(RemaindData)
link(onData1,13353342:doGetIndex,[])
link(onData2,4237894:doEvent,[(256,356)(256,559)])
}
Add(IndexToChanel,15354473,371,322)
{
Count=3
link(onEvent1,3407137:doColor,[(433,328)(433,363)])
link(onEvent2,9735995:doColor,[(423,335)(423,419)])
link(onEvent3,13465159:doColor,[(413,342)(413,475)])
}
Add(StrList,13353342,266,315)
{
Strings=#1:х|1:н|1:д|
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,3248053:doCase,[])
}
Add(SelectColor,13465159,441,469)
{
Color=65535
link(onColor,3951982:doString,[])
}
Add(SelectColor,9735995,441,413)
{
Color=16776960
link(onColor,2085550:doString,[])
}
Add(Case,3248053,315,322)
{
Value=Integer(-1)
link(onNextCase,15354473:doEvent,[])
link(onTrue,13553286:doData,[(358,335)(358,321)])
}
Add(SelectColor,3407137,441,357)
{
Color=16711935
link(onColor,12337827:doString,[])
}
Add(DoData,13553286,441,315)
{
link(onEventData,16511362:doWork2,[])
}
Add(HubEx,16511362,567,315)
{
Angle=3
link(onEvent,5058459:doData,[(571,307)(158,307)(158,349)])
}
Add(StrList,2613972,819,56)
{
Strings=#1:0|6:Январь|7:Февраль|4:Март|6:Апрель|3:Май|4:Июнь|4:Июль|6:Август|8:Сентябрь|7:Октябрь|6:Ноябрь|7:Декабрь|
Point(doGetString)
Point(onGetString)
Point(String)
}
Add(For,4806429,476,84)
{
End=12
link(onEvent,15056497:doEvent1,[])
link(Start,5791612:Month,[(482,75)(468,75)(468,129)(349,129)])
}
Add(Hub,15056497,518,84)
{
OutCount=4
link(onEvent1,2613972:doGetString,[])
link(onEvent2,157068:doEnumDays,[(550,97)(550,153)])
link(onEvent3,5688008:doAdd,[(718,104)(718,244)])
link(onEvent4,11905520:doClear,[])
}
Add(ComboBox,8581999,189,70)
{
Left=295
Top=10
Width=175
Height=21
Text="Выьрать Смену"
ReadOnly=0
Point(Index)
Point(doSelect)
link(onClick,11175145:doEvent2,[])
}
Add(StrList,562841,301,175)
{
Strings=#23:Иванов=ххннххннххддххдд|23:Петров=ннххннххддххддхх|24:Сидоров=ххддххддххннххнн|25:Кузнецов=ддххддххннххннхх|27:Равшан=дххххдххххнххххнхххх|28:Джамшут=нххххнххххдххххдхххх|12:охрана1=днхх|12:охрана2=хднх|12:охрана3=ххдн|12:охрана4=нххд|
Point(doGetString)
Point(onGetString)
Point(IdxToSelect)
link(onGetString,7323567:doSplit,[])
link(IdxToSelect,8581999:Index,[(321,166)(209,166)])
}
Add(ArrayEnum,3675150,91,63)
{
link(onItem,8891442:doSplit,[])
link(Array,562841:Array,[(97,54)(230,54)(230,222)(321,222)])
}
Add(StrPart,8891442,140,63)
{
Char="="
link(onPart,8581999:doAdd,[])
}
Add(StrPart,7323567,350,182)
{
Char="="
link(onSplit,5788686:doLoad,[])
}
Add(CharArray,5788686,399,182)
{
Point(Count)
link(onLoad,6112496:doOperation,[])
}
Add(Label,1683065,77,7)
{
Left=10
Top=10
Width=82
Height=17
Caption="Выделить дату"
}
Add(DatePicker,438136,329,35)
{
Left=110
Top=10
Width=155
Height=21
Point(DateInt)
Point(DateTime)
Point(onCloseUp)
link(onCloseUp,11175145:doEvent1,[(379,48)(379,16)(249,16)(249,76)])
}
Add(MST_Clear,8569429,287,35)
{
MSTControl="tbl"
}
Add(CounterEx,15232918,623,175)
{
Max=2
Default=-1
Point(doMax)
Point(doValue)
link(onNext,4003013:doRead,[])
}
Add(Hub,3671584,511,182)
{
link(onEvent1,15232918:doMax,[])
link(onEvent2,8745157:doData,[(536,195)(536,202)])
}
Add(Math,6112496,462,182)
{
OpType=1
Op2=1
ResultType=0
link(onResult,3671584:doEvent1,[])
link(Op1,5788686:Count,[(468,173)(447,173)(447,222)(419,222)])
}
Add(DoData,8745157,546,196)
{
Data=Integer(-1)
link(onEventData,15232918:doValue,[(585,202)(585,195)])
}
Add(ArrayRW,4003013,679,175)
{
link(onRead,12171128:doAdd,[])
link(Array,5788686:Array,[(685,166)(671,166)(671,236)(405,236)])
}
Add(Hub,11175145,259,70)
{
InCount=2
OutCount=3
link(onEvent1,8569429:doClear,[(277,76)(277,41)])
link(onEvent2,562841:doGetString,[(291,83)(291,209)])
link(onEvent3,5791612:doConvert,[])
}
Add(MT_Array,11905520,742,98)
{
}
Add(ArrayRW,12171128,742,161)
{
link(Array,11905520:Array,[])
}
Add(MT_AddData,5688008,770,238)
{
link(onAdd,4893562:doRowAction,[])
link(Data1,2613972:String,[(776,201)(846,201)])
link(Data2,11905520:MThread,[(783,152)(755,152)])
}
Add(FormatStr,12337827,504,357)
{
Mask="%1,%2"
link(onFString,15784921:doWork2,[])
link(Str1,3407137:Result,[(510,348)(496,348)(496,397)(447,397)])
}
Add(HubEx,15784921,567,357)
{
Angle=3
link(onEvent,16511362:doWork3,[])
}
Add(FormatStr,2085550,504,413)
{
Mask="%1,%2"
link(onFString,3775423:doWork2,[])
link(Str1,9735995:Result,[(510,397)(496,397)(496,453)(447,453)])
}
Add(FormatStr,3951982,504,469)
{
Mask="%1,%2"
link(onFString,9603620:doWork2,[])
link(Str1,13465159:Result,[(510,460)(496,460)(496,509)(447,509)])
}
Add(HubEx,3775423,567,413)
{
Angle=3
link(onEvent,15784921:doWork3,[])
}
Add(IndexToChanel,4237894,266,553)
{
Count=3
Point(Data)
link(onEvent1,15093655:doCompare,[])
link(Data,2269799:RemaindData,[(272,404)(223,404)])
}
Add(If_else,15093655,329,553)
{
link(onTrue,11008233:doString,[])
link(Op2,14103085:GetData,[])
}
Add(FormatStr,11008233,511,553)
{
Mask="255,0,,,3"
link(onFString,9603620:doWork3,[(571,559)])
}
Add(HubEx,9603620,567,469)
{
Angle=3
link(onEvent,3775423:doWork3,[])
}
Add(Math,9076512,385,504)
{
OpType=1
Op2=1
link(onResult,14103085:doData,[(424,510)(424,489)(326,489)(326,510)])
link(Op1,5791612:Day,[(391,124)(356,124)])
}
Add(EventFromData,14103085,336,504)
{
link(onEvent,9076512:doOperation,[])
}

карма: 16

1
Голосовали:Gitarist
Ответов: 1079
Рейтинг: 77
#23: 2025-02-16 16:37:17 ЛС | профиль | цитата
Gitarist писал(а):
Еще немного недопонял, зачем тучу действий делает программа при закрытии формы....

Это такой хитрый способ шифрования схемы, так сказать защита от копирования

Все просто - лень.
Пример, это не готовая вылизанная и протестированная схема, а некий набросок. Если времени куча, да, можно пример вылизывать до идеала.
Но смысл? Позже окажется, что у ТС желания изменились, и твой пример уже не подходит, а время потрачено .

Чтобы каждый раз не рисовать схему с ноля к имеющейся схеме копипастится кусок из другой схемы. Зачастую захватываются левые не нужные элементы, да и стыкуемые части не очень стыкуемые. Вот и получается жуткая жуть.

Gitarist писал(а):
при закрытии формы.

Нужно только одно действие. Уничтожить содержимое динамических контейнеров. И то только при использовании fpc компилятора.
Так как под рукой болтался хаб с линками для сброса, то на него был повешан еще один линк от формы.

Редактировалось 1 раз(а), последний 2025-02-16 18:03:56
карма: 0

1
Голосовали:Gitarist
Ответов: 125
Рейтинг: 0
#24: 2025-02-17 02:40:45 ЛС | профиль | цитата
tom-it писал(а):
Позже окажется, что у ТС желания изменились

Ну аппетит приходит во время еды)) И мы потихоньку движемся к идеалу)) Например, сейчас он рисуется у меня в голове как таблица, где всегда отображен полный год и подсвечены все смены.

Gunta, Спасибо за схему. Месяца по-человечески. Но в ней функция "Начало смен с" перебивается теперь с функцией "выделить дату"..? дата же просто сегодняшняя должна быть подсвечена и все..
"Начало смен с" у нас должно быть применимо к самому человеку "Иванову" "Петрову" итд.. Примерно как у Леонида в схеме было, только разложить надо на годовую сетку.

Редактировалось 1 раз(а), последний 2025-02-17 02:45:13
карма: 0

0
Ответов: 1079
Рейтинг: 77
#25: 2025-02-17 05:40:47 ЛС | профиль | цитата
Gitarist писал(а):
Ну аппетит приходит во время еды

Это очевидно, но...
Для примера я не открывал hiasm почти 10 лет(судьба так распорядилась). И то что я в последнее время проявляю активность на форуме не означает что я сутками рисую схемы.
Это я к тому что, все мы люди. И для существования нам нужно выполнять некие обязательные действия - работа, семья, отдых, пища, развлечение, сон и ...
То есть не у каждого и не всегда есть время поиграть в художника схем.

Задавая вопрос старайтесь максимально точно и четко описывать проблему.


Что такое "Начало смен с"?

Котельня, два кочегара - начало цикла смен с 15 октября до 15 апреля.
Школа, уборщицы - с 1 сентября до 25 мая
Супермаркет, грузчики - целый год с 1 января, только ночные.
Больница, дежурные врачи - целый год с 1 января, только ночные.
Аптека, продавцы - целый год с 1 января, только дневные.

В отдельной программе формируется цикл смен и сохраняется в файл.
В программе расписания загружается этот файл и на основе начальной даты формируется график.

Леонид натолкнул на конвейерный способ.

То-есть на основной поток данных - это дни месяца накладываются дополнительные данные циклически повторяющиеся.
К примеру
1,2,3,4,5,6,7,8,9
д,н,x
#,-

выхлоп
1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,1,2,3,4,5,6,7,8,
д,н,x,д,н,x,д,н,x,д,н,x,д,н,x,д,н,x,д,н,x,д,н,x
#,-,#,-,#,-,#,-,#,-,#,-,#,-,#,-,#,-,#,-,#,-,#,-

Далее этап визуализации - строковое представление, динамические панели, таблица.

Вот и весь алгоритм.
Конечный этап - реализация.

Моя жуткая на вид схема, это быстро состряпанный, от балды, алгоритм, но никак не пример для рисования. За такую схему по шее бы надавать. Ну извините, нету времени делать полностью готовое, к применению, решение. В схеме даже inline использован, поскольку за эти года уже забыл какие кубики имеются и какой у них функционал.
карма: 0

0
Ответов: 125
Рейтинг: 0
#26: 2025-02-17 11:26:26 ЛС | профиль | цитата
tom-it, да даже такая, как вы говорите, жуткая схема за которую типа по рукам надо надавать, мне сгодится. Пойдет...
Про отсутствие времени полностью понимаю, поэтому ножками ручками не стучу, ничего не требую. Дело энтузиаста.
Сам я тоже лет 7 в хайасм не заходил, но честно говоря и тогда не сильно шарил. Но на обработку несложных задач знаний хватало.
карма: 0

0
Ответов: 832
Рейтинг: 181
#27: 2025-02-18 16:19:18 ЛС | профиль | цитата
Gitarist, Выдели строчку с сотрудником и нажми ПКМ. Далее разберёшься.

Add(MainForm,15443588,308,133)
{
Width=500
Height=329
link(onCreate,11459729:doEvent1,[])
}
Add(MTStrTbl,15391708,77,245)
{
Top=121
Width=484
Height=169
Align=5
Font=[MS Sans Serif,12,0,0,1]
Name="set"
Columns=#18:Смена/работник=150|13:начало с =100|16:график смен =200|
Redaction=0
Point(onMouseDown)
link(onMouseDown,12655694:doCompare,[])
}
Add(MST_Load,571213,441,140)
{
ColNameHeader=1
MSTControl="set"
}
Add(StreamConvertor,3682515,392,147)
{
Mode=7
Point(Data)
link(onResult,571213:doLoadFromStream,[])
link(Data,6934679:Text,[])
}
Add(StrList,6934679,392,98)
{
Strings=#34:Иванов;20-02-2025;ххннххннххддххдд|33:Петров;1-01-2025;ннххннххддххддхх|35:Сидоров;15-04-2025;ххддххддххннххнн|36:Кузнецов;20-02-2025;ддххддххннххннхх|37:Равшан;1-01-2025;дххххдххххнххххнхххх|38:Джамшут;1-01-2025;нххххнххххдххххдхххх|
}
Add(ChildGroupBox,8251955,392,189)
{
}
BEGIN_SDK
Add(EditMulti,15444951,21,21)
{
WorkCount=1
VarCount=1
Width=524
Height=382
HOffset=196
link(doWork1,14416925:doEvent1,[(109,27)(109,48)])
link(Var1,3203803:Cable,[])
}
Add(GroupBox,2714259,35,105)
{
Width=484
Height=121
Align=2
Caption="Выберите цвет для ..."
Point(onShow)
}
Add(ColorBox,8871370,238,35)
{
Left=175
Top=25
Height=21
}
Add(DoData,7673363,175,42)
{
Data=Integer(16711935)
link(onEventData,8871370:doSelectColor,[])
}
Add(Label,3610994,476,35)
{
Left=40
Top=25
Width=102
Height=20
Font=[MS Sans Serif,10,0,0,1]
Caption="Выходной день"
}
Add(ColorBox,9167457,238,84)
{
Left=175
Top=55
Height=21
}
Add(DoData,7078942,175,91)
{
Data=Integer(65535)
link(onEventData,9167457:doSelectColor,[])
}
Add(Label,14943796,476,91)
{
Left=40
Top=55
Width=102
Height=20
Font=[MS Sans Serif,10,0,0,1]
Caption="Дневная смена"
}
Add(ColorBox,15228823,238,133)
{
Left=175
Top=85
Height=21
}
Add(DoData,11630920,175,140)
{
Data=Integer(16776960)
link(onEventData,15228823:doSelectColor,[])
}
Add(Label,839568,476,140)
{
Left=40
Top=85
Width=102
Height=20
Font=[MS Sans Serif,10,0,0,1]
Caption="Ночная смена"
}
Add(Hub,14416925,119,42)
{
OutCount=3
link(onEvent1,7673363:doData,[])
link(onEvent2,7078942:doData,[(165,55)(165,97)])
link(onEvent3,11630920:doData,[(158,62)(158,146)])
}
Add(CableData,3203803,217,189)
{
Count=3
link(Wire1,8871370:CurrentColor,[(223,75)(244,75)])
link(Wire2,9167457:CurrentColor,[(230,124)(244,124)])
link(Wire3,15228823:CurrentColor,[(237,173)(244,173)])
}
END_SDK
Add(Hub,11459729,357,147)
{
link(onEvent1,3682515:doConvert,[])
link(onEvent2,8251955:doWork1,[(382,160)(382,195)])
}
Add(PopupMenu,15117232,238,273)
{
Menu=#15:Показать график|6:Отмена|0:|
link(onClick,5810217:doEvent,[])
}
Add(If_else,12655694,133,273)
{
Op2=Integer(1)
link(onTrue,6180441:doDeferredEvent,[])
}
Add(DeferredEvent,6180441,182,273)
{
link(onDeferredEvent,15117232:doPopupHere,[])
}
Add(IndexToChanel,5810217,287,273)
{
link(onEvent1,15873075:doEMatrix,[])
}
Add(MST_Matrix,15873075,336,273)
{
X=-1
MSTControl="set"
link(onEMatrix,5414383:doWork1,[])
link(Y,15391708:Index,[(349,264)(125,264)(125,292)(90,292)])
}
Add(ChildForm,5414383,392,273)
{
link(Data1,8251955:Var1,[])
}
BEGIN_SDK
Add(EditMulti,4922233,21,21)
{
WorkCount=1
DataCount=1
Width=734
Height=746
link(doWork1,2791744:doEvent1,[(46,27)(46,34)])
}
Add(MainForm,10399033,217,28)
{
Left=35
Top=105
Width=975
Visible=1
Point(doVisible)
}
Add(MonthCalendar,157068,476,280)
{
Holidays=[]
link(onDay,13480646:doSeparateMT,[(515,286)(515,244)])
link(Year,5216656:Year,[(482,222)(615,222)])
link(Month,4806429:Position,[(489,271)(419,271)(419,313)(384,313)])
}
Add(DateConvertor,5791612,616,105)
{
Mode=8
Format="dd-MM-yyyy"
Point(Result)
}
Add(MST_RowAction,4893562,588,287)
{
MSTControl="tbl"
}
Add(MTStrTbl,12733493,119,518)
{
Width=959
Height=261
Align=5
Name="tbl"
Columns=#12:Месяц=100==1|1:1|1:2|1:3|1:4|1:5|1:6|1:7|1:8|1:9|2:10|2:11|2:12|2:13|2:14|2:15|2:16|2:17|2:18|2:19|2:20|2:21|2:22|2:23|2:24|2:25|2:26|2:27|2:28|2:29|2:30|2:31|
ColumnWidth=25
ColorItems=0
Grid=0
link(FormatCell,5058459:GetData,[])
}
Add(EventFromData,5058459,133,455)
{
link(onEvent,2269799:doSeparateMT,[])
}
Add(MT_MultiData,2269799,182,455)
{
Count=3
link(onData1,13353342:doGetIndex,[])
link(onData2,1543330:doOperation,[(242,468)(242,580)])
link(onData3,15764307:doCompare,[(235,475)(235,636)])
}
Add(IndexToChanel,15354473,406,434)
{
Count=3
link(onEvent1,12337827:doString,[(466,440)(466,475)])
link(onEvent2,10759548:doString,[(459,447)(459,531)])
link(onEvent3,16527848:doString,[(452,454)(452,587)])
}
Add(StrList,13353342,301,427)
{
Strings=#1:х|1:д|1:н|
Point(doGetIndex)
Point(onGetIndex)
link(onGetIndex,3248053:doCase,[])
}
Add(Case,3248053,350,434)
{
Value=Integer(-1)
link(onNextCase,15354473:doEvent,[])
link(onTrue,13553286:doData,[(393,447)(393,433)])
}
Add(DoData,13553286,476,427)
{
link(onEventData,16511362:doWork2,[])
}
Add(HubEx,16511362,574,427)
{
Angle=3
link(onEvent,5058459:doData,[(578,419)(123,419)(123,461)])
}
Add(StrList,2613972,476,161)
{
Strings=#1:0|6:Январь|7:Февраль|4:Март|6:Апрель|3:Май|4:Июнь|4:Июль|6:Август|8:Сентябрь|7:Октябрь|6:Ноябрь|7:Декабрь|
Point(doGetString)
Point(onGetString)
Point(String)
link(onGetString,13952122:doWork2,[])
}
Add(For,4806429,378,273)
{
Start=1
End=12
link(onEvent,15056497:doEvent1,[])
}
Add(Hub,15056497,427,273)
{
OutCount=4
link(onEvent1,2613972:doGetString,[(466,279)(466,195)])
link(onEvent2,157068:doEnumDays,[])
link(onEvent3,5688008:doAdd,[])
link(onEvent4,6023177:In,[(466,300)(466,335)])
}
Add(CharArray,5788686,196,119)
{
Point(Count)
link(onLoad,6112496:doOperation,[])
}
Add(MST_Clear,8569429,126,70)
{
MSTControl="tbl"
}
Add(CounterEx,15232918,427,112)
{
Max=2
Default=-1
Point(doMax)
Point(doValue)
link(onNext,4003013:doRead,[])
}
Add(Hub,3671584,322,119)
{
OutCount=3
link(onEvent1,15232918:doMax,[])
link(onEvent2,8745157:doData,[])
link(onEvent3,4806429:doFor,[(347,139)(347,279)])
}
Add(Math,6112496,252,119)
{
OpType=1
Op2=1
ResultType=0
link(onResult,3671584:doEvent1,[])
link(Op1,5788686:Count,[(258,110)(244,110)(244,159)(216,159)])
}
Add(DoData,8745157,371,126)
{
Data=Integer(-1)
link(onEventData,15232918:doValue,[])
}
Add(ArrayRW,4003013,476,112)
{
link(onRead,15519940:doWork2,[])
link(Array,5788686:Array,[(482,103)(314,103)(314,166)(202,166)])
}
Add(MT_Array,11905520,539,49)
{
}
Add(ArrayRW,12171128,539,105)
{
link(Array,11905520:Array,[])
}
Add(MT_AddData,5688008,539,287)
{
link(onAdd,4893562:doRowAction,[])
link(Data2,11905520:MThread,[])
}
Add(FormatStr,12337827,525,469)
{
DataCount=1
Mask="%1,%1"
link(onFString,15784921:doWork2,[])
link(Str1,11652479:Wire1,[])
}
Add(HubEx,15784921,574,469)
{
Angle=3
link(onEvent,16511362:doWork3,[])
}
Add(HubEx,3775423,574,525)
{
Angle=3
link(onEvent,15784921:doWork3,[])
}
Add(FormatStr,11008233,539,630)
{
Mask="255,16777215"
link(onFString,9603620:doWork3,[(578,636)])
}
Add(HubEx,9603620,574,581)
{
Angle=3
link(onEvent,3775423:doWork3,[])
}
Add(FormatStr,10759548,532,525)
{
DataCount=1
Mask="%1,%1"
link(onFString,3775423:doWork2,[])
link(Str1,11652479:Wire2,[])
}
Add(FormatStr,16527848,539,581)
{
DataCount=1
Mask="%1,%1"
link(onFString,9603620:doWork2,[])
link(Str1,11652479:Wire3,[])
}
Add(Hub,2791744,70,28)
{
OutCount=4
link(onEvent1,2685097:doString,[])
link(onEvent2,15103964:doData,[(116,41)(116,62)])
link(onEvent3,8569429:doClear,[(109,48)(109,76)])
link(onEvent4,3190416:doSeparateMT,[(102,55)(102,118)])
}
Add(FormatStr,2685097,126,28)
{
DataCount=1
Mask="График смен для %1 "
link(onFString,10399033:doCaption,[])
}
Add(DoData,15103964,168,56)
{
Data=Integer(1)
link(onEventData,10399033:doVisible,[])
}
Add(MT_MultiData,3190416,126,112)
{
From=1
link(onData1,398749:doEvent1,[(165,118)(165,104)(256,104)(256,48)])
link(onData2,5788686:doLoad,[])
}
Add(Time,13775933,322,525)
{
Time_Date=1
Format="dd-MM-yyyy"
Point(DateInt)
Point(DateTime)
}
Add(DateConvertor,13809890,329,574)
{
Format="dd-MM-yyyy"
Point(Data)
Point(Day)
Point(Month)
link(Data,13775933:DateInt,[])
}
Add(DateConvertor,5216656,609,42)
{
Mode=4
Format="dd-MM-yyyy"
Point(Year)
Point(Month)
Point(Day)
}
Add(CableVar,11652479,525,371)
{
Count=3
link(Cable,4922233:Data1,[(531,362)(27,362)])
}
Add(LineBreak,14962309,483,56)
{
link(Out,11905520:doClear,[])
Primary=[6023177,0,273]
}
Add(HubEx,15519940,518,112)
{
link(onEvent,12171128:doAdd,[(543,118)(543,125)])
}
Add(Hub,398749,581,42)
{
link(onEvent1,5216656:doConvert,[])
link(onEvent2,5791612:doConvert,[(606,55)(606,111)])
}
Add(MT_MultiData,13480646,532,238)
{
From=3
Count=1
link(onData1,5071766:doCompare,[])
}
Add(If_else,5071766,609,238)
{
Type=4
link(onTrue,15232918:doNext,[(648,244)(648,230)(417,230)(417,118)])
link(onFalse,1595126:doData,[])
link(Op2,5791612:Result,[])
}
Add(DoData,1595126,658,245)
{
Data=String()
link(onEventData,13952122:doWork1,[(697,251)(697,174)])
}
Add(HubEx,13952122,518,168)
{
Angle=3
link(onEvent,15519940:doWork3,[])
}
Add(If_else,1217859,399,630)
{
link(onTrue,11008233:doString,[])
link(Op1,1543330:Result,[(405,621)(293,621)])
link(Op2,13809890:Month,[(412,614)(342,614)])
}
Add(If_else,15764307,322,630)
{
link(onTrue,1217859:doCompare,[])
link(Op2,13809890:Day,[])
}
Add(Math,1543330,287,574)
{
Op2=1
link(onResult,13809890:doConvert,[])
}
END_SDK

карма: 16

1
Голосовали:Gitarist
Ответов: 125
Рейтинг: 0
#28: 2025-02-19 02:17:53 ЛС | профиль | цитата
Gunta, Спасибо большое за схему, но я уже взял за основу схему tom-it, и переделал как мне нужно. С календарём пока что всё...

----------

Подскажите пожалуйста что могло случиться: Я обновился, как выше советовали с SVN и перестала работать схема Леонида... Все квадратики зеленым закрашиваются, какие то месяца вообще не отображаются.
карма: 0

0
Ответов: 1079
Рейтинг: 77
#29: 2025-02-19 07:17:50 ЛС | профиль | цитата
Gitarist писал(а):
перестала работать схема

На то оно и обновление, чтобы помимо исправления ошибок, приносить и новый функционал.

Учимся работать с отладкой.
Для начала
При первом запуске видим что с МТ вылетает 4 составляющих, а разбиение строки имеет 3

Add(MT_String,4213052,252,287)
{
link(onResult,11790552:doEvent,[])
}
Add(MultiStrPart,3248963,315,287)
{
Count=4
link(onSplit,6744167:doCompare,[])
}
Add(If_else,6744167,378,287)
{
Op1=Integer(1)
link(onTrue,9571369:doOperation,[])
link(Op1,3248963:Part3,[(384,278)(377,278)(377,341)(335,341)])
link(Op2,12052247:Var2,[])
}
Add(GetDataEx,12052247,385,267)
{
Angle=3
link(Data,3248963:Part1,[(370,272)(370,334)(321,334)])
}
Add(Math,9571369,427,287)
{
OpType=1
Op2=2
ResultType=0
link(Op1,3248963:Part2,[(433,278)(419,278)(419,327)(328,327)])
}
Add(Debug,11790552,294,287)
{
link(onEvent,3248963:doSplit,[])
}



Редактировалось 1 раз(а), последний 2025-02-19 07:19:51
карма: 0

0
Ответов: 125
Рейтинг: 0
#30: 2025-02-19 20:27:35 ЛС | профиль | цитата
И еще не понятно куда пропал StringTableMT .... ?
карма: 0

0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)