Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.09.17;
Скачать: CL | DM;

Вниз

Контроль введенных значений в 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.03 c
8-1141204700
Sour Smile
2006-03-01 12:18
2006.09.17
Как проиграть несколько звуков одновременно?


15-1156607881
ArtemESC
2006-08-26 19:58
2006.09.17
Генератор псевдослучайных чисел...


4-1145873897
Velimir
2006-04-24 14:18
2006.09.17
Работа с портом с конкретным адресом. Запись и чтение


15-1156694224
Griha
2006-08-27 19:57
2006.09.17
Скрыть от приложения деактивацию его окна (WM_ACTIVATE)


3-1152511382
Nic
2006-07-10 10:03
2006.09.17
Небольшая локальная база данных