Open AliakseiDanilchyk opened 3 years ago
Например, на эталонной базе Ресторана, такое есть в документе Заказ. "Исследователь - Ресторан - 06. Служебное - 01. Заказ"
Если поискать в интернете, то получается, что так и задумано.
https://stackoverflow.com/questions/28792745/does-taction-onupdate-event-degrade-the-performance
выход, или менять наш код перемещая присваивание enabled/disabled в другое место. или как-то влезть в код на стороне гедымина, чтобы он ограничивал частоту вызова onupdate. тут надо смотреть.
В рассматриваемом примере логика такая, чтобы вообще выключить экшен/кнопку. Это надо делать не в onUpdate, а в OnCreate формы. Однократно.
Тогда подскажите кто-нибудь оптимальный вариант для деактивации кнопок, потому что на OnCreate формы вот такой код не срабатывает.
Option Explicit
Sub gdc_frmUserComplexDocument147004989_45137928OnCreate(ByVal Sender)
'*** Данный код необходим для вызова встроенного обработчика ***
'*** В случае его удаления возможно нарушение работы системы ***
Call Inherited(Sender, "OnCreate", Array(Sender))
'*** конец кода поддержки встроенного обработчика ***
Dim ActEdit : Set ActEdit = Sender.GetComponent("ActEdit")
ActEdit.Enabled = False
End Sub
Тогда надо перекрыть OnUpdate и закоментировать inherited
ср, 18 авг. 2021 г., 09:59 Aliaksei Danilchyk @.***>:
Тогда подскажите кто-нибудь оптимальный вариант для деактивации кнопок, потому что на OnCreate формы вот такой код не срабатывает.
Option Explicit Sub gdc_frmUserComplexDocument147004989_45137928OnCreate(ByVal Sender) ' Данный код необходим для вызова встроенного обработчика ' В случае его удаления возможно нарушение работы системы Call Inherited(Sender, "OnCreate", Array(Sender)) ' конец кода поддержки встроенного обработчика Dim ActEdit : Set ActEdit = Sender.GetComponent("ActEdit") ActEdit.Enabled = False End Sub
— You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHub https://github.com/GoldenSoftwareLtd/gedemin/issues/4207#issuecomment-900869476, or unsubscribe https://github.com/notifications/unsubscribe-auth/ACXXJ7UXJNU5PRGKHOPSZLDT5NK4VANCNFSM5BV52UXQ . Triage notifications on the go with GitHub Mobile for iOS https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Android https://play.google.com/store/apps/details?id=com.github.android&utm_campaign=notification-email .
Тогда подскажите кто-нибудь оптимальный вариант для деактивации кнопок, потому что на OnCreate формы вот такой код не срабатывает.
Option Explicit Sub gdc_frmUserComplexDocument147004989_45137928OnCreate(ByVal Sender) '*** Данный код необходим для вызова встроенного обработчика *** '*** В случае его удаления возможно нарушение работы системы *** Call Inherited(Sender, "OnCreate", Array(Sender)) '*** конец кода поддержки встроенного обработчика *** Dim ActEdit : Set ActEdit = Sender.GetComponent("ActEdit") ActEdit.Enabled = False End Sub
Эту ситуацию надо задокументировать. Программно вряд ли мы просто решим, потому что такая логика зашита в компоненты делфи.
Например, на эталонной базе Ресторана, такое есть в документе Заказ. "Исследователь - Ресторан - 06. Служебное - 01. Заказ"
@yoannawx @alexandra-gsoftware обратите внимание! надо поправить на эталоне везде, где есть такие места.
Для того, чтобы сделать недоступными стандартные кнопки в окнах Гедымина, широко практикуется перекрытие события OnUpdate для Action-а соответствующей кнопки.
Чаще всего код в таком случае выглядит так:
Если открыта (и не свернута) форма, где такое сделано, то сильно грузится процессор. Конкретно у меня полностью грузится один из 4-х логических процессоров. При этом, если посмотреть Gedemin Control Center, то actDetailEditOnUpdate вызывается примерно 15 000 раз за минуту.
Встречаются много кода, где в вышеприведенном коде закомментирована строка call Inherited. В таком случае actDetailEditOnUpdate вызывается 260 раз в минуту.
Я думаю примеров можно найти много, если поискать по коду actDeleteOnUpdate или actEditOnUpdate.