0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
|
|
1 | |
Простое графическое меню06.02.2011, 21:30. Показов 7060. Ответов 43
Метки нет (Все метки)
Уважаемые мастера, помогите создать простое графическое меню, скажем на 5 пунктов, что бы при выборе определенного пункта запускался на выполнение соответствующий ехе-файл. Я только вчера начал вникатьв паскаль, перечитал массу топиков и пока ничего не получилось. (то того модуля нет, то это объект не найден и т.д.)
0
|
06.02.2011, 21:30 | |
Ответы с готовыми решениями:
43
Графическое меню Графическое меню Графическое меню Графическое меню |
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
|
|
08.02.2011, 09:33 [ТС] | 21 |
А можно еще пару вопросов по основам? Если с турбопаскалем я с Вашей помощью разобрался (касаемо вывода меню), то в Борланде есть пункт 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.ехе, и т.д.) и сразу завершать программу.
0
|
Почетный модератор
64300 / 47595 / 32743
Регистрация: 18.05.2008
Сообщений: 115,181
|
|
10.02.2011, 08:18 | 27 |
cambit, Вы сами не хотите ничего учить, ничего читать, но Вам нужна программа. Есть такой вариант для таких занятых людей.
https://www.cyberforum.ru/freelance/ Платите деньги, вам все делают, вы занимаетесь своими делами. А то уже смешите. Да в этой процедуре и задаются координаты окна, например 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 | ||||||||||
Да нигде не вычисляются, вы сами их задаете при создании окна.
Нужно Вам например окно в центре экрана размерами 40 позиций по ширине и 10 позиций по высоте, вы пишете window(20,8,60,18); это при размере экрана 80х25. Добавлено через 3 минуты Если не знаете размеры экрана, можно их определить
Вернее
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 в котором есть конструктор создания окна
В основной программе он вызывается как метод созданного объекта
Добавлено через 2 минуты Просо вам нужно написать более простое меню....
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
|
|
10.02.2011, 12:49 [ТС] | 32 |
Спасибо, дружище! Извини, что доставал. Но, сказать чесно, я минуту назад сам нашел эту строчку методом тыка - 30 - это растояние от края окна, 18 - ширина самого окна. Ура! Еще раз СПАСИБО, что не послал и не бросил! А по поводу сложности - мне надо не написать, а результат. Так что я подгоню это меню под свои потребности особо не вникая во внутрь. А теперь по поводу второй части вопроса
Если вместо строки 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
|
⚽
4190 / 1291 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
|
||||||
14.02.2011, 12:05 | 35 | |||||
разумней Case использовать.
Добавлено через 2 минуты попробуй делать так:
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
|
|
14.02.2011, 13:02 [ТС] | 36 |
В итоговой версии я так и сделал.
Добавлено через 57 секунд Спасибо, буду пробовать. Добавлено через 17 минут Не-а, не запускается 1.ехе...
0
|
⚽
4190 / 1291 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
|
|
14.02.2011, 16:41 | 37 |
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
|
|
14.02.2011, 22:00 [ТС] | 38 |
Канечна!
0
|
⚽
4190 / 1291 / 237
Регистрация: 27.07.2009
Сообщений: 3,962
|
||||||
15.02.2011, 11:18 | 39 | |||||
cambit, тогда делай так:
0
|
0 / 0 / 0
Регистрация: 06.02.2011
Сообщений: 87
|
|
16.02.2011, 16:26 [ТС] | 40 |
А у меня не запускается , пишет, "неправильная команда или имя файла".
А если убрать слово start, то запускается, но ждет окончания процесса...
0
|
16.02.2011, 16:26 | |
16.02.2011, 16:26 | |
Помогаю со студенческими работами здесь
40
Сделать графическое меню написать меню(графическое-с курсором) Вставить графическое меню в программу Добавлять данные в типизированный файл через графическое меню Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |