Главная страница
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.052 c
4-1143884265
Malik
2006-04-01 13:37
2006.07.09
Прописание программы в автозагрузку после первого включения


2-1151117389
gamebit3000
2006-06-24 06:49
2006.07.09
Не получается связать несколько БД и сделать их поля вычисляемыми


4-1143800767
Stanislav
2006-03-31 14:26
2006.07.09
Использование CreateThread


2-1150865087
mctarik
2006-06-21 08:44
2006.07.09
Как передать строку в коммандную строку...


2-1150964585
D@Nger
2006-06-22 12:23
2006.07.09
Не получается установить RxLib