Главная страница
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.028 c
15-1156830512
Карелин Артем
2006-08-29 09:48
2006.09.24
Еле сдерживаюсь. Что делать с собой?


1-1155198521
Всилий
2006-08-10 12:28
2006.09.24
Вовремя исполнения Form:=nil


2-1156748315
XTD
2006-08-28 10:58
2006.09.24
Вопрос по компоненте ТcoolTrayIcon


15-1157015686
TGX
2006-08-31 13:14
2006.09.24
PHP скрипт виснет!


15-1157039421
ArtemESC
2006-08-31 19:50
2006.09.24
html-книга...