Форум программистов, компьютерный форум, киберфорум
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14

Блокирование клавиатуры

27.03.2013, 13:54. Показов 3516. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток, сообственно вопрос в заголовке темы. Облазал весь интернет, и не нашел нужного материала по блокировке клавиатуры. Функция BlockInput не подходит, так как мне нужно заблокировать только клавиатуры, без мышки, т.е клава заблокировалась, а мышка работает в штатном режиме. Хуки тоже перепробывал, но они ничего не блокируют. Заранее спасибо! Если же Вам интересны, какие у меня намерения насчет блокировки клавиатуры, то я пишу тестирующую прогу по скорости набора текста. Если же пользователь допустил ошибку, клава должна заблокироватся, но при нажати на соответствующую кнопку, клавиатура должна разблокироваться...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
27.03.2013, 13:54
Ответы с готовыми решениями:

Блокирование Button
Привет всем! такой вот вопрос как сделать блокировку кнопки если значение I<30, например если прогрессбар<30 кнопка должна...

Блокирование повтороного создания форм
Подскажите как можно запретить повторное создание экземпляра дочерней формы. Например есть главная форма. На ней грид с подключенной...

Блокирование вычисления суммы при вводе ошибочного символа
По умолчанию Блокирование вычисления суммы при вводе ошибочного символа подскажите пожалуйста как дополнить программу анализом кода...

26
Я не экстрасенс
 Аватар для barbudo59
382 / 339 / 34
Регистрация: 22.01.2013
Сообщений: 1,126
27.03.2013, 14:02
Что если использовать OnKeyPress ?
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14
27.03.2013, 14:14  [ТС]
Можно поподробней с OnKeyPress?
0
Я не экстрасенс
 Аватар для barbudo59
382 / 339 / 34
Регистрация: 22.01.2013
Сообщений: 1,126
27.03.2013, 14:44
Delphi
1
2
3
4
5
6
procedure TForm1.FormKeyPress (Sender: TObject; var Key: Char);
begin
  if <Error> then                             // <Error> - условное обозначение переменной или флага
    if Key=#27 then <Error>:= False   // #27 - клавиша Esc
       else Key := #0;
end;
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14
27.03.2013, 14:58  [ТС]
barbudo59 делаю так:
Если пользователь допустил ошибку то переменной Error(тип у нее boolean) присваиваю true. Дальше по твоему коду
Delphi
1
2
3
if Error then // <Error> - условное обозначение переменной или флага
if Key=#27 then Error:= False // #27 - клавиша Esc
else Key := #0;
Результат: Клавиатура и ввод символов не блокируется, к сожалению...
0
 Аватар для Vavrenyuk
6 / 6 / 1
Регистрация: 01.12.2012
Сообщений: 113
27.03.2013, 15:04
Delphi
1
BlockInput(True);
Блокирует клавиатуру + мышку

Delphi
1
BlockInput(false);
Разблокирует клаву и мышь
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14
27.03.2013, 15:06  [ТС]
Vavrenyuk эта процедура не подойдет, т.к мне нужно заблочить только клаву, а мышку оставить рабочей, для того, чтобы пользователь смог навести на кнопку и нажать на неё, для разблокировки клавиатуры
0
Я не экстрасенс
 Аватар для barbudo59
382 / 339 / 34
Регистрация: 22.01.2013
Сообщений: 1,126
27.03.2013, 15:17
DimonM20, Мой код оформлен как procedure TForm1.FormKeyPress ?
И еще - свойство формы (на которой идет работа) KeyPreview поставить в True.
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14
27.03.2013, 15:21  [ТС]
Да, Ваш код оформлен как procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);

Добавлено через 2 минуты
Свойство KeyPreview поставил true, но это никакого эффекта не дало, клавиатура не блокируется
0
Я не экстрасенс
 Аватар для barbudo59
382 / 339 / 34
Регистрация: 22.01.2013
Сообщений: 1,126
27.03.2013, 15:26
Цитата Сообщение от DimonM20 Посмотреть сообщение
переменной Error
Лучше переименовать, т.к. error может оказаться зарезервированным словом, взять например Er. И включить его в список var в самом начале программы:
Delphi
1
2
3
var
  Form1: TForm1;
  Er1: Boolean;
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14
27.03.2013, 15:30  [ТС]
Переименовал переменную Error в Er1 и объявил ее в разделе описания переменных в самом начале, но это никакого эффекта не дало
0
Я не экстрасенс
 Аватар для barbudo59
382 / 339 / 34
Регистрация: 22.01.2013
Сообщений: 1,126
27.03.2013, 15:34
на строчки
if Er1
if Key:= #27
поставьте точки останова, и проверьте, "заходит" ли туда программа.
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14
27.03.2013, 15:38  [ТС]
Извините, но я не совсем понял, что за точки "останова", если ставлю двоеточие после слова Key дельфя ругается
0
Я не экстрасенс
 Аватар для barbudo59
382 / 339 / 34
Регистрация: 22.01.2013
Сообщений: 1,126
27.03.2013, 16:01
См. картинку. Надо кликнуть мышкой слева от строки кода
Миниатюры
Блокирование клавиатуры  
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14
27.03.2013, 16:11  [ТС]
Сделал все как показано на скрине, скомпилровал проект, как я допустил ошибку при вводе прога остановилась, и слева от строки if Key=#27 then Er1:= False // #27 - клавиша Esc появились красный кружок с галочкой посередине и зеленая стрелочка
0
Я не экстрасенс
 Аватар для barbudo59
382 / 339 / 34
Регистрация: 22.01.2013
Сообщений: 1,126
27.03.2013, 17:02
Все немного не так, как думалось.
В какой элемент формы вводится текст с клавиатуры?
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14
27.03.2013, 17:21  [ТС]
Текст вводится в форму через событие OnKeyUp формы, а введенный текст отображается в label'е
0
Я не экстрасенс
 Аватар для barbudo59
382 / 339 / 34
Регистрация: 22.01.2013
Сообщений: 1,126
27.03.2013, 18:10
У меня заработало, когда ввод текста сделал через OnKeyPress
Delphi
1
2
3
4
5
6
7
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Er1 then
  if Key=#27 then Er1 := False   // #27 - êëàâèøà Esc
    else Key := #0;
Label1.Caption := Label1.Caption+Key;
end;
0
0 / 0 / 0
Регистрация: 27.03.2013
Сообщений: 14
27.03.2013, 18:30  [ТС]
У меня не блокируется ввод в программе, а если не блокировать сам ввод, ну к примеру заблокировать только клавиатуру, если есть пример, или код какой нибудь, который блокирует клаву, поделитесь плиз
0
Я не экстрасенс
 Аватар для barbudo59
382 / 339 / 34
Регистрация: 22.01.2013
Сообщений: 1,126
27.03.2013, 18:49
Высылаю "действующий макет"
Вложения
Тип файла: rar KlvBlock.rar (162.0 Кб, 20 просмотров)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.03.2013, 18:49
Помогаю со студенческими работами здесь

Как сделать блокирование комбинцаии ctrl+alt+delete?
Меня кое-что интересует...Как заблокировать клавиши ctrl+alt+delete через таймер без действия пользователя...блокировку клавиатуры и мыши,...

Блокирование клавиатуры
Всем привет. Работаю над курсовой работой, и есть одна проблема: нужно временно блокировать клавиатуру (вернее между определенными...

Разработать обработчик таймера, который после своей установки подает сигнал на блокирование клавиатуры
Розробити обробник переривань таймера, який після свого встановлення подає сигнал на блокування клавіатури, а потім через 1 хвилину подає...

Блокирование .click()
Подскажите пожалуйста, сам разобраться не могу: есть контейнер, содержащий 9 других контейнеров, каждый из которых содержит еще по 2: ...

Блокирование строки
Добрый день! Есть форма с данными (Ленточные формы), соответственно много записей необходимо заблкировть строки содержащие данные...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru