IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

 
 Ответить  Открыть новую тему 
> Создание кнопки + меню, (переименовано)
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Всем привет!
Можете написать пожалуйста пример кнопки, что-бы когда нажать на неё вылезло меню.
Зарание спасибо! smile.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #2


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата(Yavrik @ 30.10.2009 15:09) *

Можете написать пожалуйста пример кнопки, что-бы когда нажать на неё вылезло меню.

Ты об F10?
А вообще - смотри


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #3





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Нет...
Написать кнопку, и когда жать на неё что-бы вылезло меню.
У меня есть модуль для работы с мышкой, мне нужно написать кнопку. Когда нажать на неё что-бы вылезло меню.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #4


Знаток
****

Группа: Пользователи
Сообщений: 346
Пол: Мужской
Реальное имя: Иван

Репутация: -  7  +


Цитата(Yavrik @ 30.10.2009 16:04) *

Нет...
Написать кнопку, и когда жать на неё что-бы вылезло меню.
У меня есть модуль для работы с мышкой, мне нужно написать кнопку. Когда нажать на неё что-бы вылезло меню.

А причем тут тогда теория паскаля? Явно розделом промазал...


--------------------
Считающий себя единственым здравомыслящим человеком сумасшедший? Если да, возможно я псих...
Пусть умолкнет всякий критик!
Я - системный аналитик!
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Извните что промазал smile.gif

мне нужно на паскале эту кнопку написать
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #6


Гость






В поиске был? Я лично как минимум два варианта выкладывал, APAL выкладывал тоже пару штук...

(тему переношу в "Задачи")
 К началу страницы 
+ Ответить 
сообщение
Сообщение #7





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


В поиске иска. Ничего подходящего не нашёл sad.gif
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #8


Гость






Ну, подходящего-то и не будет, каждая задача пишется под определенные требования, то, что выкладывалось здесь - оно соответствовало требованиям задающих вопрос, а не твоим. Вот ты и расскажи, чего ты требуешь от программы, чем можно пользоваться (ООП? Процедурные/функциональные типы? Другие расширенные средства языка?), а не так: "мне тут ничего не подошло, помогите". Что "помогите"? Что дальше будет делать твоя программа? Ну, нарисую я кнопку, ну, нажмешь ты ее (вопрос на засыпку: ЧЕМ? Мышью? Enter-ом? Какой-то определенной комбинацией клавиш?), вылезет меню. Что дальше? Меню, оно как бы тоже должно что-то делать, правда?

Начать объяснение необходимой тебе функциональности неплохо было бы с того, тебе вообще это все в текстовом или в графическом режиме надо?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #9





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Язык Турбо Паскаль! Думаю это каждому понятно smile.gif ведь зачем создавать тему в форуме паскаля, если вопрос не по нём???

Мне нужно что-бы вы помогли мне только с кнопкой, а точнее что-бы когда я жму на неё левой кнопкой мыши что-бы вылезло меню...

теперь все поняли мой вопрос?

Добавлено через 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. *}
{* *}
{*******************************************************************}

Interface

Uses DOS;

const
LEFTPRESS = 2;
LEFTREL = 4;
RIGHTPRESS = 8;
RIGHTREL = 16;

Standard = 1;
PointingHand = 2;
HourGlass = 3;
DiagCross = 4;
CheckMark = 5;



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 }

begin
Mouse_Reg.ax:=5;
Mouse_Reg.bx:=button;
intr($33,Mouse_Reg);;
mousepress:=Mouse_Reg.ax;
count:=Mouse_Reg.bx;
lastx:=Succ(Mouse_Reg.cx );
lasty:=Succ(Mouse_Reg.dx );
end;

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 }

begin
Mouse_Reg.ax:=6;
Mouse_Reg.bx:=button;
intr($33,Mouse_Reg);;
mouserelease:=Mouse_Reg.ax;
count:=Mouse_Reg.bx;
lastx := Succ(Mouse_Reg.cx );
lasty := Succ(Mouse_Reg.dx );
end;

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;

CONST

Hand: CursorType =
(
Mask: (($E1FF,$E1FF,$E1FF,$E1FF,$E000,$E000,$E000,$0000,
$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000),

($1E00,$1200,$1200,$1200,$13FF,$1249,$1249,$F249,
$9001,$9001,$9001,$8001,$8001,$8001,$8001,$FFFF));

HorizontalHotSpot: 9;
VerticalHotSpot: 0
);

Hour: CursorType =
(
Mask: (($0000,$0000,$0000,$0000,$8001,$C003,$E007,$F00F,
$E007,$C003,$8001,$0000,$0000,$0000,$0000,$FFFF),

($0000,$7FFE,$6006,$300C,$1818,$0C30,$0660,$03C0,
$0660,$0C30,$1998,$33CC,$67E6,$7FFE,$0000,$0000));

HorizontalHotSpot: 7;
VerticalHotSpot : 7
);

Stand: CursorType =
(
Mask: (($3FFF,$1FFF,$0FFF,$07FF,$03FF,$01FF,$00FF,$007F,
$003F,$001F,$01FF,$10FF,$30FF,$F87F,$F87F,$FC7F),

($0000,$4000,$6000,$7000,$7800,$7C00,$7E00,$7F00,
$7F80,$7C00,$6C00,$4600,$0600,$0300,$0300,$0000));

HorizontalHotSpot: $FFFF; {WORD(-1)}
VerticalHotSpot : $FFFF
);

DiagC: CursorType =
(
Mask: (($07E0,$0180,$0000,$C003,$F00F,$C003,$0000,$0180,
$07E0,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF),

($0000,$700E,$1C38,$0660,$03C0,$0660,$1C38,$700E,
$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000));

HorizontalHotSpot: 7;
VerticalHotSpot : 4
);

Check: CursorType =
(
Mask: (($FFF0,$FFE0,$FFC0,$FF81,$FF03,$0607,$000F,$001F,
$C03F,$F07F,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF,$FFFF),

($0000,$0006,$000C,$0018,$0030,$0060,$70C0,$1D80,
$0700,$0000,$0000,$0000,$0000,$0000,$0000,$0000));

HorizontalHotSpot: 6;
VerticalHotSpot : 7
);

begin

case Shape of
1: BEGIN
Mouse_Reg.BX := Stand.HorizontalHotSpot;
Mouse_Reg.CX := Stand.VerticalHotSpot;
Mouse_Reg.ES := Seg(Stand.Mask);
Mouse_Reg.DX := Ofs(Stand.Mask);
END;
2: BEGIN
Mouse_Reg.BX := Hand.HorizontalHotSpot;
Mouse_Reg.CX := Hand.VerticalHotSpot;
Mouse_Reg.ES := Seg(Hand.Mask);
Mouse_Reg.DX := Ofs(Hand.Mask);
END;
3: BEGIN
Mouse_Reg.BX := Hour.HorizontalHotSpot;
Mouse_Reg.CX := Hour.VerticalHotSpot;
Mouse_Reg.ES := Seg(Hour.Mask);
Mouse_Reg.DX := Ofs(Hour.Mask);
END;
4: BEGIN
Mouse_Reg.BX := DiagC.HorizontalHotSpot;
Mouse_Reg.CX := DiagC.VerticalHotSpot;
Mouse_Reg.ES := Seg(DiagC.Mask);
Mouse_Reg.DX := Ofs(DiagC.Mask);
END;
5: BEGIN
Mouse_Reg.BX := Check.HorizontalHotSpot;
Mouse_Reg.CX := Check.VerticalHotSpot;
Mouse_Reg.ES := Seg(Check.Mask);
Mouse_Reg.DX := Ofs(Check.Mask);
END;
end;

Mouse_Reg.AX := 9;
Intr($33, Mouse_Reg);
end;


procedure SetPixeltoMickey(Horiz,Verti : Word);
{ function 15 - sets the mickey to pixel ratio }

begin
with Mouse_Reg do begin
Ax := 15;
Cx := Horiz;
Dx := Verti;
end;
Intr($33,Mouse_Reg)
end;

begin
Mouse_Error := InitMouse;
Mouse_Installed := Mouse_Error = 65535;
end.


вот исходник модуля для работы с мышой.
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #10


Гость






Ну, поскольку отвечать на вопросы, которые тебе задаются, ты не хочешь (наверное, думаешь, что я из праздного любопытства спрашиваю? Ошибаешься, и ты в этом сейчас убедишься), то и я тоже буду играть по СВОИМ правилам. В архиве - проект. Откомпилируй его (MAINFILE.PAS), и запусти. Всем твоим требованиям он удовлетворяет: на экране - кнопка и мышь, по нажатию на кнопку выбрасывается меню, проект свободно собирается в TP7 (поскольку писал я его, когда еще и TP7 самого в помине не было, на TP6), сейчас я из него выбросил больше 90% функционала, оставил только то, что нужно для решения твоей задачи.

Стрелками выбираешь "Exit", жмешь Enter и программа завершается. В принципе, в оригинале можно было и пункты меню выбирать мышью, но тебе же лень сказать лишнее слово, так я это тоже вырезал...

А вот теперь - домашнее задание: попробуй разобраться, как оно работает. Убедился, что я не просто так спрашивал про используемые средства?


Прикрепленные файлы
Прикрепленный файл  btn_press.zip ( 13.24 килобайт ) Кол-во скачиваний: 348
 К началу страницы 
+ Ответить 
сообщение
Сообщение #11





Группа: Пользователи
Сообщений: 6
Пол: Мужской

Репутация: -  0  +


Нет, мне не лень сказать.
попросил самое главное то, что хотел узнать.

Меня просто интересовало как сделать такую кнопку.

С меню я потом розберусь.

Большое спасибо за помощь!!!

Посмотрел, хороший пример!
Немного смотрел исходник, думаю разберусь что, к чему smile.gif

Сообщение отредактировано: Yavrik -
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 29.03.2024 4:17
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name