Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
1

Работа с окнами

23.11.2013, 04:43. Показов 1971. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте!

Реализовал примитивный калькулятор.

Теперь необходимо осуществить навигацию между окнами, т.е., к примеру, из окна ввода операндов должна быть возможность перейти в главное меню или в окно выбора операции.

Как сделать не знаю.

Буду рад любой идее.

исходник программы :
Кликните здесь для просмотра всего текста
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
    predicates
        
        nondeterm start     
        nondeterm calculator(integer)
        nondeterm action(integer, integer, integer)      
        nondeterm inputData(integer, integer)
        nondeterm chooseAction(integer)             
        nondeterm result(integer, string, integer, string, real)
        nondeterm question           
        nondeterm repeat
 
    clauses             
        
        chooseAction(ACTION):-           
            makewindow(2, 26, 45, "/*-+ CHOOSE OPERATION +-*/", 10, 0, 10, 50),
            clearwindow,             
            write(" ==-+++ Enter number of action +++-== "), nl,
            write("1.    '/'"), nl,
            write("2.    '*'"), nl,
            write("3.    '-'"), nl,
            write("4.    '+'"), nl,
            write("Your choice:    "),
            readint(ACTION).            
        
        inputData(ARG1, ARG2):-                 
            makewindow(3, 26, 45, "/*-+ INPUT DATA +-*/", 20, 0, 10, 50),
            clearwindow,
            %shiftwindow(1),%
            write(" ==-+++ Input operands +++-=="), nl,         
            write("First operand : "), readint(ARG1),
            write("Second operand : "), readint(ARG2).                  
        
        start:-
            makewindow(1, 26, 45, "/*-+ S I M P L E    C A L C U L A T O R +-*/", 0, 0, 10, 50),             
            clearwindow,
            write(" ==-+++ Main menu +++-== "), nl,
            write("1.    'Go run'"), nl,
            write("2.    'Exit'"), nl,
            write("Your choice:    "), readint(ANSWER),
            calculator(ANSWER).             
        
        calculator(2).  
        calculator(1):-                 
            repeat,         
            chooseAction(ACTION),           
            inputData(ARG1, ARG2),          
            action(ACTION, ARG1, ARG2).                     
                    
        repeat.
        repeat:-  
            shiftwindow(5), removewindow,   
            shiftwindow(4), removewindow,   
            shiftwindow(3), removewindow,   
            shiftwindow(2), removewindow,                                                           
            repeat.          
                        
        action(1, ARG1, ARG2):-                          
            RESULT = ARG1 / ARG2,
            result(ARG1, " / ", ARG2, " = ", RESULT).
            
        action(2, ARG1, ARG2):-                          
            RESULT = ARG1 * ARG2,
            result(ARG1, " * ", ARG2, " = ", RESULT).
                
        action(3, ARG1, ARG2):-                          
            RESULT = ARG1 - ARG2,                
            result(ARG1, " - ", ARG2, " = ", RESULT).
                
        action(4, ARG1, ARG2):-                      
            RESULT = ARG1 + ARG2,                
            result(ARG1, " + ", ARG2, " = ", RESULT).
                    
        result(ARG1, OPERATION, ARG2, EQUALLY, RESULT):-
            makewindow(4, 26, 45, "/*-+ RESULT +-*/", 30, 0, 5, 50),                 
                write(ARG1, OPERATION, ARG2, EQUALLY, RESULT),
                question.
            
            question:-
                makewindow(5, 26, 45, "", 35, 0, 5, 50),                 
                write("1. Go more"), nl,
                write("2. Exit"), nl,           
            write("You choice: "), readint(ANSWER),                 
            ANSWER = 2.                         
    
    goal
    
        start.


Заранее спс!
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.11.2013, 04:43
Ответы с готовыми решениями:

Работа с окнами
Подскажите пожалуйста. Как перенести значение переменной А из одного окна в другое. /*Данные для...

Работа с окнами
Нужно при дабл левом клике максимизировать окно, то которое активно, а переключение активности...

Работа с окнами
Здравствуйте, делаю дипломный проект на delphi. Хочу поинтересоваться, какие ''фишки'' есть при...

Работа с окнами
Здраствуйте! Есть вопрос.. При начальной загрузке приложения под Windows должны открываться два...

8
Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
25.11.2013, 16:08  [ТС] 2
Аууу!!! Народ!!!! 100% кто-то делал навигацию по окнам. Подскажите плз.
0
99 / 99 / 14
Регистрация: 07.02.2013
Сообщений: 128
25.11.2013, 22:00 3
Для перехода между окнами используется gotowindow(integer)
Prolog
1
new_write(N,X):- writedevice(screen), gotowindow(N), write(X).%вывод данных в нужном окне
0
Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
25.11.2013, 22:46  [ТС] 4
а можно ли обойтись без специальных предикатов?
0
99 / 99 / 14
Регистрация: 07.02.2013
Сообщений: 128
25.11.2013, 22:59 5
Без стандартных предикатов не получится переключиться между окнами
0
Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
25.11.2013, 23:09  [ТС] 6
да нет, я имею ввиду использовать только removewindow, shiftwindow.

т.е. я не могу понять какие предикаты реализовывать и как.

основа вроде есть, но как к этому прикруть дополнительную функциональность, хз
0
99 / 99 / 14
Регистрация: 07.02.2013
Сообщений: 128
26.11.2013, 00:08 7
Хороший пример про создание меню при помощи окон
0
Вежливость-главное оружие
233 / 234 / 86
Регистрация: 19.02.2013
Сообщений: 1,446
26.11.2013, 00:29  [ТС] 8
Пример хороший. У меня сделало 1 в 1 как там. Но препод требует что бы я добавил навигацию между окнами.

Сейчас у меня окна вызываются друг за другом, типа цикла(Выбрал операцию, Ввел аргументы и по новой).
А мне нужно иметь возможность из окна "Ввод аргументов" вернуться в окно "Выбор операции".

По разному пробовал, ничего не получается.
0
99 / 99 / 14
Регистрация: 07.02.2013
Сообщений: 128
26.11.2013, 00:52 9
Может натолкнет на мысль:
Prolog
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
predicates
 menu(char)
    
clauses
 menu(C):- C='1', gotowindow(1),clearwindow,
       write("1"),nl, readln(Str), write("=>",Str),nl,
       gotowindow(2), readchar(Ch), menu(Ch).
 menu(C):- C='2', gotowindow(1),clearwindow, 
           write("2"),nl,
           gotowindow(2), readchar(Ch),menu(Ch).
 menu(C):- C='3', !.
 
     
goal
makewindow(1,112,112,"Edit",0,0,25,50),
makewindow(2,112,112,"Menu",0,50,25,30),
gotowindow(2),
Write("1 - "),nl,
Write("2 -"),nl,
Write("3 - exit"),nl,
gotowindow(2),readchar(C),menu(C).
0
26.11.2013, 00:52
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
26.11.2013, 00:52
Помогаю со студенческими работами здесь

Работа с окнами
Ребят, если небольшая проблема. Нужно из prompt считать цифру (1-4), а затем открыть...

работа с окнами
Всем привет! Помогите пожалуйста, есть вот такая структура программы в окне есть вопрос, на...

Работа с окнами
Пожалуйста помогите мене решить задачи!! очень прошу!! Создать многодокументное приложение, ...

Работа окнами
ПРивет всем , как сделать чтобы при нажатии на кнопке btn1 Открылось окна скайп которое в статус...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru