|
Вопрос # 4 881/ вопрос решён / |
|
Здравствуйте!
procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char);
if Key=#46 then Stringgrid1.Cells[x,y]:=''
Т.е. суть в том, что если нажата delete, вся ячейка дожна очиститься, независимо от её содержимого. Только вот этого не происходит. Может, не то событие для delete?
|
Вопрос задал: nickel-j (статус: Посетитель)
Вопрос отправлен: 4 января 2011, 18:26
Состояние вопроса: решён, ответов: 1.
|
Ответ #1. Отвечает эксперт: Ixer
Здравствуйте, nickel-j!
Ваша ошибка в том что вы используете событие KeyPress. Оно виполняется все время пока нажата кнопка. Но срабативает только при нажатии кнопок котрым соответствуют ПЕЧАТАЕМЫЕ символы, которым не является Delete (#46). Рекомендую вам использовать событие KeyUp или KeyDown. В таком случае будет перехвативаться и кнопка Delete. Только обратите внимание что здесь кнопка передается числом (word) а не символом, как в KeyPress.
Приложение: Переключить в обычный режим- procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
- Shift: TShiftState);
- begin
- if Key=46 then Stringgrid1.Cells[x,y]:=''
- end;
-
|
Ответ отправил: Ixer (статус: 2-ой класс)
Время отправки: 4 января 2011, 21:13
Оценка за ответ: 5
Комментарий к оценке: Я и предполагал, что в этом косяк, но очень не хотелось рассовывать обработки по разным событиям. Видимо придётся=) Спасибо
|
Мини-форум вопроса
Всего сообщений: 1; последнее сообщение — 4 января 2011, 21:11; участников в обсуждении: 1.
|
Coder2010 (статус: Посетитель), 4 января 2011, 21:11 [#1]:
Отлавливайте событие KeyDown
|
5 января 2011, 14:39: Статус вопроса изменён на решённый (изменил модератор Ерёмин А.А.)
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|