Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Можно ли запретить DBGrid создавать запись ? [D5, MSSQL, dBase, FoxPro]


WG ©   (2005-09-23 13:56:00) 

Вопрос - можно ли запретить DBGrid создавать запись при нажатии "стрелка вниз" на последней записи в базе ? Проблема в том, что при создании новой записи некоторые поля должны сразу получать некие значения (пользователь эти поля не видит).


Ega23   (2005-09-23 15:33:00) [1]

Поддерживаю [6]


msguns   (2005-09-23 15:09:00) [2]

Суть вопроса в непонимании функций грида, датасета, а также их событий и разницы между "клиентом" (программой) и "сервером" (физической таблицей БД).

Чтобы избежать автодобавления по Ins и не только рекомендую использовать акции (TActionList,TAction,TImageList), которые назначить соответствующим действиям юзера (редактировать, удалить, изменить и т.д.)
Соответствующим акциям назначить горячие ключи (TAction.ShortCut), соответствующие аналогичным кнопкам грида.
В дальнейшем, исходя из текущей ситуации, управлять ими, включая или выключая соотв. акции (TAction.Enabled)
Такая технология позволяет не только избавиться от "самодеятельности" гридов, но и централизовать все управление (один и тот же экшн может быть назначен пункту гл.меню, кнопке на панеле управления, пункту всплывающего меню и т.д.)


ANB   (2005-09-23 15:03:00) [3]

Еще можно перейти на эхлиб. Там ненужный функционал отключается в опциях.


Savek   (2005-09-23 14:47:00) [4]

Запретить можно вот так:

procedure TForm1.ADOQuery1BeforeInsert(DataSet: TDataSet);
begin
   Abort;
end;


Виталий Панасенко   (2005-09-23 14:43:00) [5]


> Например, у набора данных, например, есть событие OnAfterInsert,
>  в котором можно заполнять эти самы поля.

Обычно это делают в OnNewRecord


Danilka   (2005-09-23 14:26:00) [6]

WG   (23.09.05 13:56)
Вопрос - можно ли запретить DBGrid создавать запись при нажатии "стрелка вниз" на последней записи в базе ? Проблема в том, что при создании новой записи некоторые поля должны сразу получать некие значения (пользователь эти поля не видит).


Как создание записи "при нажатии "стрелка вниз"" связанно с тем, что "при создании новой записи некоторые поля должны сразу получать некие значения"?
Например, у набора данных, например, есть событие OnAfterInsert, в котором можно заполнять эти самы поля.


Ega23   (2005-09-23 14:01:00) [7]

Можно. Для этого не надо использовать TTable (TADOTable) или TClientDataSet. Или поставить TDBGrid.ReadOnly:=True;


Наверх

Титульная страница Поиск, карта сайта Написать письмо