Форум программистов, компьютерный форум, киберфорум
Turbo Pascal
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.60/35: Рейтинг темы: голосов - 35, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
1

Простое графическое меню

06.02.2011, 21:30. Показов 7060. Ответов 43
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уважаемые мастера, помогите создать простое графическое меню, скажем на 5 пунктов, что бы при выборе определенного пункта запускался на выполнение соответствующий ехе-файл. Я только вчера начал вникатьв паскаль, перечитал массу топиков и пока ничего не получилось. (то того модуля нет, то это объект не найден и т.д.)
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.02.2011, 21:30
Ответы с готовыми решениями:

Графическое меню
Всем доброго времени! Искал ответ на свой вопрос, найти не смог. Направьте пожалуйста если есть,...

Графическое меню
Форумчане, помогайте) Пишу курсовик по паскалю, процедуры написаны, надо сделать графическое меню...

Графическое меню
Народ, помогите плиз. Надо самое простое графическое меню содержащее 7 пунктов.

Графическое меню
Помоги пожалуйста,не могу нигде найти: мне нужно реализовать в Borland Pascal: меню с...

43
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
08.02.2011, 09:33  [ТС] 21
Author24 — интернет-сервис помощи студентам
А можно еще пару вопросов по основам? Если с турбопаскалем я с Вашей помощью разобрался (касаемо вывода меню), то в Борланде есть пункт Target где можно выбрать real, protected, windows. Я так онимаю, что в результате компиляции должно получаться приложение под DOS, защищенного режима DOS и windows. Так ли это? Если я ставлю Target-windows, то получаю ошибку - нет файла CRT.TPW. Пробую компилировать CRT.PAS с целью создания CRT.TPW - получаю более серьезную ошибку Undefined external (SEG0040), описание которой не нашел.
И второй вариант, который хотел бы попробывать - чем отличается модуль CRT и WinCRT? Если просто в начале текста программы поменять Uses CRT на Uses WinCrt что получится в результате?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.02.2011, 09:43 22
Так Вам и нужен модуль WinCrt. С ним все будет работать, менять ничего не надо, все процедуры и функции из Crt вроде в нем есть...
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
08.02.2011, 10:02  [ТС] 23
Ну, естественно понадобился сразу WinProcs, Wintype, Windos. Компилирую Winprocs.pas пишет ошибка 85 - ожидается ";" Курсор стоит в строке procedure FatalExit; external 'KERNEL' index.1; на знаке апострофа перед KERNEL ---? Может этот файл Winprocs.pas не такой как надо?
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
08.02.2011, 10:15 24
cambit, Я Борланд не знаю, как-то пробовал, у меня такая же фигня пошла, я забросил, пользуюсь ТП 7.0, АВС, Фрее Паскаль. Так что помочь не могу...
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
08.02.2011, 15:56  [ТС] 25
Ну ладно, оставим Win-режим. Пробую уменьшить размер DOS-окна.
Оказывается - В свойствах DOS- окна по умолчанию в Windows стоит размер 60х25. Если я выполняю CMD.EXE - размер окна естественно подхватывается такой-же, но как только в этом же окне выполняю menu.exe (программу с текстовым меню из указанной выше ссылки) - окно сразу становится 80х25. Значит - это Паскаль задает размеры окна! Как изменить?
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
09.02.2011, 21:53  [ТС] 26
Ну ни фига не получается... Нашел другое меню, более сложное. Уважаемые специалисты, помогите найти место в проге, где задается размер окна. Команду Window нашел, а где задаются координаты (ULx, ULy, LRx, LRy) - нет. Нужно увелечить ширину окошка приблизительно вдвое, чтоб текст помещался более длинный. Это первая проблема, вторая - вместо вывода нажатой кнопки нужно запускать соответствующий ехе-файл (1.ехе, 2.ехе, и т.д.) и сразу завершать программу.
Вложения
Тип файла: rar Menu.rar (3.7 Кб, 22 просмотров)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
10.02.2011, 08:18 27
cambit, Вы сами не хотите ничего учить, ничего читать, но Вам нужна программа. Есть такой вариант для таких занятых людей.
https://www.cyberforum.ru/freelance/
Платите деньги, вам все делают, вы занимаетесь своими делами. А то уже смешите.

Цитата Сообщение от cambit Посмотреть сообщение
Команду Window нашел, а где задаются координаты (ULx, ULy, LRx, LRy) - нет.
Да в этой процедуре и задаются координаты окна, например
Window(1,1,80,25); это будет весь экран. Вы удивитесь, но по Паскалю есть учебники, а в самом Паскале есть встроенная справка и там это все написано.
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
10.02.2011, 09:27  [ТС] 28
Да, Вы правы. Я об этом говорил в начале темы - учить не хочется.
А по поводу "смешить" так я имел ввиду, где и как вычисляются эти переменные (ULx, ULy, LRx, LRy), так что не думаю, что для основной массы людей это смешно. А хотя, и смешить комуто нужно, иначе сдохли бы все от злости. Ну да ладно, не хотите помочь - не надо, разберемся...
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
10.02.2011, 09:37 29
Цитата Сообщение от cambit Посмотреть сообщение
где и как вычисляются эти переменные (ULx, ULy, LRx, LRy),
Да нигде не вычисляются, вы сами их задаете при создании окна.
Нужно Вам например окно в центре экрана размерами 40 позиций по ширине и 10 позиций по высоте, вы пишете
window(20,8,60,18);
это при размере экрана 80х25.

Добавлено через 3 минуты
Если не знаете размеры экрана, можно их определить
Pascal
1
2
Хm:=Lo(WindMax);            
Ym:= Hi(WindMax);
Добавлено через 2 минуты
Вернее
Pascal
1
2
Хm:=Lo(WindMax)+1;            
Ym:= Hi(WindMax)+1;
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
10.02.2011, 11:48  [ТС] 30
Хм, неужели я кажусь таким тупым? Я хотя и в возрасте, но соображаю понемногу. В этом конкретном случае размер окна меню не указан явно, а через переменные ULx, ULy, LRx, LRy привязан к каким то параметрам, причем не к WindMax. А вот найти этот другой параметр и прошу помочь. Плюс к тому (моему непониманию) в проге открывается несколько окон (одно заливается заливкой ( во сказал ), другое, собственно меню ...
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
10.02.2011, 12:22 31
несколько окон (одно заливается заливкой ( во сказал ), другое, собственно меню ...
Одно окно это собственно экран, а второе окно создаем..
Вы нашли программу, в которой вряд ли способны разобраться...
В модуле есть объектBBMenu = Object
в котором есть конструктор создания окна
Pascal
1
2
3
4
5
Constructor Init(iX, iY, iW : Integer;
                     MTitle     : String;
                     MenuC, HiC,
                     Style      : byte;
                     SExit      : Boolean);
с формальными параметрами.
В основной программе он вызывается как метод созданного объекта
Pascal
1
var  M      : BBMenu;
уже с фактическими параметрами
Pascal
1
 M.Init(30, 10, 18, 'Menu for You', $30, $4E, 0, False);
вот эти параметры вам и нужно подгонять под нужные...

Добавлено через 2 минуты
Просо вам нужно написать более простое меню....
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
10.02.2011, 12:49  [ТС] 32
Спасибо, дружище! Извини, что доставал. Но, сказать чесно, я минуту назад сам нашел эту строчку методом тыка - 30 - это растояние от края окна, 18 - ширина самого окна. Ура! Еще раз СПАСИБО, что не послал и не бросил! А по поводу сложности - мне надо не написать, а результат. Так что я подгоню это меню под свои потребности особо не вникая во внутрь. А теперь по поводу второй части вопроса
Цитата Сообщение от cambit Посмотреть сообщение
... что бы при выборе определенного пункта запускался на выполнение соответствующий ехе-файл.
Если вместо строки WriteLn('You selected item number: ',Choice); написать
If Choice = 1 Then
Exec('C:\WINDOWS\1.exe',)
Else If Choice = 2 Then
Exec('C:\WINDOWS\2.exe',)
и т.д. это будет правильно? (Подправь синтаксис,если что не так)
0
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
10.02.2011, 12:54 33
Извини, я это не знаю...
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
14.02.2011, 10:58  [ТС] 34
Друзья, разрешите еще один вопрос. Благодаря Вам разобрался, все прекрасно работает. Но осталась одна маленькая шероховатость : при выборе пункта меню запускается соответствующий ехе-файл, а меню не закрывается, а ждет окончания выполнения того ехе-шника и потом закрывается. Возможно ли сделать, чтобы программа закрывалась сразу после запуска ехе-файла?
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
4190 / 1291 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
14.02.2011, 12:05 35
Цитата Сообщение от cambit Посмотреть сообщение
If Choice = 1 Then
Exec('C:\WINDOWS\1.exe',)
Else If Choice = 2 Then
Exec('C:\WINDOWS\2.exe',)
разумней Case использовать.

Добавлено через 2 минуты
Цитата Сообщение от cambit Посмотреть сообщение
Возможно ли сделать, чтобы программа закрывалась сразу после запуска ехе-файла?
попробуй делать так:
Pascal
1
Exec('start','C:\WINDOWS\1.exe');
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
14.02.2011, 13:02  [ТС] 36
Цитата Сообщение от TAVulator Посмотреть сообщение
разумней Case использовать.
В итоговой версии я так и сделал.

Добавлено через 57 секунд
Цитата Сообщение от TAVulator Посмотреть сообщение
попробуй делать так:
Pascal
1
Exec('start','C:\WINDOWS\1.exe');
Спасибо, буду пробовать.

Добавлено через 17 минут
Не-а, не запускается 1.ехе...
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
4190 / 1291 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
14.02.2011, 16:41 37
Цитата Сообщение от cambit Посмотреть сообщение
Не-а, не запускается 1.ехе...
swapvectors делал?
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
14.02.2011, 22:00  [ТС] 38
Канечна!
0
Эксперт по компьютерным сетямЭксперт Pascal/Delphi
4190 / 1291 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
15.02.2011, 11:18 39
cambit, тогда делай так:
Pascal
1
2
3
4
5
6
uses DOS;
Begin
 SwapVectors;
 Exec(GetEnv('COMSPEC'), '/C start notepad.exe');
 SwapVectors;
End.
только что проверил - работает. Запускает блокнот и закрывается, не дожидаясь закрытия блокнота.
0
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
16.02.2011, 16:26  [ТС] 40
А у меня не запускается , пишет, "неправильная команда или имя файла".
А если убрать слово start, то запускается, но ждет окончания процесса...
0
16.02.2011, 16:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.02.2011, 16:26
Помогаю со студенческими работами здесь

Сделать графическое меню
Код программы и меню: Program pppppp; uses crt; const punkt:array of string= ('Считывания с...

написать меню(графическое-с курсором)
Ребят, я не понимаю как написать меню(графическое-с курсором) в паскале с правом выбора(то есть...

Вставить графическое меню в программу
Пытаюсь в уже рабочую программу внедрить граф. меню. Но мне оно нужно только в главном меню, при...

Добавлять данные в типизированный файл через графическое меню
как добовлять данные в Типизированный файл через графическое меню? Добавлено через 14 часов 37...


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

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