Модераторы: Poseidon, Snowy, bems, MetalFan

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Изменение Мульти-выделения в DBGrid, на правую кнопку мыши 
:(
    Опции темы
Cashey
Дата 11.9.2003, 15:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



Кто подскажет (точнее кто знает smile.gif ) как изменить комбинацию клавиш в DBGrid с стандартной (Ctrl + mbLeft) на правую кнопку мыши, при выделении нескольких записей (dgMultiSelect)? Заранее спасибо.


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
Akella
Дата 12.9.2003, 08:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Используй компонент DBGridEh, для жителей бывшего СССР этот компонент бесплатный. Где скачать? Поищи на форуме, здесь есть поиск. Я не сторонник "нестандартных" компонентов для Delphi, но этот компонент того стоит.
PM MAIL   Вверх
Cashey
Дата 12.9.2003, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бессмертный
****


Профиль
Группа: Завсегдатай
Сообщений: 3441
Регистрация: 13.11.2002
Где: в столице

Репутация: 2
Всего: 60



Я тоже не любитель "нестандартных" компонентов и EhLib не исключение. У этого грида глюки с канвой и рефрешируется плохо. Но, и без этого у него MultiSelect такой же как и в стандартном (Ctrl + mbLeft) . Что не является решением проблемы. Или я что-то не так настроил...?


--------------------
библия учит любить ближнего, а камасутра обучает как именно
PM Jabber   Вверх
p0s0l
Дата 12.9.2003, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Попробуй так:
Код
procedure TfrmMain.dbg1MouseUp(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
var
 crd : TGridCoord;
begin
 if Button = mbRight then
 begin
   crd := dbg1.MouseCoord(x, y);
   dbg1.SelectedIndex := crd.Y;
   dbg1.SelectedRows.CurrentRowSelected := not dbg1.SelectedRows.CurrentRowSelected;
 end;
end;

Или можно на MouseMove повесить, чтобы еще выделялось, когда водишь мышью по записям с нажатой правой кнопкой.
Тогда там еще прибавиться строчек 5...



--------------------
С уважением, г-н Посол.
PM   Вверх
x77
Дата 12.9.2003, 14:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



2 p0s0l: не будет оно работать. хотя бы потому, что при включенном dgMultiSelect выделение производится при нажатии на кнопку, а не отпускании (кстати, при нажатом Ctrl можно выделять записи как левой, так и правой кнопкой мыши, так что особого смысла в
Код
if Button = mbRight then...
я лично не вижу. твой код в любом случае оставит возможность выделять записи по Ctrl+mbLeft, но я сильно сомневаюсь, что он будет делать что-то осмысленное по одному только правому клику.

в subj. мне кажется, что самый грамотный вариант, это вести свой список и при отрисовке подсвечивать его как угодно.



--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Akella
Дата 12.9.2003, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



Цитата
. У этого грида глюки с канвой и рефрешируется плохо.

!!!А более конкретно.
У меня пока все нормально. Нельзя ли поподробнее.
PM MAIL   Вверх
p0s0l
Дата 12.9.2003, 14:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



x77, ну насчет того как убрать Ctrl_mbLeft я подумаю, но ты так категорично заявляешь что это не работает - теперь я проверил - все работает, смущает только то, что цвет выбранной строки совпадает с цветом выделения - из-за этого непонятно, выделена текущая строчка или нет, но по индикатору слева видно, что все работает. правда, оказалось можно легче:
Код
procedure TfrmMain.dbg1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button = mbRight then
  dbg1.SelectedRows.CurrentRowSelected := not dbg1.SelectedRows.CurrentRowSelected;
end;


А насчет отпускания и нажатия - событие MouseDown вообще НИКОГДА не вызывается, что как-то странно. Поэтому пришлось вешать на MouseUp...



--------------------
С уважением, г-н Посол.
PM   Вверх
p0s0l
Дата 12.9.2003, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Всё! Теперь Ctrl+MouseClick не действует.
Код
procedure TfrmMain.dbg1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
 if (Button = mbRight) or (ssCtrl in Shift) then
 dbg1.SelectedRows.CurrentRowSelected := not dbg1.SelectedRows.CurrentRowSelected;
end;

Правда, если включен индикатор слева, то видно, что на какую-то долю секунды строчка временно выделяется...



--------------------
С уважением, г-н Посол.
PM   Вверх
x77
Дата 12.9.2003, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



проверил. не работает smile.gif. и не должен работать smile.gif . ни с нажатым Ctrl, ни с отпущенным. выделяет одну строку, при щёлканьи на другой - предыдущее выделение сбрасывается.

З.Ы.
насчёт категоричности - каюсь, прости засранца smile.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
p0s0l
Дата 12.9.2003, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Дак ты наверное левой кнопкой щелкал ?smile.gif
Или мультиселект не врубил ?


Это сообщение отредактировал(а) p0s0l - 12.9.2003, 15:00


--------------------
С уважением, г-н Посол.
PM   Вверх
x77
Дата 12.9.2003, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



ээээ, батенька, мы говорим о разных вещах. в сабже сказано, что требуется "изменить комбинацию клавиш в DBGrid с стандартной (Ctrl + mbLeft) на правую кнопку мыши". как я понимаю, одну только правую кнопку. без Ctrl. поэтому я и говорил, что оно не работает (с точки зрения постановки задачи).


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 12.9.2003, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



и модифицированный вариант тоже работать не будет smile.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
x77
Дата 12.9.2003, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



он, собственно, и с Ctrl работать не будет. будет выделяться только одна запись smile.gif


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
p0s0l
Дата 12.9.2003, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Цитата
"изменить комбинацию клавиш в DBGrid с стандартной (Ctrl + mbLeft) на правую кнопку мыши". как я понимаю, одну только правую кнопку. без Ctrl.

Я именно так и понял - так и работает...
И всякие оптионсы и проперти менял - всегда работает, если только не включить MultiSelect...
Кинь мне на мыло свою тестовую прогу (исходник) - я гляну.


--------------------
С уважением, г-н Посол.
PM   Вверх
x77
Дата 12.9.2003, 15:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1255
Регистрация: 25.3.2002

Репутация: 19
Всего: 22



ну, с отключенным MultiSelect вообще нифига не работает, а со включенным - выделяется текущая запись, при клике на следующую - выделяется следующая (с первой выделение снимается). Delphi 5.0/Win XP Pro.


--------------------
Я никогда не сопротивлялся искушению, поскольку узнал: что мне
не нравится, то меня не искушает.
© Джордж Бернард Шоу (Ирландия)
PM MAIL ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0898 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.