Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 4 745

/ вопрос открыт /

Доброго времени суток, уважаемые эксперты!

Скажите, пожалуйста, как в StringGrid в SelectCell определить нажата ли клавиша Shift?

GetKeyState(VK_CONTROL) < 0 работает, а GetKeyState(VK_SHIFT) < 0 - нет...

ilnur Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: ilnur (статус: Посетитель)
Вопрос отправлен: 18 ноября 2010, 00:06
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: VJe@n

отлавливать в OnKeyDown
вроде так:
procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if ssShift in Shift then begin
// ... code
end;
end;

Ответ отправил: VJe@n (статус: 1-ый класс)
Время отправки: 18 ноября 2010, 03:27
Оценка за ответ: 4

Комментарий к оценке: Спасибо, я в курсе этого способа, но мне надо было в SelectCell...

Ответ #2. Отвечает эксперт: min@y™

Событие TStringGrid.OnSelectCell предназначено не для этого. Используй OnMouseDown и/или OnMouseUp, в них есть параметр Shift: TShiftState.

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 18 ноября 2010, 08:27
Оценка за ответ: 5

Комментарий к оценке: Спасибо, я знаю, меня это интересовало,чтобы обработать выделение с удержанием shift, похоже SelectCell при удержании shift вообще не работает, OnMouseDown и/или OnMouseUp происходят после SelectCell.

Мини-форум вопроса

Всего сообщений: 4; последнее сообщение — 18 ноября 2010, 09:39; участников в обсуждении: 3.
ilnur

ilnur (статус: Посетитель), 18 ноября 2010, 00:09 [#1]:

... GetAsyncKeyState(VK_SHIFT) < 0 также не работает...
Ерёмин А.А.

Ерёмин А.А. (статус: *Администратор), 18 ноября 2010, 09:23 [#2]:

ilnur: возможно, будут работать VK_LSHIFT и VK_RSHIFT.
ilnur

ilnur (статус: Посетитель), 18 ноября 2010, 09:30 [#3]:

Спасибо Еремин А.А! С утра я еще не включал комп с Дельфи, но как помню с вечера, по последним своим наблюдениям, при нажатии и удержании Shift SelectCell вообще не работает...
min@y™

min@y™ (статус: Доктор наук), 18 ноября 2010, 09:39 [#4]:

Цитата (min@y™):

OnMouseDown и/или OnMouseUp происходят после SelectCell.

Всё правильно, поэтому пользуйся OnMouseDown и/или OnMouseUp и будет всё в шоколаде.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:39
Выполнено за 0.02 сек.