Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Внизприцепить PopupMenu к DBGrid Найти похожие ветки
← →
Павел (2004-10-12 23:37) [0]Всем привет.
Хочу присоединить PopupMenu к DBGrid (или к форме), чтобы при нажатии клавиши Del удалялась текущая запись. Проблема в том, что когда редактируешь поле в DBGrid, нажатие на Del приводит к удалению записи вместо удаления символа в редактируемом поле.
Это связано с тем, что обработчик PopupMenu раньше обрабатывает событие нажатия клавиши и до DBGrid оно не доходит. Как быть ?
Спасибо.
← →
KSergey © (2004-10-13 07:11) [1]В начало обработчика PopUp всунуть по вкусу одну из строк (накидал что пришло на ум, не провкерял):
if DBGrid1.EditorMode then Exit;
if DataSet1.State in [dsEdit, dsInsert] then Exit;
Думаю что-то подобное можно еще придумать.
← →
Павел (2004-10-13 10:07) [2]Дело в том, что я примерно так и сделал, но нажатие на Del будет обрабатывать мой обработчик и это событие не дойдет до DBGrid, то есть при редактирования поля эта клавиша не работает. Можно в обработчике устанавливать код горячей клавиши в 0, а при выходе из состояния dsEdit обратно восстанавливать, но это похоже на "колбасные заводы" :-)
Я уверен, что существует более красивое решение. Я не совсем разбираюсь в событиях и их обработке, именно здесь нужно искать ответ.
Может у кого-нибудь есть готовое решение ?
← →
ЮЮ © (2004-10-13 10:17) [3]>Проблема в том, что когда редактируешь поле в DBGrid, нажатие на Del приводит к удалению записи вместо удаления символа в редактируемом поле.
>но нажатие на Del будет обрабатывать мой обработчик и это событие не дойдет до DBGrid, то есть при редактирования поля эта клавиша не работает
Так что же из сказанного автором правда?
← →
Плохиш © (2004-10-13 10:34) [4]Непонятно, использовать PopupMenu чтобы обработать Del :-| Может лучше почитать про события DBGrid OnKeyDown/OnKeyUp?
← →
Fedia © (2004-10-13 10:38) [5]ЮЮ © (13.10.04 10:17) [3]
И то и другое.
>но нажатие на Del будет обрабатывать мой обработчик и это событие не дойдет до DBGrid, то есть при редактирования поля эта клавиша не работает
Здесь имеется в виду обработчик PopupMenu, удаляющий текущую запись.
Я так понял.
← →
Павел (2004-10-13 10:39) [6]> Так что же из сказанного автором правда?
А в чем противоречие ? Нажатие на клавишу Del обрабатывает PopupMenu независимо от того редактирую я поле DBGrid или нет.
← →
ЮЮ © (2004-10-13 10:47) [7]"нажатие на Del приводит к удалению записи вместо удаления символа в редактируемом поле" тебе в коде и предложили проверить наличие Inplace Editot-а (DBGrid1.EditorMode) и не удалять запись, а удалить текст в редакторе (если уж привязался к символу, используемому при вводе с клавиатуры).
З.Ы. Не зря же в самом гриде для удаления используют Ctrl + Del
← →
Павел (2004-10-13 10:47) [8]> Здесь имеется в виду обработчик PopupMenu, удаляющий текущую запись.
> Я так понял.
Да, все правильно.
> Непонятно, использовать PopupMenu чтобы обработать Del :-|
Идея следующая: хочу, чтобы при:
1) нажатии на TButton или
2) выбора пункта меню или
3) нажатии Del
происходило удаление записи, то же самое и для удаления/редактирования записи.
← →
Павел (2004-10-13 10:49) [9]прошу прощения, строку:
> то же самое и для удаления/редактирования записи.
нужно читать так:
то же самое и для вставки/редактирования записи.
← →
Fedia © (2004-10-13 10:58) [10]А ведь тебе дельный совет дают. В обработчике PopupMenu пропиши:
if not DBGrid1.EditorMode then
Table1.Delete; //здесь компонент доступа к данным
← →
Павел (2004-10-13 12:09) [11]> А ведь тебе дельный совет дают. В обработчике PopupMenu пропиши:
> if not DBGrid1.EditorMode then
> Table1.Delete; //здесь компонент доступа к данным
Я же об этом уже говорил, событие НЕ ДОХОДИТ до DBGrid (независимо от того, что находится в обработчике, я надеюсь, что это и так понятно). Это значит, что в обработчике мне нужно будет удалять символ (или выделенный текст), который находится в TField. Это нехороший способ, т.к. DBGrid сам умеет реагировать на нажатие клавиш.
← →
Fedia © (2004-10-13 12:09) [12]To Павел.
Понял тебя только после того, как сам попробовал. За предыдущий post извиняюсь. Раз никто больше ничего не посоветовал, то наверное более красивого решения нет, хотя надежда умирает последней.
← →
ЮЮ © (2004-10-13 12:29) [13]А почему бы и [File] повесить не на Alf + F, а просто на F - пусть юзер помучается. Если хочется пользоватедю удалять стоку через Popup, а не через Ctrl + Del - ради бога, нор зачем ассоциировать этот пункт с практически "символом", вводдимым с клавматуры ???
P/S. Кстати, а если убирать эту ассоциацию при переходе в DBGrid1.EditorMode и восстанавливать при выходе?
← →
Павел (2004-10-13 17:16) [14]Я отказался использовать PopupMenu с DBGrid, переделаю форму по другому :-)
Всем большое спасибо.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.04 c