Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.07.09;
Скачать: CL | DM;

Вниз

Cntrl+Delete –удаление записи через DBGrid   Найти похожие ветки 

 
TrainerOfDolphins ©   (2006-06-20 13:36) [0]

День добрый!
Есть DBGrid из которого можно удалять записи. Для этого у меня предусмотрено своё  действие и свой диалог. Но в гриде есть встроенная функция: если нажимаешь Cntrl+Delete он спрашивает: “Delete record?” и если да, то стирает запись, обходя все мои запреты и проверки. Как это можно устранить?
Заранее благодарю.


 
Плохиш ©   (2006-06-20 13:39) [1]

dbgrid.options := dbgrid.options - [dgConfirmDelete];


 
MsGuns ©   (2006-06-20 13:47) [2]

1. TDataSet.BeforeDelete
2. TDBGrid.ReadOnly := true;
3. TDBGrid.OnKeyDown
4. Назначить контролу удаления (кнопке, меню..) ShortCut=Ctrl+Del


 
Johnmen ©   (2006-06-20 13:49) [3]


> Плохиш ©   (20.06.06 13:39) [1]


Т.е. удалить не спрашивая? :)))


 
TrainerOfDolphins ©   (2006-06-20 13:52) [4]


> Т.е. удалить не спрашивая? :)))

:):)


 
Johnmen ©   (2006-06-20 13:58) [5]

В общем, обрабатываем KeyDown грида.
if (ssCtrl in Shift) and (Key=VK_DELETE) then begin;
 <здесь твой вопрос и удаление>;
 Key:=0;
 end;


 
Плохиш ©   (2006-06-20 14:13) [6]


> Johnmen ©   (20.06.06 13:49) [3]

:-) Я спрашиваю разрешение на удаление в OnBeforeDelete, тогда уж никакая шельма мимо вопроса не пройдёт.


 
TrainerOfDolphins ©   (2006-06-20 14:16) [7]


> В общем, обрабатываем KeyDown грида.

Ну это – первое, о чём я подумал.
Дело в том, что я описал действие удаления в  ActionList и там же назначил эту комбинацию клавиш. И всё было бы хорошо, но в некоторых случаях мне нужно запретить это действие. Когда я его запрещаю, вылазит эта коварная встроенная фича дбгрида…
Можно сделать так:
а) присвоить моему действию шоткат не Ctrl+del, а del;
б) ввести пустое действие и присвоить ему шоткат Ctrl+del;
Но это всё равно как-то “почеши левое ухо правой рукой из-за затылка”. Я просто думал, мож есть какой-нть способ сказать гриду напрямую, что я не хочу, чтобы он лез в мои дела…


 
Johnmen ©   (2006-06-20 14:24) [8]


> мож есть какой-нть способ сказать гриду напрямую, что я
> не хочу, чтобы он лез в мои дела…


В [5] в if только Key:=0


 
TrainerOfDolphins ©   (2006-06-20 14:39) [9]


> В [5] в if только Key:=0

Работает!


 
TrainerOfDolphins ©   (2006-06-20 14:42) [10]

БОЛЬШОЕ СПАСИБО Johnmen-у и Плохишу за постоянное участие в моих топиках и неоценимую помощь! :)


 
Плохиш ©   (2006-06-20 15:13) [11]


> TrainerOfDolphins ©   (20.06.06 14:39) [9]

Кстати, может стоит сказать гриду, что он ReadOnly? :-)


 
TrainerOfDolphins ©   (2006-06-21 10:41) [12]

Тоже вариант. Но в этом случае надо переустанавливать это свойство,  каждый раз когда потребуется редактировать данные через грид. Так что [9] подходит как низя лучше. Key:=0 - шесть символов, и грид спит спокойно! :)


 
MsGuns ©   (2006-06-21 10:44) [13]

>Так что [9] подходит как низя лучше.

Этот способ весьма опасный.


 
TrainerOfDolphins ©   (2006-06-21 10:51) [14]

Чем?


 
TrainerOfDolphins ©   (2006-06-22 11:42) [15]

Я мучаюсь догадками :). Чем же это опасно?



Страницы: 1 вся ветка

Текущий архив: 2006.07.09;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.031 c
2-1150873257
logslava
2006-06-21 11:00
2006.07.09
Работа с TBitmap


1-1148903038
pirate
2006-05-29 15:43
2006.07.09
Волшебный Richedit


2-1151048589
zdm
2006-06-23 11:43
2006.07.09
Найти день рождения(MS Access)


6-1141210521
illmar_kelebrant
2006-03-01 13:55
2006.07.09
Почему UDP - services отказываются работать в DLL?


1-1148531047
dimak-2k
2006-05-25 08:24
2006.07.09
Одновременное выделение 2-х ячеек в StringGrid