Как сделать меню на паскале? - 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. В нем используются следующие переменные:

  1. PositionX и PositionY - координаты мыши на экране (word).
  2. MouseInstalled - флаг, указывающий, была ли мышь установлена (boolean).
  3. MouseMoved - флаг, указывающий, перемещалась ли мышь (boolean).
  4. GetMouse - процедура получения координат мыши (boolean).
  5. SetMouseRange - функция установки диапазона координат мыши (boolean). Функция MouseInstalled реализована в виде ассемблерной вставки, которая возвращает значение true, если мышь установлена, и false в противном случае. Функция MouseMoved также реализована в виде ассемблерной вставки, которая проверяет, были ли изменены координаты мыши (PositionX и PositionY). Если координаты не менялись, то функция возвращает false, иначе - true. Процедура GetMouse также реализована в виде ассемблерной вставки. Она получает координаты мыши и сохраняет их в переменных PositionX и PositionY. Функция SetMouseRange позволяет установить диапазон координат мыши. Она принимает два аргумента - x и y, которые представляют собой желаемые координаты мыши. Функция использует ассемблерные вставки для сохранения значений x и y в регистрах ax и dx, соответственно. Затем она вызывает функцию int 33h, которая имитирует нажатие клавиши для изменения положения мыши. После этого функция возвращает значение true, если операция была успешной, и false в противном случае.

Оцени полезность:

8   голосов , оценка 3.75 из 5
Похожие ответы