Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
ВнизКонтроль введенных значений в DBGRID-e Найти похожие ветки
← →
Sirus (2006-08-30 08:15) [0]Подскажите, знатоки, как правильно реализовать проверку значений при вводе данных через сетку DBGRID-а. Надо при вводе значения некоторого поля проверить входит ли введенное значение в определенные границы и выдать об этом сообщение, если не входит. Желательно это делать до ввода следующей строки значений.
Буду благодарен за подсказку и совет.
Сайрус 30.08.2006
← →
Sergey13 © (2006-08-30 08:46) [1]Нет в гриде данных, они в датасете. Вот там и смотри. Например в BeforePost.
← →
Sirus (2006-08-30 10:38) [2]Спасибо Sergey13 за подсказку. Похоже, что это то, что надо. Но есть дополнительный вопрос по DBGRID. Как определить точно ячейку по которой надо кликнуть в строке DBGRID, чтобы допустим вызвать дополнитедьную форму. Событие OnCellClick реагирует при клике на любую ячейку, а мне надо, чтобы реакция была при нажатии на конкретную. Не знаю, как это сделать. Буду благодарен за конструктивную подсказку.
С уважением- Сайрус.
30.08.2006
← →
Fay © (2006-08-30 10:47) [3]2 Sirus (30.08.06 10:38) [2]
Column - из параметра OnCellClick, запись - текущая. В чём проблема-то?
← →
Sergey13 © (2006-08-30 10:47) [4]> [2] Sirus (30.08.06 10:38)
> Событие OnCellClick реагирует при клике на любую ячейку,
> а мне надо, чтобы реакция была при нажатии на конкретную.
Реагирует на любую, но передает параметром конкретную, которую можно анализировать.
← →
Sirus (2006-08-30 11:54) [5]А как COLUMN идентифицируется - номером или именем? Буду благодарен за примерчик.
Сайрус
← →
Sergey13 © (2006-08-30 11:59) [6]> [5] Sirus (30.08.06 11:54)
У хелпа не пробовал спрашивать?
← →
Плохиш © (2006-08-30 11:59) [7]
> Sirus (30.08.06 11:54) [5]
> А как COLUMN идентифицируется - номером или именем?
А в справку заглянуть религия не позволяет?
type TDBGridClickEvent = procedure (Column: TColumn) of object;
← →
Sirus (2006-08-30 12:46) [8]И как это всунуть в проверку колонки? Можно чуть подробнее. Например мне надо проверить соответствует ли значение колонки с именем KOL значению не более 100. В справку я заглядывал, но она очевидно для более подкованных.
Сайрус.
← →
Reindeer Moss Eater © (2006-08-30 12:53) [9]И как это всунуть в проверку колонки?
наоборот.
надо в "это" всунуть проверку колонки.
переданной в параметре.
← →
Sirus (2006-08-30 13:09) [10]Маленький примерчик, пожалуйста. Буду очень благодарен и тема будет закрыта.
Сайрус.
← →
Fay © (2006-08-30 13:19) [11]2 Sirus (30.08.06 13:09) [10]
procedure TheForm.TheGridCellClick(Column: TColumnEh);
begin
if Column = TheGrid.Columns[0] then
ShowMessage(Colum.FieldName)
else
ShowMessage("RTFM");
end;
← →
Sirus (2006-08-30 15:03) [12]Спасибо всем и персонально FAY, который конкретно помог и прекратил бесполезные разговоры.
Еще раз благодарю.
Sirus.
← →
Fay © (2006-08-30 15:07) [13]2 Sirus (30.08.06 15:03) [12]
Честно говоря, мне не понятно, чем это я так выделился... 8|
← →
MsGuns © (2006-08-30 15:39) [14]"Битие по рукам" во время редактирования в гриде делает программу крайне неудобной (и это мягко сказано) для пользователя, т.к. не дает перейти в другую ячейку пока не введешь корректное значение в текущее. Да и тормоза будут страшные, если содержимое нескольких колонок надо сверять, например, со справочниками.
Самый оптимальный способ - делать комплексную проверку в событии датасета BeforePost с фокусированием в гриде первой ячейки, содержащей ошибку. Текст же ошибки не выводить в модальное окно (ShowMessage), а отрисовывать, например, в статусбаре под гридом.
← →
Fay © (2006-08-30 15:50) [15]2 MsGuns © (30.08.06 15:39) [14]
> Да и тормоза будут страшные,
Можно поподробнее?
← →
MsGuns © (2006-08-30 15:58) [16]>Fay © (30.08.06 15:50) [15]
>Можно поподробнее?
Есть три поля датасета, значения которых должны сличаться с одним и тем же справочником (или разными, сути не меняет).
Если сверка со справочником (например, дин.запросом) будет выполняться каждый раз, когда пользователь изменил содержимое любого из этих трех полей и хочет уйти из соотв.ячейки, то надо будет выполнить 3 запроса (по одному для каждого измененного поля).
Кроме того, переход в другую ячейку не состоится до тех пор, пока не выполнится запрос для "покидаемой" ячейки. Т.е. пока не провериться товар (к примеру), я не смогу ввести кол-во или цену, пока не выполонится проверка.
"Комплексная" проверка выполняется один раз перед постингом и для всех сразу. В приведенным примере три проверки можно выполнить одним запросом (в случае разных таблиц через Union)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.09.17;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.06 c