![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как отловить событие возникающее при редактировании в гриде [D7]
Layner © (2005-05-15 14:32:00)определенной колонки? Т.е. BeforeEdit в ADOQuery не подойдет, т.к. тут любая ячейка может "просигналить". Это нужно для того, что бы когда юзер кликнет на это поле, появляется форма ввода значения по маске, и при закрывании ее это значние ложится в эту ячейку. Я уже это вообще то реализовал в EhLib, по событию в колонке OnChange, да некрасиво получается, сначала "входить" в редактирование, а потом нажимать любую клавишу... Заранее благодарю.
Layner (2005-05-16 10:48:00) [1]О, спасибо msgunsза помощь, буду пробовать, на счет не редактируемости Grid, можно, да писать больше, у меня если человек кликнул на поле, вызывается модальное окошко (MDI приложение тоже), и пока его не закроешь, т.е. не введешь текст по маске, форму не закрыть. Вроде все удобно. Сейчас вот и с полем доделаю.
msguns (2005-05-16 10:25:00) [2]>-=XP=- © (16.05.05 10:12) [8]
>DBCtrlGrid?
Нет, нафиг он нужен, если редактируется одназапись ? Кроме того, НД может быть не редактируемым.
Минус у данной технологии только в том, что грид должен полностью умещаться на экране (нет гориз.скроллинга).
-=XP=- (2005-05-16 10:12:00) [3]По кнопке динамически рисуется панель по высоте строки грида, которая заполняется контролами типа TEdit, по ширине точно совпадающими с широиной соотв.колонки грида.
DBCtrlGrid?
msguns (2005-05-16 09:47:00) [4]Я еще делал так:
1. Грид не редактируемый (у меня еще и датасет был не редактируемый)
2. По кнопке динамически рисуется панель по высоте строки грида, которая заполняется контролами типа TEdit, по ширине точно совпадающими с широиной соотв.колонки грида.
Панель позиционируется точно на месте редактируемой строки и а ежиты переносится содержимое полей НД - при редактировании.
Либо под активной записью с очитской эдитов - при добавлении
Т.е. Имитировалось редактирование в гриде.
3. Гриду Enable := false, чтоб узер не мог кликать по нему, не завершив ввод-редактирование
4. По событию OnExit панели (либо по спец.кнопке на Гл.панели в MDI-форме) проверка введенных данных и, если все Ok, то UPDATE/INSERT, иначе - сообщение об ошибке (ShowMessage или в статусбаре Гл.формы MDI), фокус-в контрол с ошибкой и SelectedAll
Динамическое создание панели, разметка "под грид" и заполнение контролов в процедуре, текст которой при желании могу выложить.
Max Zyuzin (2005-05-16 09:36:00) [5]>Layner © (15.05.05 14:32)
Может лучше редактировать всю запись целиком? Вынес пару кнопочек отдельно от Grid нажал - все что надо поправил, принял... А Grid вообще оставить ReadOnly
msguns (2005-05-16 09:19:00) [6]Пардон,
TDBGrid.OnColEnter/OnColExit
msguns (2005-05-16 09:16:00) [7]Grid.Column.OnEnter/OnExit
ANB (2005-05-16 09:07:00) [8]Имхо, OnClick и OnKeyDown. Я так делал.
Layner (2005-05-15 18:59:00) [9]Да, маска сложная, встроенной не обойтись, поэтому пришлось делать внешнюю.
Desdechado (2005-05-15 17:51:00) [10]А зачем отдельная форма ввода по маске? У поля есть же свойства, которые отвечают за форматирование ввода...