forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Как использовать ярлыки в MP? (http://forum.boolean.name/showthread.php?t=4413)

Spy_new 11.09.2007 18:23

Как использовать ярлыки в MP?
 
В обычном паскале была функция ярлыков (т.е. пишешь слово Label 1; а потом в тексте программы gotto 1; и программа переходит к указателю 1 вроде так) а MP такой нет? Или подскажите, как можно реализовать такую функцию на MP?

dimanche13 11.09.2007 18:26

Re: Как использовать ярлыки в MP?
 
это называется метка. Можно обойтись и без нее, попробуй...

Frank 11.09.2007 18:28

Re: Как использовать ярлыки в MP?
 
В МР вроде такого нет...
Да это и не нужно! GOTO - зло! :)
Практически любую программу можно организовать без этого оператора...

ViNT 11.09.2007 21:15

Re: Как использовать ярлыки в MP?
 
Зло не зло, а иногда неудобно без GOTO.

Spy_new 11.09.2007 22:09

Re: Как использовать ярлыки в MP?
 
Тогда может подскажете как можно организовать меню с под меню и с под под меню, т.е. есть какое-то меню имеющее некоторое количество пунктов. При выборе пункта 1 появляется подменю первого пункта, а при выборе в нём какого то пункта появляется ещё одно под меню. Так вот весь вопрос в том, как сделать переход в обратную сторону, т.е. находясь в подменю нажав кнопочку назад попасть в предыдущее мню. Может подскажете как это проще сделать.

Код:

program menu;
var Number1, Number2, Number3, Number4 : integer; 
    show, clicked, Back : command;

begin
    showMenu('Выберите пункт', CH_IMPLICIT); 
   
    Number1 := menuAppendString('Пункт 1'); 
 
    show := createCommand('Показать', CM_SCREEN, 2); 
    addCommand(show); 
    repeat 
        delay(100); 
        clicked := getClickedCommand; 
    until clicked = show; 
   
    if menuGetSelectedIndex = Number1 then
      begin
      showMenu('Выберите пункт', CH_IMPLICIT); 
   
      Number1 := menuAppendString('Пункт 1'); 
      Number2 := menuAppendString('Пункт 2'); 
      Number3 := menuAppendString('Пункт 3');
      Number4 := menuAppendString('Пункт 4');
     
  Back := createCommand('Назад', CM_EXIT, 1);
    show := createCommand('Выход', CM_SCREEN, 2); 
    addCommand(show);
    addCommand(Back); 
    repeat 
        delay(100); 
        clicked := getClickedCommand; 
    until clicked = show;         
      end;
   
end.


Bruteo 11.09.2007 23:48

Re: Как использовать ярлыки в MP?
 
Каждое меню и каждое подменю заноси в отдельные процедуры. Потом при необходимости вызывай.

Spy_new 12.09.2007 00:04

Re: Как использовать ярлыки в MP?
 
Попробую. Проблема в том что таких процедур получится штук 200.

Frank 12.09.2007 00:27

Re: Как использовать ярлыки в MP?
 
Должно быть что-то вроде этого:
Код:

program NewProject;

Procedure SubMenu1;
var cmdOK, cmdBack, click: command;
                mnuSubMenu1, mnuSubMenu2: integer;
begin
        repeat
                showMenu('Под меню 1',CH_IMPLICIT);
                mnuSubMenu1:=MenuAppendString('Под-под меню 1');
                mnuSubMenu2:=MenuAppendString('Под-под меню 2');
       
                cmdOK:=CreateCommand('Выбор',CM_OK,1); AddCommand(cmdOK);
                cmdBack:=CreateCommand('Назад',CM_Back,1); AddCommand(cmdBack);
                repaint;
       
                repeat
                        click:=GetClickedCommand;
                until click<>EmptyCommand;
                RemoveCommand(cmdOK); RemoveCommand(cmdBack);
               
                if click=cmdOK then begin
                        // if MenuGetSelectedIndex=mnuSubMenu1 then .......
                        // if MenuGetSelectedIndex=mnuMenu2 then .........
                end;
        until click=cmdBack;
end;


Procedure Menu1;
var cmdOK, cmdBack, click: command;
                mnuSubMenu1, mnuSubMenu2: integer;
begin
        repeat
                showMenu('Меню 1',CH_IMPLICIT);
                mnuSubMenu1:=MenuAppendString('Под меню 1');
                mnuSubMenu2:=MenuAppendString('Под меню 2');
       
                cmdOK:=CreateCommand('Выбор',CM_OK,1); AddCommand(cmdOK);
                cmdBack:=CreateCommand('Назад',CM_Back,1); AddCommand(cmdBack);
                repaint;
       
                repeat
                        click:=GetClickedCommand;
                until click<>EmptyCommand;
                RemoveCommand(cmdOK); RemoveCommand(cmdBack);
               
                if click=cmdOK then begin
                        if MenuGetSelectedIndex=mnuSubMenu1 then SubMenu1;
                        // if MenuGetSelectedIndex=mnuSubMenu2 then SubMenu2;
                end;
        until click=cmdBack;
end;

Procedure MainMenu;
var cmdOK: command;
        mnuMenu1, mnuMenu2, mnuExit: integer;
begin
        repeat
                showMenu('Главное меню',CH_IMPLICIT);
                mnuMenu1:=MenuAppendString('Меню 1');
                mnuMenu2:=MenuAppendString('Меню 2');
                mnuExit :=MenuAppendString('Выход');
       
                cmdOK:=CreateCommand('Выбор',CM_OK,1); AddCommand(cmdOK);
                repaint;
       
                repeat
                until GetClickedCommand<>EmptyCommand;
                RemoveCommand(cmdOK);
       
                if MenuGetSelectedIndex=mnuMenu1 then Menu1;
                // if MenuGetSelectedIndex=mnuMenu2 then Menu2;
                // и т.д...
               
        until MenuGetSelectedIndex=mnuExit;
end;

begin
                MainMenu;
end.



Часовой пояс GMT +4, время: 18:51.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot