Как сделать меню на паскале? - Turbo Pascal
Формулировка задачи:
Не нашел нигде даже намека на то, как сделать кнопку на паскале, может кто подскажет? Мне нужно написать программу с вводом данных и выводом таблиц, остальное все понятно, но застрял на меню. Достаточно намека как сделать пустую кнопку при нажатии на которую например выходит сообщение "Привет"...
Решение задачи: «Как сделать меню на паскале?»
textual
Листинг программы
UNIT Mouse; Interface Var PositionX : word; PositionY : word; Function MouseInstalled : boolean; Function MouseMoved : boolean; Procedure GetMouse; Function SetMouseRange(x,y:word):boolean; Implementation Function MouseInstalled : boolean;assembler; asm mov ax,0 int 33h End; Function MouseMoved : boolean; assembler; asm mov ax,3 int 33h cmp PositionX,cx jnz @@ItMoved cmp PositionY,dx jnz @@ItMoved mov ax,FALSE ret @@ItMoved: mov ax,TRUE ret End; Procedure GetMouse;assembler; Asm mov ax,3 int 33h mov PositionX,cx mov PositionY,dx End; Function SetMouseRange(x,y:word):boolean;assembler; Asm mov ax,0007h mov cx,0 mov dx,x int 33h mov ax,0008h mov cx,0 mov dx,y int 33h End; END.
Объяснение кода листинга программы
Данный код представляет собой пример создания меню на языке Turbo Pascal. В нем используются следующие переменные:
- PositionX и PositionY - координаты мыши на экране (word).
- MouseInstalled - флаг, указывающий, была ли мышь установлена (boolean).
- MouseMoved - флаг, указывающий, перемещалась ли мышь (boolean).
- GetMouse - процедура получения координат мыши (boolean).
- SetMouseRange - функция установки диапазона координат мыши (boolean). Функция MouseInstalled реализована в виде ассемблерной вставки, которая возвращает значение true, если мышь установлена, и false в противном случае. Функция MouseMoved также реализована в виде ассемблерной вставки, которая проверяет, были ли изменены координаты мыши (PositionX и PositionY). Если координаты не менялись, то функция возвращает false, иначе - true. Процедура GetMouse также реализована в виде ассемблерной вставки. Она получает координаты мыши и сохраняет их в переменных PositionX и PositionY. Функция SetMouseRange позволяет установить диапазон координат мыши. Она принимает два аргумента - x и y, которые представляют собой желаемые координаты мыши. Функция использует ассемблерные вставки для сохранения значений x и y в регистрах ax и dx, соответственно. Затем она вызывает функцию int 33h, которая имитирует нажатие клавиши для изменения положения мыши. После этого функция возвращает значение true, если операция была успешной, и false в противном случае.