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

Вниз

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

Наверх




Память: 0.49 MB
Время: 0.045 c
2-1157301812
Konstantin555
2006-09-03 20:43
2006.09.24
Как в ходе программы задать параметр CanResize формы?


2-1157266289
Mozgan
2006-09-03 10:51
2006.09.24
Числа


15-1157386489
Вти
2006-09-04 20:14
2006.09.24
Image1


2-1157308879
иван8511
2006-09-03 22:41
2006.09.24
Матричный принтер


4-1141971209
balepa
2006-03-10 09:13
2006.09.24
Процессы и сокеты