1. Заголовок темы должен быть информативным. В противном случае тема удаляется ... 2. Все тексты программ должны помещаться в теги [code=pas] ... [/code]. 3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали! 4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора). 5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM! 6. Одна тема - один вопрос (задача) 7.Проверяйте программы перед тем, как разместить их на форуме!!! 8.Спрашивайте и отвечайте четко и по существу!!!
Ну, подходящего-то и не будет, каждая задача пишется под определенные требования, то, что выкладывалось здесь - оно соответствовало требованиям задающих вопрос, а не твоим. Вот ты и расскажи, чего ты требуешь от программы, чем можно пользоваться (ООП? Процедурные/функциональные типы? Другие расширенные средства языка?), а не так: "мне тут ничего не подошло, помогите". Что "помогите"? Что дальше будет делать твоя программа? Ну, нарисую я кнопку, ну, нажмешь ты ее (вопрос на засыпку: ЧЕМ? Мышью? Enter-ом? Какой-то определенной комбинацией клавиш?), вылезет меню. Что дальше? Меню, оно как бы тоже должно что-то делать, правда?
Начать объяснение необходимой тебе функциональности неплохо было бы с того, тебе вообще это все в текстовом или в графическом режиме надо?
Язык Турбо Паскаль! Думаю это каждому понятно ведь зачем создавать тему в форуме паскаля, если вопрос не по нём???
Мне нужно что-бы вы помогли мне только с кнопкой, а точнее что-бы когда я жму на неё левой кнопкой мыши что-бы вылезло меню...
теперь все поняли мой вопрос?
Добавлено через 3 мин.
Unit EgaMouse;
{*******************************************************************} {* *} {* EgaMouse - EGA Mouse Unit *} {* *} {* version 1.0, 02/02/88 *} {* by Eduardo Martins 73300,267 *} {* *} {* based on Mouse4 *} {* version .9, 11/20/87 *} {* by Richard Sadowsky 74017,1670 *} {* *} {* thanks to John Sierasky for helping me out *} {* with function CursorShape (mouse function 9) *} {* *} {* released to the public domain *} {* *} {*******************************************************************} {* *} {* Version 2.0, 3/14/88 *} {* Modifications by Lew Paper *} {* *} {* *} {* 1. The original five cursor types came from the Microsoft *} {* Mouse manual. I changed the unit so that each one has its *} {* own hot spot, as located in the Microsoft Mouse manual. *} {* *} {* 2. I added the extra error checking which the Microsoft *} {* Mouse manual recommends in Procedure InitMouse. If the *} {* mouse interrupt ($33) does not point to a valid location, *} {* InitMouse sets Mouse_Error to 1 and Mouse_Installed to FALSE. *} {* *} {* 3. I moved a lot of variables from the INTERFACE to the *} {* IMPLEMENTLATION because they are none of the calling program's *} {* business. *} {* *} {*******************************************************************}
var Mouse_Installed : Boolean; Mouse_Error : Word;
function InitMouse : Word; { Function 0 - Initialize mouse software and hardware }
procedure ShowMouse; { function 1 - show mouse cursor }
procedure HideMouse; { function 2 - hide mouse cursor }
function MousePosition(var MouseX,MouseY : Word) : Word; { function 3 - return mouse position and button status } { X and Y values scaled for 640 x 350 EGA mode }
procedure SetMousePosition(mousex, mousey: Word); { function 4 - sets mouse position } { X and Y values scaled for 640 x 350 EGA mode }
function MousePress(button: Word; var count, lastx, lasty: Word): Word; { function 5 - gets button press information } { X and Y values scaled for 640 x 350 EGA mode }
function MouseRelease(button: Word; var count, lastx, lasty: Word): Word; { function 6 - gets button release information } { X and Y values scaled for 640 x 350 EGA mode }
procedure SetMouseXY(x1,y1,x2,y2: Word); { functions 7 and 8 - sets min/max values for horizontal/vertical } { X and Y values scaled for 640 x 350 EGA mode }
procedure RestoreMouseXY; { functions 7 and 8 - restores min/max values for CGA screen }
procedure CursorShape(Shape: integer); { function 9 - sets the graphics cursor shape }
procedure SetPixeltoMickey(Horiz,Verti : Word); { function 15 - sets the mickey to pixel ratio }
implementation
VAR Mouse_Reg : Registers;
function InitMouse : Word; { Function 0 - Initialize mouse software and hardware }
CONST IRET = $CF;
VAR MouseInterrupt: ^Byte ABSOLUTE 0:$CC; {4 * $33 = $CC}
begin IF MouseInterrupt = NIL THEN InitMouse := 1 ELSE IF MouseInterrupt^ = IRET THEN InitMouse := 1 ELSE BEGIN with Mouse_Reg do Ax := 0; Intr($33,Mouse_Reg); InitMouse := Mouse_Reg.Ax END; end;
procedure ShowMouse; { function 1 - show mouse cursor }
begin Mouse_Reg.Ax := 1; Intr($33,Mouse_Reg); end;
procedure HideMouse; { function 2 - hide mouse cursor }
begin Mouse_Reg.AX := 2; Intr($33,Mouse_Reg); end;
function MousePosition(var MouseX,MouseY : Word) : Word; { function 3 - return mouse position and button status } { X and Y values scaled for 640 x 350 EGA mode }
begin Mouse_Reg.Ax := 3; Intr($33,Mouse_Reg); with Mouse_Reg do begin MouseX := Succ(Cx); MouseY := Succ(Dx); MousePosition := Bx; end; end;
procedure SetMousePosition(mousex, mousey: Word); { function 4 - sets mouse position } { X and Y values scaled for 640 x 350 EGA mode }
begin Mouse_Reg.ax:=4; Mouse_Reg.cx:=Pred(mousex); Mouse_Reg.dx:=Pred(mousey); intr($33,Mouse_Reg); end;
function MousePress(button: Word; var count, lastx, lasty: Word): Word; { function 5 - gets button press information } { X and Y values scaled for 640 x 350 EGA mode }
function MouseRelease(button: Word; var count, lastx, lasty: Word): Word; { function 6 - gets button release information } { X and Y values scaled for 640 x 350 EGA mode }
procedure SetMouseXY(x1,y1,x2,y2: Word); { functions 7 and 8 - sets min/max values for horizontal/vertical } { X and Y values scaled for 640 x 350 EGA mode }
begin Mouse_Reg.ax:=7; Mouse_Reg.cx:=Pred(x1); Mouse_Reg.dx:=Pred(x2); intr($33,Mouse_Reg); Mouse_Reg.ax:=8; Mouse_Reg.cx:=Pred(y1); Mouse_Reg.dx:=Pred(y2); intr($33,Mouse_Reg); end;
procedure RestoreMouseXY; { functions 7 and 8 - restores min/max values for EGA screen }
begin Mouse_Reg.ax:=7; Mouse_Reg.cx:=0; Mouse_Reg.dx:=639; intr($33,Mouse_Reg); Mouse_Reg.ax:=8; Mouse_Reg.cx:=0; Mouse_Reg.dx:=349; intr($33,Mouse_Reg); end;
procedure CursorShape(Shape:integer); { function 9 - sets the graphics cursor shape }
TYPE CursorType = RECORD Mask : ARRAY[0..1, 0..15] OF WORD; HorizontalHotSpot: WORD; VerticalHotSpot : WORD; END;