Как заполнить поле со списком, когда выбрана строка в dbgrid? - PullRequest
0 голосов
/ 29 марта 2011

В Delphi 2007 у меня есть DBGrid. Мне нужно заполнить ComboBox, когда выбрана строка в DBGrid. Данные в ComboBox зависят от выбранной строки и могут быть разными для каждой выбранной строки.

DBGrid содержит заказы продуктов. Когда заказ выбран, мне нужно заполнить ComboBox номерами партий товара в заказе. Этот номер партии сохраняется в записи заказа при выполнении заказа.

Мне не удалось найти событие onSelect или onChange, которое я мог бы использовать для этого.

Так как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 29 марта 2011

Вы должны использовать событие TDataSet.AfterScroll

1 голос
/ 29 марта 2011

Если данные поступают из DataSet в DataModule, как это выглядит из комментариев к @Roman response , вы можете положиться на события TDataSource.

Если ваш источник данных также находится в модуле данных, вы можете поместить новый источник данных в саму форму (IMO находится там, где он находится).

Затем используйте событие TDataSource.OnDataChange из справки:

Напишите обработчик события OnDataChange , чтобы выполнить определенные действия, когда поле в текущей записи было отредактировано, а приложение перемещается в другое поле или когда текущая запись в связанном наборе данных изменяется. OnDataChange особенно полезен в приложениях, которые должны синхронизировать отображение данных в элементах управления, которые не поддерживают данные . Это событие обычно используется для того, чтобы убедиться, что элемент управления отражает текущие значения полей в наборе данных, потому что оно инициируется всеми изменениями.

Параметр Field равен nil, когда связанный набор данных перемещается в новую запись или обновляет буфер записи. Поле не равно нулю, когда изменения принадлежат конкретному полю (пользователь или сама программа изменяют его значение).

0 голосов
/ 29 марта 2011

Я предлагаю событие двойного щелчка (OnDblClick), чтобы ловить, когда пользователь щелкает мышью и OnKeyPress для клавиши Enter (Key = # 13)

...