Jump to content

DBLookupComboBox: на какое событие на клиенте сесть, которое при смене выбора отрабатывает _до_ изменения в данных?


boka

Recommended Posts

Вопрос практический такой же, как в последних постах тут 

Поясню свой:

Есть DBLookupCombo c заполненными только ListSource, KeyField и ListName.
DataSet под ListSource является master в Master-Detail relation, cоответственно, при выборе нового значения в DBLookupComboBox перезапрашивается detail dataset.

image.png.165bf2abf0bd573e445a36f63f6b1fcb.png

Всё бы хорошо, но если в detail dataset накопились изменения при CachedUpdates, то их желательно записать в БД, выполнив ApplyUpdates и предварительно спросив, а стоит ли их сохранять.

EnableSynchronousOperations = true и запрос MessageDlg обязательно должен быть блокирующим, иначе [ListSource.DataSet.]KeyField успевает поменяться на новый и закэшированные в detail dataset изменения сбрасываются.
Пытался поднимать MessageDlg и в TUniDBLookupCombo.OnChange, и в ~.OnChangeValue (само собой в OnSelect, OnExit и OnCloseUp уже поздно), и в [ListSource.DataSet.]KeyField.OnChange, но получаю "Dataset Blocking method MessageDlg() can not be called here".

Где-то в ClientEvents я успею перехватить контроль в самом начале, когда ещё можно?

Link to comment
Share on other sites

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...