Главная страница
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.029 c
2-1157378897
_Gras_
2006-09-04 18:08
2006.09.24
не создавать дочернюю форму


15-1157100888
Dbn
2006-09-01 12:54
2006.09.24
С праздником, друзья!


1-1155495277
~viper~
2006-08-13 22:54
2006.09.24
загрузка html страницы


15-1157468245
tesseract
2006-09-05 18:57
2006.09.24
firebird - выдержит ли птичка мощный загруз ?


11-1130323876
Reset
2005-10-26 14:51
2006.09.24
"Закрыть" MAINICON