![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Заменить клик левой кнопки мыши на Ctrl+клик левой кнопки
АндрейК © (2007-11-19 08:58:00)Здравствуйте! Как можно заменить клик левой кнопки мыши на Ctrl+клик левой кнопки мыши?
{RASkov} (2007-11-21 08:58:00) [1]> [19] АндрейК (21.11.07 05:11)
> Да-да! Вы правы! Никогда не делал этого!
А что здесь сложного...
Берешь:
type
TMySuperDBGrid = class(TCustomDBGrid)
procedure KeyDown(); override;
procedure MouseDown(); override;
end;
ну и реализуешь как тебе нужно.... т.е. просто копируешь "старый код" к себе и изменяешь как нужно....
Затем либо регистрируешь свой новый компонент, либо создаешь его в рантайм, либо используешь "подмену"....
АндрейК (2007-11-21 05:11:00) [2]Да-да! Вы правы! Никогда не делал этого!
{RASkov} (2007-11-20 17:52:00) [3]> [17] АндрейК (20.11.07 13:52)
:)
Вот с переопределением кнопок клавиатуры мы обошлись без наследника, ну а здесь....
делай наследника TCustomDBGrid'а в котором и мышь обрабатывай как тебе нужно и клавиатуру заодно)
ЗЫ Мы боимся сделать наследника? Мы лучше кучу винапи задействуем.... хуки всякие.... а наследника делать не будем, так?
АндрейК (2007-11-20 13:52:00) [4]Кто-нибудь знает как можно заменить клик левой кнопки мыши на Ctrl+клик левой кнопки мыши?
АндрейК (2007-11-20 10:04:00) [5]Так всетаки как можно заменить клик левой кнопки мыши на Ctrl+клик левой кнопки мыши?
АндрейК (2007-11-19 13:33:00) [6]Спасибо Reindeer Moss Eater! А как теперь отключить мышь? Ведь при щелчке выделение снимается со всех записей!
Reindeer Moss Eater (2007-11-19 13:04:00) [7]Key := 0 и руками DataSet.Next
И не надо никакого наследника.
{RASkov} (2007-11-19 12:58:00) [8]> [12] АндрейК (19.11.07 12:40)
> каким образом?
Посмотри на строчку
if (Key in RowMovementKeys) then ClearSelection;
в методе TCustomDBGrid.KeyDown и подумай...
т.е. тебе нужен наследник TCustomDBGrid'а с переопределенным методом KeyDown и возможно еще чего....
АндрейК (2007-11-19 12:40:00) [9]
> Осталось отключить стандартное поведение DBGrida, нафиг
> сбрасывающего SelectedRows, при обычном движении по грицу.
>
каким образом?
Reindeer Moss Eater (2007-11-19 10:57:00) [10]Все тот же OnKeyDown
ЮЮ (2007-11-19 10:55:00) [11]> [9] Reindeer Moss Eater © (19.11.07 10:52)
> Ну так а в чем проблемы-то?
> У грида есть OnKeyDown и есть SelectedRows
Осталось отключить стандартное поведение DBGrida, нафиг сбрасывающего SelectedRows, при обычном движении по грицу.
Reindeer Moss Eater (2007-11-19 10:52:00) [12]Ну так а в чем проблемы-то?
У грида есть OnKeyDown и есть SelectedRows
АндрейК (2007-11-19 10:49:00) [13]Вот именно так реализованно в Парусе! Они на нем работают, так им и хочется!
Reindeer Moss Eater (2007-11-19 10:29:00) [14]Правильно так, как будет привычнее и понятнее пользователю.
АндрейК (2007-11-19 10:25:00) [15]А как правильно извращаться то? я хочу сделать чтобы пробелом можно было выделять и снимать выдиление с записей, А когда щелкаешь мышкой или перемещаешься стрелками вверх и вниз - выделение не снималось.
Reindeer Moss Eater (2007-11-19 10:07:00) [16]Хочешь изврата - извращайся правильным способом.
Меня когда-то просили сделать выделение записей в гриде так, как делается выделение файлов в проводнике. Что и было сделано.
Anatoly Podgoretsky (2007-11-19 10:00:00) [17]> Reindeer Moss Eater (19.11.2007 09:58:03) [3]
А еще и снимать надо как-то
Reindeer Moss Eater (2007-11-19 09:58:00) [18]Мудро. А если юзер хочет просто сменить текущую запись по клику мыши и выделять запись ему вовсе не надо?
АндрейК (2007-11-19 09:54:00) [19]Что-бы в DBGrid можно было выделять записи не удерживая ctrl. Или можно по другому как-то сделать? я хочу сделать чтобы пробелом можно было выделять записи, и когда щелкаешь мышкой или перемещаешься стрелками вверх и вниз - выделение не снималось.
Anatoly Podgoretsky (2007-11-19 09:08:00) [20]> АндрейК (19.11.2007 08:58:00) [0]
А зачем?