Форум: "Базы";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
ВнизdxDBGrid событие смены активного колумна Найти похожие ветки
← →
korvin (2004-01-13 09:21) [0]При выходе из колонки таблицы нужно выполнить некоторые действия. Помогите определить этот момент (не вижу такого события). В принцыпе не имеет значения какая именно колонка потеряла фокус, главное сам факт.
← →
Anatoly Podgoretsky (2004-01-13 09:24) [1]OnColExit
← →
Johnmen (2004-01-13 09:26) [2]>korvin ©
А если переместились вниз/вверх ?
← →
korvin (2004-01-13 16:35) [3]> OnColExit - не смешно, я серьёзно спросил, а у dxDBGrid такого события нет
> А если переместились вниз/вверх? - нет, нужно провести пересчёт до скролинга и изменить значение в другом поле этой записи
← →
Johnmen (2004-01-13 16:39) [4]Вот я и говорю, как будешь ловить OnColExit, если вниз/вверх ...:)
← →
Vlad (2004-01-13 16:45) [5]
> korvin © (13.01.04 16:35) [3]
OnChangeColumn?
← →
korvin (2004-01-13 18:13) [6]> Вот я и говорю, как будешь ловить OnColExit, если вниз/вверх ...:)
Нет ребята, скрол мне не мешает, скорее он тут даже не при чём. Грубый пример: количество, цена, сумма. При вводе количества и цены вычислить значение суммы. При скроле эта операция пройдёт без сучка ... А вот как добится такого не уходя с записи????
> OnChangeColumn?
Да, что-то вроде этого ... На скорую руку попробовал - вроде оно. Сенкс.
← →
Johnmen (2004-01-13 18:16) [7]Post ?
← →
Silver_ (2004-01-14 00:09) [8]А для этого ваще надо вычисляемое поле юзать, так что ты не в ту сторону копаеш
← →
kaif (2004-01-14 01:16) [9]Я для этой цели использую событие, отрабатываемое OnDataChange компонентом TDataSource.
Это событие хорошо тем, что в качестве параметра передается указатель на TField. При простой прокрутке передается nil. После редактирования любого поля передается конкретный указатель на поле, которое было отредактировано.
Я обычно анализирую (спомощью пары if-ов), какое поле изменялось, и, в зависимости от этого, обновляю поле суммы, к примеру:
if (Field = MyPriceField) or
(Field = MyQuantityFireld) then
MyAmountField.AsCurrency :=
MyPriceField.AsCurrency * MyQuantityFireld.AsCurrency;
Этот подход тем хорош, что в этот момент сам DataSet всегда еще находится в состоянии редактирования.
Silver_ © (14.01.04 00:09) [8]
А для этого ваще надо вычисляемое поле юзать, так что ты не в ту сторону копаеш
Не всегда. Иногда полезно хранить в базе данных поле суммы, особенно если имелись округления копеек.
← →
Desdechado (2004-01-14 10:47) [10]именно, ИНОГДА.
а так вычисляемые поля (calculated) именно для этой цели предназначены (как в БД, так и на клиенте - хоть и смысл несколько разный при этом :).
← →
Silver_ (2004-01-14 13:49) [11]
> особенно если имелись округления копеек.
Не понял сегодня округлённой суммой, подщитал один итог а завтра другой.
Вычсляемое поле тоже ВСЕГДА будет округлять одинаково, если ты конечно в проге не изменил этого, но тут ТЫ царь и бог, если хочешь :)
Мораль: Не имеет смысла хранить то что можно вычислить, за исключением некоторых ситуаций, ну например если вичисления ну очень много времени и сил компа отбирает :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.02.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.031 c