![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
DBgrid проблема при перемещение курсором по полям [D7, IB6.x]
ksa2002 © (2006-07-19 11:05:00)В грид выводятся значения , одно из полей открыто для редактирования. Если пользователь жмёт мышкой то я определяю имя поля и дальше блокирует редактирование или нет.
А вот если я нахажусь уже в ячейки где можно редактировать и перемещаюсь на поле которое "должно быть запрещенно" он переходит в режим редактирования если нажать дальше, то редактирования пропадёт(всё в порядке). При выборе мышкой всё работет корректно.
Для опеределения номера поля dbgrid1.SelectedIndex.
События проверял как грида так и датасета (эдиты и апдэйти)
Почему при перемещение именно курсором (клавишами) происходит так? Какием событием можно отловить такое перемещение?
PS при первом перемещение на запрещённое поле не срабатывает событие.
Плохиш (2006-07-20 10:56:00) [1]
> ksa2002 (19.07.06 13:12) [7]
> а как тогда мне поступить?
Есть такая волшебная процедура, Abortназывается. Неужели про неё в справке по OnBeforeEdit не написано?
Sergey13 (2006-07-19 13:50:00) [2]> [10] ksa2002 (19.07.06 13:35)
А как он меняется? Разные таблицы учавствуют с разными полями? Тогда как ты обращаешься к ним по конкретному имени поля? Если меняется только WHERE секция, то можно в дизайнере делать.
ksa2002 (2006-07-19 13:35:00) [3][6] хех а я думал что так тока стаичные поля можно ))) ..точно можно и так установить )))
[9] в том то и дело что запрос меняется в зависимости от данных
Sergey13 (2006-07-19 13:22:00) [4]> [7] ksa2002 (19.07.06 13:12)
Если запрос датасета не меняется, то вообще все можно в дизайнере сделать.
Desdechado (2006-07-19 13:19:00) [5][6] повторить для всех блокируемых полей
ksa2002 (2006-07-19 13:12:00) [6]а как тогда мне поступить?
чтобы была возможность редактировать только одно поле (из нескольких)??? в гриде
Desdechado (2006-07-19 13:05:00) [7]Установка свойства поля делается заранее, сразу после открытия датасета, а не перед попыткой редактирования.
ksa2002 (2006-07-19 13:00:00) [8]procedure TForm6.IBDataSet1BeforeEdit(DataSet: TDataSet);
begin
memo1.text:=memo1.text+'*1*'+ inttostr(dbgrid1.SelectedIndex);
if ((DBGrid1.Fields[DBGrid1.SelectedIndex].FullName)='MIN_KOL') then
DBGrid1.ReadOnly:=false
else
DBGrid1.ReadOnly:=true;
end;
ноль эмоций ..всреавно продолжает вводить в поле значения, при переводе на другое поле таблицу блокирует
Desdechado (2006-07-19 12:49:00) [9]Field.ReadOnly
ksa2002 (2006-07-19 12:44:00) [10]BeforEdit датасет
действительно отловил данный момент, но всеравно разрешил вносить значения. Хотя в свойствах (событие датасет) грида я прописал после того как он опредилил поле, запрет на редактирование (если я тут же перемещаюсь на запись выше или ниже то всё работает).
ksa2002 (2006-07-19 11:30:00) [11]хех BeforEdit датасета заработало ) ...хотя до этого вообще молчало странно )) мож я чего напортачил )
Спасибо.
Sergey13 (2006-07-19 11:18:00) [12]А не правильнее будет ловить все это в BeforEdit датасета? И/или определить нужные поля как нередактируемые.