Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как в DBGrid отловить окончание редактирования ячейки?


Страницы:   1 2

IceBeerg ©   (2004-12-01 18:14:00) 

собсвенно сабж


Ну, я   (2004-12-02 11:32:00) [21]

>msguns © [8]:
...Выбросить на свалку привычку давать редактить в гриде и перейти к модальным формам с не DB-aware контролами. Все проверки делать либо по выходу из контролов либо комплексно при нажатии юзверем фишки "Записать".

Господи, и здесь такие же маньяки, как на SQL.RU Да откуда вы беретесь такие???

>IceBeerg:
Покажусь банальным, но посоветую EhLib (поверь, многие вопросы, к-рые у тебя еще будут возникать, там решены :)))
Так вот - там элементарно довишь Column. OnUpdateData
ЗЫ: А еще можно словить текст, к-рый пользователь уже ввел в ячейку, но еще не записал в поле... и т.д.
ЗЗЫ: Впрочем, возможно это есть и в обычном гриде, но лучше все же перейти...


IceBeerg   (2004-12-02 11:19:00) [22]

В связи с неожиданным нашествием стаи птиц типа "перепил" полевые испытания идей переносятся на завтра.


Johnmen   (2004-12-01 23:31:00) [23]

>Alexander Panov ©  (01.12.04 23:10) [17]

Э-э-э... Не понял... Как проверяем, изменилось ли содержимое?


Alexander Panov   (2004-12-01 23:10:00) [24]

Johnmen ©   (01.12.04 23:03) [16]
Кроме того это событие возникает и без входа в режим редактирования.


Используя временную переменную(OnColEnter) , проверяем, изменилось ли содержимое(OnColExit).


Johnmen   (2004-12-01 23:03:00) [25]

>Alexander Panov ©  (01.12.04 22:34) [15]
>Достаточно перед этим обработать OnColEnter.

Кроме того это событие возникает и без входа в режим редактирования.


Alexander Panov   (2004-12-01 22:34:00) [26]

Anatoly Podgoretsky ©   (01.12.04 21:52) [13]
Окончание редактирования ячейки не означает выхода из нее


Это как при визуальном редактировании?

Anatoly Podgoretsky ©   (01.12.04 21:53) [14]
Кроме того это событие возникает и без входа в режим редактирования.


Достаточно перед этим обработать OnColEnter.


Anatoly Podgoretsky   (2004-12-01 21:53:00) [27]

Кроме того это событие возникает и без входа в режим редактирования.


Anatoly Podgoretsky   (2004-12-01 21:52:00) [28]

Alexander Panov ©   (01.12.04 21:44) [12]
Окончание редактирования ячейки не означает выхода из нее, надежен только validate.


Alexander Panov   (2004-12-01 21:44:00) [29]

OnColExit


IceBeerg   (2004-12-01 19:00:00) [30]

msguns ©   (01.12.04 18:55) [8]
>2. Выбросить на свалку привычку давать редактить в гриде и перейти к модальным формам
Возможно этим и кончиться, но тем юзверям кому я это пишу можно давать возможность редактировать непосредственно DBGrid, так производительность будет выше.

Anatoly Podgoretsky ©   (01.12.04 18:56) [9]
Тоже буду пробовать.

Таак, все, конец рабочего дня, иду домой, завтра все попробую и напишу результаты.


msguns   (2004-12-01 18:57:00) [31]

>IceBeerg ©   (01.12.04 18:55) [7]
>>Как определяется "нужность" строки ?
>TTable.RecNo
>или мне просто перебрать все записи пока небудет найден нужный RecNo и там остаться? думал может, что проще есть.

Что значит "нужный RecNo" ? RecNo всегда (вернее не всегда, но в твоем случае точно) отображает номер текущей сзаписи датасета, а не строки грида.


Anatoly Podgoretsky   (2004-12-01 18:56:00) [32]

OnValidate


msguns   (2004-12-01 18:55:00) [33]

>IceBeerg ©   (01.12.04 18:49) [5]

Предупреждаю сразу, что если среди данных, отображаемых в гриде, есть даты, числа или дроби, то намаешься с прехватами и контролями.
Выхода 2:
1. Предоставить все непосредственно датасету и постирование делать в защищенном блоке без локализации ошибочного поля.
2. Выбросить на свалку привычку давать редактить в гриде и перейти к модальным формам с не DB-aware контролами. Все проверки делать либо по выходу из контролов либо комплексно при нажатии юзверем фишки "Записать". Рекомендуется как предпосылка перехода с TXXXTable на TXXXQuery


IceBeerg   (2004-12-01 18:55:00) [34]

msguns ©   (01.12.04 18:50) [6]
>Как определяется "нужность" строки ?
TTable.RecNo

или мне просто перебрать все записи пока небудет найден нужный RecNo и там остаться? думал может, что проще есть.


msguns   (2004-12-01 18:50:00) [35]

>IceBeerg ©   (01.12.04 18:40) [3]
>Да, и еще вопрос, как установить куhсор в нужную строку DGGrid?

Как определяется "нужность" строки ?
Для установки курсора в датасетеследует пользоваться методами навигации или поиска датасета.
И вообще надо бы определиться с понятиями. В гриде нет записей и полей, они есть в дата сете, который этот грид отображает. Как правили, приложение управляет именно датасетом (точнее его данными), а не гридом


IceBeerg   (2004-12-01 18:49:00) [36]

msguns ©   (01.12.04 18:47) [4]
Буду пробовать TField.OnChange, но боюсь, что это не то, мне бы что-то на подобии onEditEnd - ну да, такого нет, но идея такая.


msguns   (2004-12-01 18:47:00) [37]

>Vemer ©   (01.12.04 18:32) [1]
>DbGrid отражает датасет. Dataset.AfterPost попробуй,

Это событие возникает после того, как запостилась всязапись.
Если надо "поймать" узера на предмет проверки что он там понавводил и, если надо, "дать по рукам", то следует использовать:
TDataSet.BeforePost;
Если же требуется ловить непосредственно при попытке узера  "свалить" из поля, куда он только что что-то ввел (по "гридному" говоря, из ячейки), то следует пользовать событие
TField.OnChange


IceBeerg   (2004-12-01 18:40:00) [38]

Vemer ©   (01.12.04 18:32) [1]
Ну почти там...
Но это не помогает, мне надо по окончаню редактирования ячейки посчитать сумму по столбцу, но комманда post посылается только при смене строки.
Да, и еще вопрос, как установить куhсор в нужную строку DGGrid?


Vemer   (2004-12-01 18:32:00) [39]

DbGrid отражает датасет. Dataset.AfterPostпопробуй,
или DbGrid.dataSourse.Dataset.AfterPost- для маньяков )).


IceBeerg   (2004-12-01 18:32:00) [40]

Vemer ©   (01.12.04 18:32) [1]
Спасибо, попробую.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо