Jump to content

Recommended Posts

Posted

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

  qData.DisableControls;
  try
    qData.Close;

    ...
    ...
    ...

    qData.Open;
  finally
    qData.EnableControls;
  end;

Обязательно ли использовать эти VCL-ные методы? Или же UniGUI прекрасно обходится без DisableControls/EnableControls?

Или нужно использовать какие-то другие методы? Например, у TUniDBGrid? Или ещё что-то?

Posted

Дело в том, что после DataSet.EnableControls сетка не обновляется. Вернее не всегда обновляется. На сколько я смог понять, то после повторного переоткрытия DataSet`а сетка не обновляется.

Приходится добавлять строку UniDBGrid.Refresh;

 

Posted
3 minutes ago, x11 said:

Дело в том, что после DataSet.EnableControls сетка не обновляется. Вернее не всегда обновляется. На сколько я смог понять, то после повторного переоткрытия DataSet`а сетка не обновляется.

Приходится добавлять строку UniDBGrid.Refresh;

Здравствуйте,

Можете прикрепить тестовый случай..?

Posted

Обратите внимание на события UniTabControl1Change и UniFormCreate.

1. В событии UniFormCreate создаем и наполняем ClientDataSet1.

2. В событии UniTabControl1Change переоткрытие набора данных ClientDataSet1 с использованием фильтра.

Обратите внимание, что строка //UniDBGrid1.Refresh; закоментирована, поэтому данные в сетке не меняются. Но если раскоментировать, то при переключении между вкладками UniTabControl1 будет видно, что данные в сетке меняются.

Или если строка UniDBGrid1.Refresh закоментирована, то после переключения между вкладками можно нажимать внизу сетки кнопку Refresh.

unigui_event.zip

Posted
7 minutes ago, x11 said:

unigui_event.zip

Думаю будет правильнее использовать так:

  ...
  ClientDataSet1.EnableControls;
  ClientDataSet1.Open;

 

Posted

Нет.

По идее, конструкция должна иметь вид:
 

DisableControls;

Try

  open;


finally

  EnableControls

end;

 

Дело в том, что при Open может возникнуть исключение и сетка "зависнет" и не будет кликабельной.

И чтобы сетка не была в подвисшем состоянии, последней инструкцией должна быть строка разблокировки DataSet.EnableControls.

 

Posted

даже вот так должно быть

DisableControls;

Try

  try
    open;
  except
    обработка исключения
  end;


finally

  EnableControls

end;

 

Posted
42 minutes ago, x11 said:

даже вот так должно быть

ОК, я открыл запрос. Я буду держать Вас в курсе.

  • Upvote 1
  • 1 year later...
  • 2 months later...
Posted
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?

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...