![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли запретить 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;