Форум: "Базы";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
ВнизDBgrid проблема при перемещение курсором по полям Найти похожие ветки
← →
ksa2002 (2006-07-19 11:05) [0]В грид выводятся значения , одно из полей открыто для редактирования. Если пользователь жмёт мышкой то я определяю имя поля и дальше блокирует редактирование или нет.
А вот если я нахажусь уже в ячейки где можно редактировать и перемещаюсь на поле которое "должно быть запрещенно" он переходит в режим редактирования если нажать дальше, то редактирования пропадёт(всё в порядке). При выборе мышкой всё работет корректно.
Для опеределения номера поля dbgrid1.SelectedIndex.
События проверял как грида так и датасета (эдиты и апдэйти)
Почему при перемещение именно курсором (клавишами) происходит так? Какием событием можно отловить такое перемещение?
PS при первом перемещение на запрещённое поле не срабатывает событие.
← →
Sergey13 © (2006-07-19 11:18) [1]А не правильнее будет ловить все это в BeforEdit датасета? И/или определить нужные поля как нередактируемые.
← →
ksa2002 (2006-07-19 11:30) [2]хех BeforEdit датасета заработало ) ...хотя до этого вообще молчало странно )) мож я чего напортачил )
Спасибо.
← →
ksa2002 (2006-07-19 12:44) [3]BeforEdit датасет
действительно отловил данный момент, но всеравно разрешил вносить значения. Хотя в свойствах (событие датасет) грида я прописал после того как он опредилил поле, запрет на редактирование (если я тут же перемещаюсь на запись выше или ниже то всё работает).
← →
Desdechado © (2006-07-19 12:49) [4]Field.ReadOnly
← →
ksa2002 (2006-07-19 13:00) [5]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 13:05) [6]Установка свойства поля делается заранее, сразу после открытия датасета, а не перед попыткой редактирования.
← →
ksa2002 (2006-07-19 13:12) [7]а как тогда мне поступить?
чтобы была возможность редактировать только одно поле (из нескольких)??? в гриде
← →
Desdechado © (2006-07-19 13:19) [8][6] повторить для всех блокируемых полей
← →
Sergey13 © (2006-07-19 13:22) [9]> [7] ksa2002 (19.07.06 13:12)
Если запрос датасета не меняется, то вообще все можно в дизайнере сделать.
← →
ksa2002 (2006-07-19 13:35) [10][6] хех а я думал что так тока стаичные поля можно ))) ..точно можно и так установить )))
[9] в том то и дело что запрос меняется в зависимости от данных
← →
Sergey13 © (2006-07-19 13:50) [11]> [10] ksa2002 (19.07.06 13:35)
А как он меняется? Разные таблицы учавствуют с разными полями? Тогда как ты обращаешься к ним по конкретному имени поля? Если меняется только WHERE секция, то можно в дизайнере делать.
← →
Плохиш © (2006-07-20 10:56) [12]
> ksa2002 (19.07.06 13:12) [7]
> а как тогда мне поступить?
Есть такая волшебная процедура, Abort называется. Неужели про неё в справке по OnBeforeEdit не написано?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2006.09.24;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.045 c