사용자가 마우스 클릭으로 선택하면 프로 시저를 실행해야합니다.사용자가 마우스로 클릭 한 후 프로 시저를 실행하는 방법 [파스칼]
프로그램이 표시됩니다 :
소수점 이진
바이너리 진수로
종료
사람이 다음 진수 바이너리에 경우이 절차를 dectobin 실행 후 이진에 진수를 클릭하면 bintodec 프로 시저를 실행하고 Exit를 클릭하면 프로그램이 종료됩니다.
메뉴 프로 시저가 실행 된 후이를 작동 시키려면 IF 문을 입력해야합니까?
program menu_with_mouse;
uses crt,mouse,mmsystem;
var n: byte;
var menu_element: array [1..3] of string;
var selected_one_element: boolean;
var mouse_on_element: byte;
procedure Menu;
var sel_el_nr: byte;
Event: TMouseEvent;
begin
menu_element[1] := 'decimal -> binary';
menu_element[2] := 'binary -> decimal';
menu_element[3] := 'Exit';
mouse_on_element := 1;
for n := 1 to 3 do
begin
if n = mouse_on_element then textcolor(green)
else textcolor(LightGray);
writeln(menu_element[n]);
end;
sel_el_nr := 0;
InitMouse;
Repeat
GetMouseEvent(Event);
mouse_on_element := GetMouseY+1;
for n := 1 to 3 do
begin
if (n = mouse_on_element) and
(GetMouseX < length(menu_element[n])) then textcolor(green)
else textcolor(LightGray);
writeln(menu_element[n]);
end;
With Event do
If (Buttons=MouseLeftbutton) and (Action=MouseActionDown) then
begin
if mouse_on_element <= 3 then
selected_one_element := true;
end;
Until ((Event.Buttons=MouseLeftbutton) and (Event.Action=MouseActionDown))
and selected_one_element;
DoneMouse;
end;
procedure dectobin;
var dec: integer;
x: char;
bin: string;
begin
clrscr;
readln(dec);
repeat
if (dec mod 2 = 0) then bin:='0'+bin
else bin:='1'+bin;
dec:= dec div 2;
until dec = 0;
writeln(bin);
readln;
end;
BEGIN
clrscr;
Menu;
readln;
END.
비디오/마우스/키보드 장치는 이미 * nix의 ncurses/terminfo와 인터페이스한다. OP는 이미 마우스를 사용하고 있으며 다른 두 개를 더 잘 사용합니다 (기존 Crt는 사용하지 마십시오). Free Pascal과 함께 제공되는 tetris 및 samegame 콘솔 데모를보십시오. 같은 게임은 마우스로 작동합니다. –