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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
14-16616
Евгыш
2004-01-15 10:18
2004.02.06
Обработка исключений


1-16408
Antonyo
2004-01-21 20:03
2004.02.06
Про серверы автоматизации


14-16638
Satirus
2004-01-14 14:03
2004.02.06
Восстановление Win2K


1-16484
Oleg
2004-01-27 16:13
2004.02.06
Сохранение рисунков в dll


6-16583
Terrible
2003-12-04 14:11
2004.02.06
HTTP - докачка файлов