Как сделать кнопку в паскале нажимаемую мышкой

Обновлено: 07.07.2024

ReadKey - функция, возвращающая символ нажатой клавиши без вывода его на экран. Тип результата – Char. Аргумента у функции нет. Специальные клавиши на клавиатуре (функциональные F1 – F12, управления курсором, Alt, Ctrl и т.д.) генерируют расширенные коды. При нажатии такой клавиши функция ReadKey возвращает сначала нулевой, а затем - расширенный код клавиши.

Пример. Приводимый ниже фрагмент программы показывает, как можно применить функцию для организации итерационных циклов. KeyPressed - функция без аргумента, возвращает значение True (истина), если клавиша нажата, и False (ложь) в противном случае. Символ, соответст-вующий нажатой клавише, остается в буфере клавиатуры. Функция не распознает клавиш перевода регистра (Shift, Alt, NumLock и т.д.). Может исполь-зоваться для организации итерационных циклов. Цикл заканчивается, если нажата любая клавиша. Например, текст программы может завершаться следующим фрагментом:

Пример. Завершение программы. Пример. Пример. Программа выводит на экран код нажатой клавиши.

Программирование на Паскале. Выпуск 9

Работа с мышью. Введение

Мои ближайшие планы: статьи о "неправильном" Паскале, точнее о массивах, длина которых определяется во время выполнении программы, завершить описание объекта, реализующего работу с базой данных, написать статьи о списках и деревьях различных типов, методах сортировки.

Если Вы захотите узнать что-то другое, то пишите. Я обязательно отвечу. Адрес внизу

Сейчас, отвечая на вопрос в гостевой книге , опишу, как в Borland Pascal создавать программы, работающие с мышью.

Писать постараюсь подробнее и не используя, на первых порах, ассемблера. Для тех, кому станет скучно, могу предложить несколько модулей, которые написал тогда, когда сам разбирался, как работает Turbo Vision. В них главное - это объект TCommander, используя который можно писать программы, управляемые событиями. И объект и краткое описание его, а также пример использования, находятся на сайте в виде архива. Их можно скачать. Все это я использовал для обучения объектно-ориентированному программированию школьников.

Программа, работающая с устройством "мышь" в операционной системе MS-DOS, должна использовать прерывание с номером 51 ( в десятичной системе счисления, но привычнее использовать шестнадцатеричное $33). Это специальное прерывание. Оно представляет 36 функций, обеспечивающих настройку устройства "мышь" и его указателя, а также сообщающих информацию о событиях.

  1. номер прерывания;
  2. имя переменной типа REGISTERS.

Правила работы программы с мышью

Сначала нужно проверить поддерживается ли мышь на данной ЭВМ. Для этого используется функция с номером 0. Эта функция проверяет, имеется ли поддержка мыши на данной ЭВМ, и если имеется, то в регистр AX будет записано число $FFFF. Если нет, то 0, но не обязательно. В регистр BX. В него записывается количество кнопок мыши.

  • перемещает указатель мыши в центр экрана;
  • прячет указатель мыши. Для того, чтобы его показать, используется функция с номером 1;
  • очищает "область исключения" перемещения указателя мыши, установленную функцией $10. В пределах это прямоугольной области указатель курсора мыши не виден;
  • устанавливает вид курсора "по умолчанию". Его изменяет функция $0A;
  • разрешает перемещение указателя мыши по всей области экрана. Его ограничивает функция номер 7;
  • устанавливает отображение курсора мыши на первую видеостраницу. Напомню, что в текстовом режиме 8 видеостраниц. Первая имеет номер 0;
  • устанавливает "обычную" скорость перемещения указателя мыши. То есть, на какое расстояние перемещается указатель мыши при движении манипулятора. А также устанавливает значение интервала между "двойными кликами" по умолчанию. (То есть при двойном щелчке манипулятор может переместится немного, но это не считается). Такие параметры изменяются с помощью функции номер $1A.

Внизу находится листинг первой простейшей программы, в которой проверяется, может ли программа получить доступ к мыши. Если "да", то программа входит в цикл, из которого выходит либо по нажатию любой клавиши на клавиатуре, либо по нажатию любой кнопки мыши.

  • бит 0 - если нажата левая кнопка мыши.
    Проверяется: if reg.BX and 1 = 1 then .
    ИЛИ: if reg.BX and 1 <> 0 then .
  • бит 1 - если нажата правая кнопка мыши.
    Проверяется: if reg.BX and 2 = 2 then .
    ИЛИ: if reg.BX and 2 <> 0 then .
  • бит 2 - если нажата центральная кнопка мыши.
    Проверяется: if reg.BX and 4 = 4 then .
    ИЛИ: if reg.BX and 4 <> 0 then .

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

Свои вопросы и предложения присылайте Борису

Мы приглашаем Вас и Ваших друзей к сотрудничеству. Напишите, какая проблема Вас лично интересует - и мы постараемся помочь Вам. Поделитесь со всеми, если Вам удастся найти красивое решение. Присылайте свои программы, и если они хороши, то опубликуем их с обязательным указанием Вашего авторства.

Анатолий, ты всегда одно и тоже пишешь) "могу помочь, но потом") Сначала почитаю, разберусь, а потом помогу))

Андрей Акимов

Андрей Акимов

Илья Кирилюк


Илья Кирилюк ответил Андрею

Андрей, Зачем модуль?
В обычном ABC есть модуль VCL
В PascalABCNET Есть модуль Forms или возможность использования библиотеки System.Windows.Forms.dll
И в обоих есть редактор форм, для создания кнопок.

Андрей Акимов

Илья Кирилюк


Илья Кирилюк ответил Андрею

Андрей, Хм. А не подскажешь какая основа у GraphABC ? В модуле прописан графический элемент управления и при инициализации модуля происходит создание формы и помещение на него этого элемента. А этот самый элемент можно изменять, а на форму кидать кнопки и другое)

begin
MaximizeWindow;
var btword := new ButtonABC(50,125,500,100,'Играть',clWhite);
var btword1 := new ButtonABC(50,325,500,100,'Настройки',clWhite);
var btword2 := new ButtonABC(50,525,500,100,'Правила',clWhite);
var btword3 := new ButtonABC(50,725,500,100,'Выход',clWhite);
end.

Новые вопросы в Информатика

у рівнобедрений трикутник,основа якого дорівнює ь,а бічна сторона а, вписане коло. Розробіть алгоритм і програму для визначення різниці площ трикутник … а і кола. Пояснення: Обчислити площу трикуника за формулой,та радіус вписаного кола. Знайти різницю їх площ.​

Заданий користувачем спосіб появи та зникнення слайда під час презентації – це … Виберіть одну відповідь: візит слайдів політ слайдів перехід слайдів … перегляд слайдів

Виконання переходу між слайдами може відбуватися … Виберіть одну відповідь: хаотично або швидко автоматично або виконуватись користувачем будь-як або … будь-коли чітко і злагоджено

1. Какие арифметические операции вы знаете? 2. Как вычисляется целая часть от деления? 3. Как вычисляется остаток от деления? 4. Как выполняется возв … едение числа в степень?

Які є налаштування появи об’єкта на слайді? Виберіть одну відповідь: a. по додаванню з виходом після виходу b. по вказівці зі слайдом після слайду c. … по бажанню з напрямком після напрямку d. по щелчку з попереднім після попереднього

Растровое изображение имеет размер 256×512 256×512 пикселей и занимает 25 25 Кб памяти. Какое максимально возможное число цветов может быть в пали … тре?​

Читайте также: