x11 Posted May 5, 2020 Posted May 5, 2020 В рамках того, что UniGUI это не классическое VCL приложение и мы ничего не знаем, что там внутри под капотом, то есть такой вопрос. qData.DisableControls; try qData.Close; ... ... ... qData.Open; finally qData.EnableControls; end; Обязательно ли использовать эти VCL-ные методы? Или же UniGUI прекрасно обходится без DisableControls/EnableControls? Или нужно использовать какие-то другие методы? Например, у TUniDBGrid? Или ещё что-то? Quote
x11 Posted May 5, 2020 Author Posted May 5, 2020 Дело в том, что после DataSet.EnableControls сетка не обновляется. Вернее не всегда обновляется. На сколько я смог понять, то после повторного переоткрытия DataSet`а сетка не обновляется. Приходится добавлять строку UniDBGrid.Refresh; Quote
Sherzod Posted May 5, 2020 Posted May 5, 2020 3 minutes ago, x11 said: Дело в том, что после DataSet.EnableControls сетка не обновляется. Вернее не всегда обновляется. На сколько я смог понять, то после повторного переоткрытия DataSet`а сетка не обновляется. Приходится добавлять строку UniDBGrid.Refresh; Здравствуйте, Можете прикрепить тестовый случай..? Quote
x11 Posted May 5, 2020 Author Posted May 5, 2020 Обратите внимание на события UniTabControl1Change и UniFormCreate. 1. В событии UniFormCreate создаем и наполняем ClientDataSet1. 2. В событии UniTabControl1Change переоткрытие набора данных ClientDataSet1 с использованием фильтра. Обратите внимание, что строка //UniDBGrid1.Refresh; закоментирована, поэтому данные в сетке не меняются. Но если раскоментировать, то при переключении между вкладками UniTabControl1 будет видно, что данные в сетке меняются. Или если строка UniDBGrid1.Refresh закоментирована, то после переключения между вкладками можно нажимать внизу сетки кнопку Refresh. unigui_event.zip Quote
Sherzod Posted May 5, 2020 Posted May 5, 2020 7 minutes ago, x11 said: unigui_event.zip Думаю будет правильнее использовать так: ... ClientDataSet1.EnableControls; ClientDataSet1.Open; Quote
x11 Posted May 5, 2020 Author Posted May 5, 2020 Нет. По идее, конструкция должна иметь вид: DisableControls; Try open; finally EnableControls end; Дело в том, что при Open может возникнуть исключение и сетка "зависнет" и не будет кликабельной. И чтобы сетка не была в подвисшем состоянии, последней инструкцией должна быть строка разблокировки DataSet.EnableControls. Quote
x11 Posted May 5, 2020 Author Posted May 5, 2020 даже вот так должно быть DisableControls; Try try open; except обработка исключения end; finally EnableControls end; Quote
Sherzod Posted May 5, 2020 Posted May 5, 2020 42 minutes ago, x11 said: даже вот так должно быть ОК, я открыл запрос. Я буду держать Вас в курсе. 1 Quote
d.bernaert Posted June 29, 2021 Posted June 29, 2021 I'm having the same issue. Sometimes it works and sometimes not. Dominique Quote
jrp Posted August 30, 2021 Posted August 30, 2021 On 5/6/2020 at 3:41 AM, x11 said: DisableControls; Try open; finally EnableControls end; I have this problem too in UniGUI 1.90.0.1551. UniDBGrid would be empty after a code like above. I spent an hour to debug my application, only to find that the code like above (that works perfectly in VCL) is the culprit. It would work fine if I delete the Dataset.DisableControls; Is it necessary or not to use Dataset.DisableControls and Dataset.EnableControls in UniGUI applications? Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.