![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Cntrl+Delete –удаление записи через DBGrid
TrainerOfDolphins © (2006-06-20 13:36:00)День добрый!
Есть DBGrid из которого можно удалять записи. Для этого у меня предусмотрено своё действие и свой диалог. Но в гриде есть встроенная функция: если нажимаешь Cntrl+Delete он спрашивает: “Delete record?” и если да, то стирает запись, обходя все мои запреты и проверки. Как это можно устранить?
Заранее благодарю.
TrainerOfDolphins (2006-06-22 11:42:00) [1]Я мучаюсь догадками :). Чем же это опасно?
TrainerOfDolphins (2006-06-21 10:51:00) [2]Чем?
MsGuns (2006-06-21 10:44:00) [3]>Так что [9] подходит как низя лучше.
Этот способ весьма опасный.
TrainerOfDolphins (2006-06-21 10:41:00) [4]Тоже вариант. Но в этом случае надо переустанавливать это свойство, каждый раз когда потребуется редактировать данные через грид. Так что [9] подходит как низя лучше. Key:=0 - шесть символов, и грид спит спокойно! :)
Плохиш (2006-06-20 15:13:00) [5]
> TrainerOfDolphins © (20.06.06 14:39) [9]
Кстати, может стоит сказать гриду, что он ReadOnly? :-)
TrainerOfDolphins (2006-06-20 14:42:00) [6]БОЛЬШОЕ СПАСИБО Johnmen-у и Плохишу за постоянное участие в моих топиках и неоценимую помощь! :)
TrainerOfDolphins (2006-06-20 14:39:00) [7]
> В [5] в if только Key:=0
Работает!
Johnmen (2006-06-20 14:24:00) [8]
> мож есть какой-нть способ сказать гриду напрямую, что я
> не хочу, чтобы он лез в мои дела…
В [5] в if только Key:=0
TrainerOfDolphins (2006-06-20 14:16:00) [9]
> В общем, обрабатываем KeyDown грида.
Ну это – первое, о чём я подумал.
Дело в том, что я описал действие удаления в ActionList и там же назначил эту комбинацию клавиш. И всё было бы хорошо, но в некоторых случаях мне нужно запретить это действие. Когда я его запрещаю, вылазит эта коварная встроенная фича дбгрида…
Можно сделать так:
а) присвоить моему действию шоткат не Ctrl+del, а del;
б) ввести пустое действие и присвоить ему шоткат Ctrl+del;
Но это всё равно как-то “почеши левое ухо правой рукой из-за затылка”. Я просто думал, мож есть какой-нть способ сказать гриду напрямую, что я не хочу, чтобы он лез в мои дела…
Плохиш (2006-06-20 14:13:00) [10]
> Johnmen © (20.06.06 13:49) [3]
:-) Я спрашиваю разрешение на удаление в OnBeforeDelete, тогда уж никакая шельма мимо вопроса не пройдёт.
Johnmen (2006-06-20 13:58:00) [11]В общем, обрабатываем KeyDown грида.
if (ssCtrl in Shift) and (Key=VK_DELETE) then begin;
<здесь твой вопрос и удаление>;
Key:=0;
end;
TrainerOfDolphins (2006-06-20 13:52:00) [12]
> Т.е. удалить не спрашивая? :)))
:):)
Johnmen (2006-06-20 13:49:00) [13]
> Плохиш © (20.06.06 13:39) [1]
Т.е. удалить не спрашивая? :)))
MsGuns (2006-06-20 13:47:00) [14]1. TDataSet.BeforeDelete
2. TDBGrid.ReadOnly := true;
3. TDBGrid.OnKeyDown
4. Назначить контролу удаления (кнопке, меню..) ShortCut=Ctrl+Del
Плохиш (2006-06-20 13:39:00) [15]dbgrid.options := dbgrid.options - [dgConfirmDelete];