Pichugin Organizer

Планы, идеология, архитектура и т.п.

Модератор: Модераторы

Re: Pichugin Organizer

Сообщение Sharfik » 29.02.2024 00:00:47

Тут поспамлю...

Забавный баг. Ниже код, ставит переключатель на разный уровень в зависимости от положения двух флагов. Если BufDataSet компилируется без полей, и уже в процессе делается CreateDataset, то все нормально.
Но, если поля созданы через IDE, то либо оба флага false, либо true)))

Код: Выделить всё
procedure TFModulePlanTaskItem.tbTaskRangClick(Sender: TObject);
var
  bQuickly,
  bimportant :Boolean;
begin
  bimportant:=bdsFormBuffer.FieldByName('important').AsBoolean;
  bQuickly:=bdsFormBuffer.FieldByName('quickly').AsBoolean;
  if bimportant and bQuickly then
  begin
     tbTaskRang.Position:=1;
  end
  else if bimportant and not bQuickly then
  begin
     tbTaskRang.Position:=2;
  end
  else if not bimportant and bQuickly then
  begin
     tbTaskRang.Position:=3;
  end
  else begin
     tbTaskRang.Position:=4;
  end;
end;
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Pichugin Organizer

Сообщение Sharfik » 15.11.2024 16:33:34

История из жизни программ учета рабочего времени:
Делал для самоконтроля учет времени проведенного за ПК, как часть органайзер. А тут работодатель решил что надо в другой офис переехать. И тут все двери по карточкам. Есть онлайн система учета, которая показывает во сколько пришел, во сколько ушел и сколько был на работе. Что то может пойти не так? Конечно. Ее не расчитывали на то, что уходить я буду за границей 00 часов, и она тупо не понимает сколько часов я провел на работе. Сам разумеется не помнишь, когда и во сколько пришел-ушел. Особенно если кадровик в конце месяца спрашивает. Вот тут то и аукнулась опция учета контроля работы за ПК. Хотя, имеет тот же косяк - если через удаленный рабочий стол Windows подключался в час ночи из дома, то период работы будет считать с часу ночи. Момент прихода на работу не отмониторить. Но активность на ПК мониторит четко.

PS: Может кто то знает как проконтролировать физический и удаленный доступ к ПК? Чтобы разделить мониторинг.
Изображение
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Pichugin Organizer

Сообщение Alexander » 16.11.2024 08:39:47

Прочее:
-Адаптировать под Linux времени нет, все под Win10 делалось.


Так другие бы сделали, но тут подводит лицензия. Была бы GNU GPL/AGPL, был бы код на GitHub разработчики обратили бы на неё внимание и сделали бы версию для Линукс. А пока он всё под Win.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 771
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Pichugin Organizer

Сообщение Снег Север » 16.11.2024 09:52:58

Первым делом после установки нового дистрибутива выкидываю "тормозиллу" и ставлю Оперу.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Pichugin Organizer

Сообщение Alexander » 16.11.2024 10:22:05

> выкидываю "тормозиллу" и ставлю Оперу.

У меня они сосуществуют. Но Опера закрытый браузер - его так и не освободили, так что редко ставлю, скорее для эксперимента.
Основной всё равно FF и ему нет равных в открытии сложных сайтов. Но к ресурсам прожорливый.
К лёгким относится Falkon и Min - их ставлю из исходников с максимальной оптимизацией.
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 771
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Pichugin Organizer

Сообщение Снег Север » 16.11.2024 11:42:39

Опера уже лет пять использует открытый движок хромиум, я не знаю, что там ещё можно открывать. "Лёгкие" браузеры не признаю вообще, они ничего, кроме древнего html открывать не умеют, с тормозилой вечные проблемы с назойливой рекламой и паршивыми дополнениями.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 3039
Зарегистрирован: 27.11.2007 16:14:47

Re: Pichugin Organizer

Сообщение Alex2013 » 16.11.2024 15:52:26

Напоминает мою древнюю "Незабудку" (Проект "NeZabudka") :wink:
(Главная "гордость" там была в сворачивании в трей, проигрывании мелодии "призрак в опере" и очень маленький размер около 100к )
Изображение

Но разумеется Pichugin Organizer наверняка сделан на совсем другом техническом уровне . :idea:
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

Re: Pichugin Organizer

Сообщение Alexander » 16.11.2024 16:00:27

> (Проект "NeZabudka")

Не этот ?

https://hsedesign.ru/project/de1b0bdc4a ... 68c2528aca
Аватара пользователя
Alexander
энтузиаст
 
Сообщения: 771
Зарегистрирован: 18.12.2005 19:10:00
Откуда: оттуда

Re: Pichugin Organizer

Сообщение Alex2013 » 16.11.2024 16:24:11

Alexander писал(а):> (Проект "NeZabudka")

Не этот ?

https://hsedesign.ru/project/de1b0bdc4a ... 68c2528aca

Увы мое старье гораздо проще ( собрано на Хайасме лет эдак "надцать" назад )
И вроде уже не работает в новых версиях винды ...
Изображение
Исходник ...
Код: Выделить всё
Add(Replace,10082983,442,105)
{
SubStr="|"
DestStr="\n\r"
link(onReplace,2335156:doMessage,[])
}
Add(Image,3738905,239,245)
{
Width=406
Height=401
Align=5
ViewStyle=1
Point(onMouseMove)
Point(Width)
Point(Height)
}
Add(MainForm,11837311,-16,126)
{
Left=20
Top=105
Width=412
Height=407
Visible=1
Caption="Ку-Ку"
BorderStyle=6
Icon=[ZIP7E03000078DACD51BB12C140143D26855665CC9841A9E30FF8134A7FE1F125FC83469A68A3A06086C6234321C64C34695D7777131B89A07493BB73E7EC3977EF03C8F097CB81CF023A0690075065670815285C58D3C0DF9865595F18370A820B69D0A5F86D4CB223CC48136C89BC25B36D09166118E1733C9592A4F1D3B62697CF7EEDE405127ED14D481C82A9C9ADF5BE3F5FB6367B8130EED04BD9FC7331E3805F3F7983C58A47C4A740C66117D14622F94B323F93DB2AFFE435FF738C335D7FC9F5EBC78FF5C7E6A36C24911DA5AE6C2BA764CA5E4C99396DFED1FD3A927620BDEBB49525E53F5A0A9FBAC0BDA1FC5A645A56F9C150DE838EC33BC1133AE10F414BBEF1]
Point(doIcon)
Point(doVisible)
Point(Close)
link(onCreate,5585215:doEvent1,[(28,167)(28,216)(-18,216)(-18,237)])
link(Close,7568038:GetData,[(-10,114)(-21,114)])
}
Add(Label,444649,-16,21)
{
Left=38
Top=2
Width=71
Height=20
Color=12639424
Font=[MS Sans Serif,10,3,0,1]
Caption="События "
}
Add(Button,3554153,68,21)
{
Left=13
Top=362
Width=90
Height=30
Caption="Добавить  "
link(onClick,13724478:doWork2,[(112,27)(112,116)])
}
Add(Case,14199271,110,133)
{
Value=Integer(45)
link(onNextCase,10456901:doCase,[])
link(onTrue,13724478:doWork3,[(155,146)])
}
Add(ChildFormEx,11420339,194,98)
{
link(onOut,8338209:doAdd,[(238,104)(238,90)(6,90)(6,125)])
link(onRem,9383398:doAdd,[(275,111)(275,41)])
}
BEGIN_SDK
  Add(EditMultiEx,9544413,6,6)
  {
   WorkCount=#5:doRun|
   EventCount=#5:onOut|5:onRem|
   Width=513
   Height=305
   link(doRun,16338818:doEvent1,[(81,12)(81,27)])
  }
  Add(MainForm,9020667,185,21)
  {
   Left=35
   Top=105
   Width=365
   Height=269
   Color=15793151
   Visible=1
   Caption="Добавить собітие"
   Point(doVisible)
  }
  Add(Label,9788168,248,28)
  {
   Left=5
   Top=5
   Width=85
   Height=17
   Transparent=0
   Caption="Что отмечаем ?"
  }
  Add(Edit,13256641,297,28)
  {
   Left=5
   Top=25
   Width=340
   Text="Именины сердца"
   Point(doSelectAll)
  }
  Add(Label,9231693,10,42)
  {
   Left=10
   Top=45
   Width=86
   Height=17
   Transparent=0
   Caption="Время события "
  }
  Add(ComboBox,3685160,157,84)
  {
   Left=10
   Top=60
   Height=21
   Font=[MS Sans Serif,14,0,0,1]
   Strings=#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|
   AddType=1
   Text="12"
   Point(doEditText)
   Point(EditText)
  }
  Add(ComboBox,11481588,199,84)
  {
   Left=70
   Top=60
   Height=21
   Font=[MS Sans Serif,14,0,0,1]
   Strings=#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|2:32|2:33|2:34|2:35|2:36|2:37|2:38|2:39|2:40|2:41|2:42|2:43|2:44|2:45|2:46|2:47|2:48|2:49|2:50|2:60|
   Text="33"
   Point(doEditText)
   Point(EditText)
  }
  Add(Memo,1111336,185,147)
  {
   Left=10
   Top=115
   Width=330
   Color=12639424
  }
  Add(Label,4410157,101,182)
  {
   Left=10
   Top=95
   Width=62
   Height=17
   Transparent=0
   Caption="Незабудка "
  }
  Add(Button,15247193,136,217)
  {
   Left=10
   Top=210
   Width=125
   Height=25
   Caption="Занести в протокол "
   link(onClick,637918:doEvent1,[])
  }
  Add(Button,14035611,136,259)
  {
   Left=150
   Top=210
   Width=170
   Height=25
   Caption="Передумал !"
   link(onClick,10624343:doWork3,[(329,265)])
  }
  Add(Hub,637918,185,217)
  {
   OutCount=3
   link(onEvent1,10624343:doWork2,[(230,223)(230,167)])
   link(onEvent2,12799758:doString,[(257,230)(257,127)])
   link(onEvent3,10082983:doReplace,[])
  }
  Add(Replace,10082983,266,231)
  {
   SubStr="\n\r"
   DestStr="|"
   link(onReplace,9544413:onRem,[(468,237)(468,19)])
   link(Str,1111336:Text,[(272,201)(191,201)])
  }
  Add(DoData,13048780,98,133)
  {
   link(onEventData,11481588:doEditText,[(185,139)(185,118)])
   link(Data,6887168:Minute,[(104,79)(73,79)])
  }
  Add(FormatStr,12799758,353,121)
  {
   DataCount=3
   Mask="Отметить %1 в (%2:%3)"
   link(onFString,9544413:onOut,[(410,127)(410,12)])
   link(Str1,13256641:Text,[(359,82)(303,82)])
   link(Str2,3685160:EditText,[(366,86)(271,86)(271,148)(184,148)])
   link(Str3,11481588:EditText,[(373,100)(300,100)(300,176)(219,176)])
  }
  Add(Hub,16338818,101,21)
  {
   OutCount=5
   link(onEvent1,9020667:doVisible,[(159,27)(159,55)])
   link(onEvent2,13256641:doSelectAll,[(215,34)(215,48)])
   link(onEvent3,1111336:doClear,[(159,41)(159,160)])
   link(onEvent4,5926105:doData,[(145,48)(145,83)(9,83)(9,167)])
   link(onEvent5,13048780:doData,[(145,55)(145,83)(86,83)(86,139)])
  }
  Add(Time,6887168,53,21)
  {
   Point(Minute)
   Point(Hours)
  }
  Add(DoData,5926105,42,161)
  {
   link(onEventData,3685160:doEditText,[(144,167)(144,118)])
   link(Data,6887168:Hours,[(48,102)(60,102)])
  }
  Add(HubEx,10624343,325,161)
  {
   Angle=3
   link(onEvent,9020667:doClose,[(329,105)(173,105)(173,48)])
  }
END_SDK
Add(HubEx,13724478,151,110)
{
Angle=3
link(onEvent,11420339:doRun,[(155,104)])
}
Add(Jpeg,16048804,183,245)
{
Jpeg=[ZIP4B14000078DAD597795C13E7D6C7877D9322FB657F515984CB2224C45A2455CA26442E8B5845E182882641295A1550982E081544102A6854A20403A120228AD22A298B222A220604141B016513D921242633F7992488D6DEF7F36EFFBCC3877C9E79E659CEF79CDF39F30CDA85BE84966EF0F4F184646464202FF007A1CF21774849415151514109FC282B2BA9A8692D51535555D35FAAA9AE65A46F6C6CA86F6860626EB3C2C4CCFA3F0C0C2D9C2CACFF6EE7E0E860B21CB71A674FB0B177B0C71691515656565355D35BB244CFDED4D0D4FEBF7DA1BF439ACA509B8C929CCC32485653464E53066D84CC20484641467C41D24B46564E5E4151495945550D0CB8BE149295919393959753509097074F93C073485E5341CB7CD53A45ED8008A565713A4EDF9FBCA8BC7C7D659D6E60DBC40AE7C87D3FA8A8EAE9FF0DD0585A59AFB4C1E15D08AB3F5FE3FE9587A797B7CF86A0E04D219BBFDEB27547D4CEE85DBBC994FDDF1E3878283E21F1C794A3A9693F1D4BCFC9FDF9545EFEE933B44246D125667109ABF46AD5B5EBD5376ED6FC5ADFD078E76ED3BDE6FB4F38ED1D4F3BBBBA9FF5F6F5BF7A3D3038343C3239353D333BC79BE70B302E19484E66E1FA4B2E4DC0252B2F2F27AF8471C9C81EC20668CA2B98AF52D45A17A01411A7BDCCE97B659DF5272F56D6A92C770E9CD08DDCD7A6AAB702D76B3189A189C9FE6B603FFC8FC8DE832D723D8396C8C980E0C969424488B7C76D17552DF0D19DE3DE3E5639DFD8789E126D6591CB91A3BB50685B2E5FB572F9918ED4C1B563EAB62894506A49F31F670F90FF463B5AE5536868CA6916F1842D5F711EA0D05AB369DCDD17012E23A93F511F9EBC6C81420539C9D185D463F06019FD4CC969BC675DE9D669F3A6873FF760A3A3842D9E9D8128D4BA85E8FC0F474AE68F89EDABF9D9FD035F5359ECC13236AFADA4A5873BFD2CFCDD5047B47A802325DFCC69DB91079E63B1FCB70EA219722A688C830685A158D24528F7CD3AF399E9CE86048290978F08F006B7E8C861B04B9261D1FD0E234556DCB479C3C35BB15628443F068F33FC08B960E34636AFBB54612BC3E68FEBF66E51AB13689673307F3E1F79876B384C140AB1E9B4969DC0B2E09BFC9CDE018A51370A0D0E84BF1BE5A8CFA0D0F4B483688EFAF7D4927B9869C6AE2D3B920842910F36895C7B16492E42A1DA961DD9EDF586C5F90FF3CD9CA3B824142206C2DC685A2C13D8C1228E577D9D4228774C05D659DCE1114833EC699E954888E324390845CD2804ABFF339B9C6288AD1EBEFF02610A98FC1C85B80DA4C5E6B6C916C78153B79AC93C076A9879DE23A28DD119C383C6470655D7529F0A354ABEFA43EB092D21634384428671CE3EEAE0F65DC41814FA2E7D96AD32666AC8D9E8BF4A63807AC3619E7B71E835DC987F71A47243CEE5579FEB84EC4A43A1FE27E9B359DFDCE79C156971909AE229DDC810FEC88973DCA16AFA6C0B319BF53AF65CA7D32EE32D2BF7DA5852D6F704FBB5BBA8A7B70454053A07FB75D8E574957518E197E3BF6A09ECC6BA9D4177CCA7DD7945D125DDA546E6955B4A5D289E94CC4CDFA8EA95944CDA491A239A15937A073C6519943A51422D2A7DB0262BA5BDDA3D32179BC7D40EECB6FB1E57DF9ED21EF5040CB53C4D32C7D5538CCCAF485BA116556A5B88C3F409CDB0DBBD4128A4539B0F24ED358DEF7F06DCEB2776040AA99ACD5F9A610BFA88672E8FB2FB93D318A750482B2CED62FC6164AD75D1044F9818105639668C147087E6E8635653BAAE2DD33446F18D313B628FFF2B9B84B3BCD49B7DAD6E4B4EDFD035C2E3B01FF54C406389D1D02E5D0DD5A515468B2143259054BCE7D64B578D7401A0A4DB42CA7EFCBA6F948B2DDEB3C51B3831B8DA37320F00AB614ECB963ACD9196D71C134871A1AC6F0774E6C023CD4580154C5B8937C0A570545831790B6E903CBE403B8ECD697CAA210817CA6FBE121F8478EC71406EA25050D8E7BFD067D8F3CA1591137461FAB370511CC2FC6D6A3C53605AB049E835946895060305F87F06375DD27D53307CFF6BC2D81EF80520263FE7A5B2BA0863E5E06E386823F736BE4E2F21FB70AE5E1F239A9987FD743D5FA433FFD0173AD7A5742EEE9155C131EDC7010B302FE4A380773DD1C6F8C1882095224BB04EB75D3AC99324DFBE135BCD3738EA31B8C36482AB27AB9434972C861E130953DB9B04FC740FF8C969B7D839D591234D225B44D6B64B088AD2B26A4C046C56856187BF6033F0C9D5782FE01367A4060E0A3BB17D92EDDE711FFE49A4E13931284C68F34A23F63F4A9FD388EF8B097D552D70986115C7FE412B8EE4DADD68A30047306F75AD6D5D76B6471A7C9DBB94432B25C07823FC9FC289011F059106B68580602F078F243950F50F900758E8A2B17832ECC4BD7E96D992D8059253804372B14E00B69E0C12C03732177B1C8107CA2802E2D7F6B3048AD2A145000DF880857E072D499F13DE1D017A96D11DAD5D8A42274381E82F87B7771EA7EC1259018F741F31C33C7246E2117F3B500846779A3526A715CDC722AE4345135CE083B0BAF10238AA2734498F799E9D48293F1B170B5664D91B01FA92B5AD5A18BD4E7DFB8B1E2055529E54AA628D7F12EE0E033CA800451C032CA7C92E5822E77AB7609686EAD08E5F37A78891B4A5703918DC63009D7A2F466531AE983FA4532224A2970AE00910C0154B9AA4655E650BDE2E597420F0E8894340E0BB44FB10E6ADF000E2B0192808AD2FB97CDD6BAD82D72252624DEC5D9146AC35801F0E330273D6584BB89BC70BF644C3FD5C442E701B613C33E49A6B9D14FCEEADF8B5AD8A677BCE1E0261B71CB371EA20FDDC55461167F1428E7A5276600A90163389BD3B30CF7C94AFC07486E50F14A73F697721E67692981781A2F74F124E1AFDF72D774C073F7CDCF28D3EC017A1D04BDB6EA11116DBB392D8EAD5A250F8BCEA5C96227CAF1CBC7F3A8923D4CE076E5643876B8880DE6FA21310FBF456CC4F17DECE1DD2B097B016F700EE7594E4DDC497B837A9A2C90A2D8DFD83E4DBCD1971A0CCEF05A95E1A538DA9F6024D5AEA1876DE24CFADB900509C9C0FB034CEC3B01633162BDBEAA06CEF06E0173F0D62FD279E78FC714B9A11244CDEB264EBC2A2DC353C11FCD2F699AB3EE0ADC578518855A17F5B0AAC8042F72AA4C4CF1EB8399C9C31C0887DC5C45EA96C2CBFFD2FB8D2BA848F451E6B5E2233ED2E4D0369232BF762FAB65EDB4A63F22C5EDC71BC4E38A4532FD137163A0349657392F060AF21291956AAFE7D2D7291E7A85C906A9BA3B250BCC593FF2ADA45E25CF7F1D05D715427E04B834EF61B1094B0B6976CBEEE0C57302822C5DF1E17A0D0EF9BAFC53B201E4904A4062BEC4FB74C1EC9BAD08C108612C3C57CAE781432FD76F3D52499FEB9C1C18C116B90C7E46CB3028712E6233891FAFB8F3DFCC4D87DEB7B827C98637DA749413BC12BF87D36BE2F30588AD2FE143EA3F7E1FBE8C5C3D45E2776C162364A5A52B7E47A932C00B74E8087B902E052F83F625B4A2F208A89C8E6445738C0EF1C32D3F9A86EECC825428DB96B30A0B8E348633EF8AB82EAFEBEA0E660D54792528B09F761B9E5F82C464DFA7E59897B42562964BEEAB12E4C5FAF6A5DF8DDC2BF7305DC89C8DE66D4C153B6C3ECD956016DF230171C39BEABD83D112E4C17C48AF623CCDB65557D7CB375B9C2D8C7336C75B8E9BC4E3C15D4DE8A28815C6321714D9287D72A512FD3274EF7EAB1E86F7E526E2E1B3E707EF53D6FE08D2623A1ED406F3BDFE6503BC72A3D027FEE40F91748323C79171C6A229E7E3BCEE78BC7D89CBF4FA6ADE0A894F5970D73A72751E804613EE8B3AA62B8B50959CDEDDDF0308FBEE34B405770E03C984E944EC78DF3E725D363DE69F5DBDF0521A7BABE31848542B83F13D16928238333B064B1E0A90795F64EA3BB81E74A4C76F883C36D96308E5D7FFA40127161BD822D072DEE6ECF78C5F12955DA7C65710455833F2E5E23302E3FD2D8AA3BBF99A91DBCF19708F0818042E299E48E1878908D191AD8EBD6F8EBFED1078D1C9552AB4D95E0FB0285E6DFC047712379C4692E0A99107B839ADD1EE66F2C9E62DFBC457261C1E46EB815167E8B4247CD9E1D5C18E3DBDD5A65D51D8C6CE6E9EF2E0D5FECF79A3B9F25E40164FFF9C0B9FDA30DFFF99080D1C1EEB4AB2C61C5987D5B30FBDA2866E31AB83EEBED17666222FA0403ECA3B133881FDEB3BD1098D205CEEC9FD8E255458F36BD8FD9FB9B4720C291320D036CE2E292BBDC1EAE3DE5FF1A8E33F98B7CB0C03712B4F28EF2A0551CDDB7B56AE01D1F0EBE332EC3ED9D9579CC22CEE8E19AF5943D6E4D97E6314D311AC227073D0E2BD5268430268A1B3B73F4F6F8FA6956BCD83E15074CEE748E9B68DD9A1EE2597B6545A233703F7E8635BC457BA8AD6565F60DCB9A3CAD9C6EE30C398FDD27A77BE7F794C1ADB36922F01D2424E184F8A7F0A0A00111C08865EDF7485DC6BB197A97269C4CEF20CF69B002478F08920DDF10A74520AA494414D22611D5F1743E0264504B47A163151789579621222BE1F24938397F61CE4CB2C18773BC930DA8E18BB7E1EE703D519F37844229C90EE36DB35B23666DB6679D6F6D30A122701971BC1885FAC81A1FDE5187B2E6BD0A1191D944968748006F629A055EEAE23F4774536F80EFB267F0028BE353F095F7CE7FC1B64214EA35C580B06928F434AB9423360F8B113B1408F92D51CC9D8BE8267FB85092010A298F8673198866179B2D58B0F01CBB77F31BFAB40858C405A7A8C62770FDE54EA2643F2EB61F83DD6B92F10E85CA813B2AE1D60D6EBFF8C1414547FAC17637B649B67B07B6CB9ADFF4EBA010854012F29E8B4375483CDEBFBD4DBCEF3467169714723A69E3C9E92CA1CD8BFD087C0D85DEBD05E2A2117B433EB4A0B38D3B71E20EC8376290D7C21298B16BBC1E11277E39D0CA473828340ED0FA7603ED865E865BE7806392D85810BCE0FA2FF485332292D9FB253AC869EDC366AB51A8BEFC432E06A2BBB746E29E39B17B4CDE9BF97E0D1092FF7FA49F374D348465FE683747A7F3C4010C98101DFF756F2679C717CB7D55F744A69CB2B262527F033A3DE8C01F16009B4C3290C464E6659D08A5F87C7F0DD57D03275EFD61889D3A6D107A74755C0265BF07656F6861BA35F4BFFC9743BBFF05CC143651]
Point(doBitmap)
link(onBitmap,3738905:doLoad,[])
}
Add(ListBox,8338209,68,119)
{
Left=34
Top=24
Width=325
Height=335
Font=[MS Sans Serif,12,0,0,1]
FileName="recall.sav"
Point(Index)
Point(onDblClick)
Point(String)
Point(onKeyDown)
Point(doLoad)
Point(doSave)
link(onDblClick,7213786:doEvent1,[(152,146)(152,328)])
link(onKeyDown,14199271:doCase,[(108,146)(108,139)])
}
Add(TrayIcon,11272193,50,189)
{
Hint="Незабудка"
link(onClick,11272193:doShow,[(94,195)(94,183)(38,183)(38,195)])
link(onDblClick,2092984:doWork3,[(94,202)(94,198)(-30,198)])
}
Add(Hub,5585215,-6,231)
{
OutCount=4
link(onEvent1,16048804:doBitmap,[(104,237)(104,265)])
link(onEvent2,1704406:doWork3,[(33,244)])
link(onEvent3,8338209:doLoad,[(44,251)(44,153)])
link(onEvent4,9383398:doLoad,[(171,258)(171,69)])
}
Add(Button,14759130,99,280)
{
Left=333
Top=367
Width=65
Height=30
Caption="Спрятать "
link(onClick,1704406:doWork1,[(143,286)(143,216)])
}
Add(HubEx,1704406,29,210)
{
Angle=3
link(onEvent,11272193:doHide,[(33,202)])
}
Add(Button,8325708,197,21)
{
Left=373
Top=7
Width=25
Caption="X"
link(onClick,2092984:doWork1,[(255,27)(255,188)])
}
Add(HubEx,2092984,-34,182)
{
Angle=3
link(onEvent,8384395:doEvent1,[(-30,171)(-11,171)(-11,314)])
}
Add(ArrayRW,3580460,302,189)
{
link(onRead,12799758:doString,[(354,195)(354,111)])
link(Array,1535281:Var2,[])
link(Index,8338209:Index,[(315,173)(95,173)])
}
Add(Message,2335156,505,105)
{
Caption="Сообщение\n\r"
}
Add(EventFromData,7568038,-27,70)
{
link(onEvent,8460556:doWork2,[])
}
Add(Hub,7903333,22,70)
{
link(onEvent1,9383398:doSave,[])
link(onEvent2,8338209:doSave,[(61,83)(61,160)])
}
Add(Hub,8384395,8,308)
{
link(onEvent1,8460556:doWork3,[(52,314)(52,198)(12,198)])
link(onEvent2,11837311:doClose,[(52,321)(52,237)(-28,237)(-28,153)])
}
Add(HubEx,8460556,8,70)
{
link(onEvent,7903333:doEvent1,[])
}
Add(PointHint,10223204,-13,343)
{
Info=#19:Прект "напоминалка"|5:Блоки|0:|33:1)  Управляемый список событий  +|17:2)  Окно ввода  +|34:3)  При запуске  свернуть в трей +|16:4)  Сохранение +|15:5)  Загрузка  +|13:6)  Таймер  +|24:7)  Реакция на события +|31:8)  Музыкальное сопровождение +|30:(Пока что только одна мелодия)|17:9)  Синтез речи.-|25:(Убрал за ненадобностью )|0:|0:|
Frame=1
VAlign=0
HAlign=0
Width=204
Height=193
}
Add(Button,7157313,148,280)
{
Left=111
Top=362
Width=85
Height=30
Caption="Удалить"
link(onClick,5812489:doWork3,[(194,286)])
}
Add(Case,10456901,159,133)
{
Value=Integer(46)
link(onNextCase,13245220:doCase,[])
link(onTrue,5812489:doWork1,[(259,146)(259,237)])
}
Add(HubEx,5812489,190,231)
{
Angle=3
link(onEvent,4081356:doEvent1,[(194,202)])
}
Add(FormatStr,12799758,375,105)
{
DataCount=3
Mask="Не забудь ! | %1 | в (%2:%3)"
link(onFString,10082983:doReplace,[])
link(Str2,8680261:Value,[(388,93)(428,93)(428,275)(465,275)])
link(Str3,8680261:Value1,[(395,86)(437,86)(437,265)(472,265)])
}
Add(Hub,7213786,197,322)
{
link(onEvent1,8680261:doSplit,[(291,328)(291,227)])
link(onEvent2,3580460:doRead,[(265,335)(265,195)])
}
Add(MultiElementEx,8680261,459,221)
{
@IsLib=True
link(Str,8338209:String,[(465,182)(102,182)])
}
BEGIN_SDK
  Add(EditMultiEx,353655,6,6)
  {
   WorkCount=#7:doSplit|
   VarCount=#5:Value|6:Value1|
   DataCount=#3:Str|
   link(doSplit,10242554:doSplit,[(14,12)(14,153)])
   link(Value,11024060:Value,[(12,130)(153,130)])
   link(Value1,15036720:Value,[(19,130)(209,130)])
  }
  Add(StrPart,10242554,21,147)
  {
   Char="("
   link(onSplit,12453122:doSplit,[(72,153)(72,160)])
   link(Str,353655:Str,[(27,77)(12,77)])
  }
  Add(StrPart,12453122,91,154)
  {
   Char=":"
   link(onSplit,16482588:doSplit,[])
   link(onPart,11024060:doValue,[(135,167)(135,27)])
  }
  Add(StrPart,16482588,175,154)
  {
   Char=")"
   link(onPart,15036720:doValue,[(219,167)(219,97)(191,97)(191,27)])
  }
  Add(Memory,11024060,147,21)
  {
  }
  Add(Memory,15036720,203,21)
  {
  }
END_SDK
Add(Timer,1405071,414,329)
{
link(onTimer,5113981:doEvent1,[])
}
Add(LED,7998547,323,273)
{
Left=5
Top=5
Width=20
Height=20
Color=12639424
Hint="Таймер "
ColorOff=32768
Value=0
Point(onMouseDown)
link(onMouseDown,3061198:doEvent1,[])
}
Add(Hub,3061198,379,280)
{
link(onEvent1,7998547:doChangeValue,[(412,286)(412,258)(311,258)(311,279)])
link(onEvent2,5680743:doCompare,[(423,293)(423,321)(308,321)(308,342)])
}
Add(If_else,5680743,323,336)
{
Type=5
Op2=Integer(0)
link(onTrue,1405071:doTimer,[(392,342)(392,335)])
link(onFalse,1405071:doStop,[(392,349)(392,342)])
link(Op1,7998547:Value,[])
}
Add(Case,13245220,215,133)
{
Value=Integer(13)
}
Add(LED,2181277,519,329)
{
Left=20
Top=20
Width=15
Height=15
Color=12639424
ColorOn=16711680
ColorOff=65535
}
Add(MultiElementEx,6227174,560,336)
{
link(onEventData,1938677:doWork1,[])
link(onRead,1938677:doWork2,[])
link(Array,8338209:Array,[(558,270)(88,270)])
link(Array1,1535281:Var3,[(573,135)])
}
BEGIN_SDK
  Add(EditMultiEx,12795511,6,6)
  {
   WorkCount=#6:doEnum|
   EventCount=#11:onEventData|6:onRead|
   DataCount=#5:Array|6:Array1|
   Width=538
   Height=214
   link(doEnum,15489604:doEnum,[(14,12)(14,48)])
  }
  Add(ArrayEnum,15489604,21,42)
  {
   link(onItem,8463266:doEvent1,[])
   link(Array,12795511:Array,[(27,24)(12,24)])
  }
  Add(Time,6887168,207,21)
  {
   Point(Hours)
   Point(Minute)
  }
  Add(MultiElementEx,5070872,149,21)
  {
   elink(8680261)
  }
  Add(Hub,8463266,89,42)
  {
   OutCount=3
   link(onEvent1,5070872:doSplit,[(138,48)(138,27)])
   link(onEvent2,879007:doValue,[])
   link(onEvent3,10574460:doConvert,[(133,62)(133,94)(63,94)(63,125)])
  }
  Add(If_else,1666100,193,119)
  {
   link(onTrue,3386264:doConvert,[])
   link(Op2,6887168:Hours,[(206,65)(220,65)])
  }
  Add(If_else,11030053,305,119)
  {
   link(onTrue,8349547:doEvent1,[])
   link(Op2,6887168:Minute,[(318,69)(227,69)])
  }
  Add(Convertor,3386264,250,119)
  {
   Mode=1
   link(onResult,11030053:doCompare,[])
   link(Data,5070872:Value1,[(256,86)(162,86)])
  }
  Add(Convertor,10574460,75,119)
  {
   Mode=1
   link(onResult,1666100:doCompare,[])
   link(Data,5070872:Value,[(81,72)(155,72)])
  }
  Add(ArrayRW,8196867,446,147)
  {
   link(onRead,12795511:onRead,[(483,153)(483,19)])
   link(Array,12795511:Array1,[(452,27)(19,27)])
   link(Index,15489604:Index,[(459,111)(34,111)])
  }
  Add(DoData,15397901,404,70)
  {
   link(onEventData,12795511:onEventData,[(466,76)(466,12)])
   link(Data,879007:Value,[(410,58)(344,58)(344,93)(277,93)])
  }
  Add(Memory,879007,271,49)
  {
  }
  Add(Hub,8349547,355,119)
  {
   link(onEvent1,15397901:doData,[(395,125)(395,76)])
   link(onEvent2,8196867:doRead,[(417,132)(417,153)])
  }
END_SDK
Add(Hub,5113981,463,329)
{
link(onEvent1,2181277:doChangeValue,[])
link(onEvent2,6227174:doEnum,[])
}
Add(GetDataEx,1535281,302,130)
{
link(Data,9383398:Array,[])
}
Add(ChildForm,1938677,620,336)
{
}
BEGIN_SDK
  Add(EditMulti,190622,6,6)
  {
   WorkCount=2
   Width=377
   Height=277
   link(doWork1,6819658:doEvent1,[(38,12)(38,69)])
   link(doWork2,12021715:doData,[(42,19)(42,225)])
  }
  Add(MainForm,10655025,217,147)
  {
   Left=35
   Top=105
   Width=600
   Height=221
   Color=12639424
   Visible=1
   Caption="Вам привет !"
   BorderStyle=4
   Point(doVisible)
   Point(onClose)
   Point(Close)
   Point(doFlashWindow)
   Point(Handle)
   link(Close,11685192:GetData,[])
  }
  Add(LED,6899770,126,63)
  {
   Left=15
   Top=10
  }
  Add(Label,466650,126,112)
  {
   Left=45
   Top=10
   Width=89
   Height=24
   Color=8388608
   Font=[MS Sans Serif,12,1,65535,1]
   Caption="Внимание"
  }
  Add(Hub,6819658,70,63)
  {
   OutCount=4
   link(onEvent1,6899770:doChangeValue,[])
   link(onEvent2,466650:doText,[(118,76)(118,118)])
   link(onEvent3,13820471:doData,[(114,83)(114,132)(72,132)(72,174)])
  }
  Add(Button,970270,126,21)
  {
   Left=450
   Top=10
   Width=120
   Height=30
   Caption="Привет получен"
   link(onClick,6311629:doEvent1,[(184,27)(184,41)])
  }
  Add(ChangeMon,13820471,84,168)
  {
   link(onData,5647614:doEvent1,[])
  }
  Add(RichEdit,9589450,224,206)
  {
   Left=5
   Top=65
   Width=565
   Height=110
   Color=15793151
  }
  Add(ChangeMon,12021715,77,219)
  {
   link(onData,10082983:doReplace,[(112,225)(112,226)])
  }
  Add(Replace,10082983,149,220)
  {
   SubStr="|"
   DestStr="\n\r"
   link(onReplace,9589450:doText,[])
  }
  Add(MediaPlayer,12680512,329,84)
  {
   Filename="class.mid"
  }
  Add(Hub,6311629,203,35)
  {
   link(onEvent1,12680512:doStop,[(282,41)(282,97)])
   link(onEvent2,10655025:doClose,[(247,48)(247,108)(205,108)(205,174)])
  }
  Add(EventFromData,11685192,217,98)
  {
  }
  Add(Hub,5647614,140,168)
  {
   OutCount=3
   link(onEvent1,12680512:doPlay,[(250,174)(250,90)])
   link(onEvent2,10655025:doVisible,[])
   link(onEvent3,3916519:doPopup,[(188,188)(188,265)])
  }
  Add(WinTools,3916519,203,252)
  {
   link(Handle,10655025:Handle,[(209,236)(223,236)])
  }
END_SDK
Add(StrList,9383398,288,35)
{
FileName="recall.inf"
Point(doLoad)
Point(doSave)
}
Add(Hub,4081356,204,196)
{
link(onEvent1,8338209:doDelete,[(248,202)(248,170)(56,170)(56,139)])
link(onEvent2,9383398:doDelete,[(262,209)(262,55)])
}

Зы
Дежаву, однако !
(Похоже что тему почистили )
Последний раз редактировалось Alex2013 16.11.2024 16:55:50, всего редактировалось 2 раз(а).
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

Re: Pichugin Organizer

Сообщение delphius » 16.11.2024 16:34:04

Sharfik писал(а):PS: Может кто то знает как проконтролировать физический и удаленный доступ к ПК? Чтобы разделить мониторинг.


два способа:

Код: Выделить всё
program check;

{$APPTYPE CONSOLE}

uses
  Windows, JwaWtsApi32, JwaWinBase, SysUtils;

function IsUserRemote: Boolean;
var
  SessionInfo: PWTS_SESSION_INFOA;
  SessionCount: DWORD;
  I: Integer;
  ActiveConsoleSessionId: DWORD;
begin
  Result := False;
  ActiveConsoleSessionId := WTSGetActiveConsoleSessionId;

  // Получаем список сеансов
  if WTSEnumerateSessions(WTS_CURRENT_SERVER_HANDLE, 0, 1, SessionInfo, SessionCount) then
  begin
    for I := 0 to SessionCount - 1 do
    begin
      // Проверяем состояние каждого сеанса
      if (SessionInfo[I].State = WTSActive) and (SessionInfo[I].SessionID <> ActiveConsoleSessionId) then
      begin
        Result := True;
        Break;
      end;
    end;
    WTSFreeMemory(SessionInfo);
  end
  else
  begin
    WriteLn('Error enumerating sessions: ', SysErrorMessage(GetLastError));
  end;
end;

function IsPhysicalConsole: Boolean;
var
  Buffer: Pointer;
  BytesReturned: LongWord;
  ProtocolType: Integer;
begin
  Result := False;
  //https://learn.microsoft.com/ru-ru/windows/win32/api/wtsapi32/nf-wtsapi32-wtsquerysessioninformationa
  if WTSQuerySessionInformation(WTS_CURRENT_SERVER_HANDLE, WTS_CURRENT_SESSION,
                                WTSClientProtocolType, Buffer, BytesReturned) then
  begin
    ProtocolType := PInteger(Buffer)^;
    WTSFreeMemory(Buffer);
    Result := (ProtocolType = 0);
  end
  else
  begin
    WriteLn('Error querying session protocol type: ', SysErrorMessage(GetLastError));
  end;
end;

begin
  try
    if IsPhysicalConsole then
      WriteLn('The application is running on a physical console.')
    else
      WriteLn('The application is running in a remote session.');
  except
    on E: Exception do
      WriteLn('Error: ', E.Message);
  end;

  if IsUserRemote then
    WriteLn('The application is running in a remote session.')
  else
    WriteLn('The application is running on a physical console.');

  WriteLn('Press Enter to exit...');
  ReadLn;
end.

Последний раз редактировалось delphius 16.11.2024 23:23:19, всего редактировалось 1 раз.
delphius
постоялец
 
Сообщения: 129
Зарегистрирован: 18.03.2020 13:40:11

Re: Pichugin Organizer

Сообщение Alex2013 » 16.11.2024 16:53:49

delphius писал(а):Может кто то знает как проконтролировать физический и удаленный доступ к ПК? Чтобы разделить мониторинг.

Хм ! А вот это интересно....
Alex2013
долгожитель
 
Сообщения: 3049
Зарегистрирован: 03.04.2013 11:59:44

Re: Pichugin Organizer

Сообщение Sharfik » 16.11.2024 18:53:29

Снег Север писал(а):Первым делом после установки нового дистрибутива выкидываю "тормозиллу" и ставлю Оперу.

Какое отношение это имеет к теме?
Alex2013 писал(а):Напоминает мою древнюю "Незабудку" (Проект "NeZabudka")
(Главная "гордость" там была в сворачивании в трей, проигрывании мелодии "призрак в опере" и очень маленький размер около 100к )

Все напоминался по своей сути одинаковые. Эту отличает то, что она сделана на лучшей из платформ разработки - freepascal. Ну, может еще когда ни будь сетевая версия будет)
delphius писал(а): delphius

Спасибо! Попробую разделить)

Alexander писал(а):Так другие бы сделали, но тут подводит лицензия. Была бы GNU GPL/AGPL, был бы код на GitHub разработчики обратили бы на неё внимание и сделали бы версию для Линукс. А пока он всё под Win.

А почему GitHub, а не три-четыре других хранилища существующих? Или тот же GitVerse?
А что сложного куллпрограммерам скачать с облака исходники или написать на почту вопрос, руки отваляться?
А почему русскоговорящие пользователи должны себе мозги выносить пытаясь понять смысл формулировок GNU GPL/AGP написанных в пьяном маразме? Перевода официального нет, и двойное трактование формулировок это не лучший подарок. Я читал вольные переводы - это бред. Я под те термины что угодно подпихнуть могу.
Я вообще начинаю приходить к мнению что в лицензии на бесплатные программы должен быть прописан запрет на разветвление. Развиваться должна одна программа, а не тысяча копий, если это бесплатное ПО.
Alexander писал(а): А пока он всё под Win.

С каких пор это проблема для Linux пользователя? Wine прекрасно запускает программу. Под Linux в чистую, там половину функций тупо выкинуть придется. Вот когда разработчики Linux дистрибутивов начнут делать оболочки продуманные для людей, тогда и подумаем. А пока Windows 10 лучше всех.
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Pichugin Organizer

Сообщение xchgeaxeax » 16.11.2024 19:16:38

Sharfik писал(а):Вот когда разработчики Linux дистрибутивов начнут делать оболочки продуманные для людей

Они и сейчас оболочки не делают. Разработчики Линукс даже графику не делают. Разработчики Линукс делают Линукс. Графику делают разработчики X'ов или Wayland, А оболочки делают разработчики ВМ. Все вопросы про оболочки к разработчикам ВМ
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

Re: Pichugin Organizer

Сообщение Sharfik » 16.11.2024 19:22:32

xchgeaxeax писал(а):Они и сейчас оболочки не делают. Разработчики Линукс даже графику не делают. Разработчики Линукс делают Линукс. Графику делают разработчики X'ов или Wayland, А оболочки делают разработчики ВМ. Все вопросы про оболочки к разработчикам ВМ

Не надо докапываться до слов. Разговор про конечный дистрибутив. Я видел только один приличный ASP Linux очень, очень давно. А когда последний раз ставил другой, и начал настраивать под задачу пользователя понял что это вырви глаз. Я про KDE. Про Gnome вообще молчу...
Аватара пользователя
Sharfik
энтузиаст
 
Сообщения: 791
Зарегистрирован: 20.07.2013 01:04:30

Re: Pichugin Organizer

Сообщение xchgeaxeax » 16.11.2024 19:33:26

Sharfik писал(а):Разговор про конечный дистрибутив.

Конечные дистры вообще левые спецы собирают. Даже не разработчики, а скорее сисадмины. Конечный дистр это просто набор утилит вместе. Может еще чуть-чуть доделанный пакетник и свой сервер для обновления пакетов, который собирает их из 100500^2 других мест.
xchgeaxeax
постоялец
 
Сообщения: 125
Зарегистрирован: 11.05.2023 03:51:40

Пред.След.

Вернуться в Разработки на нашем сайте

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 8

Рейтинг@Mail.ru