:: Visual Foxpro, Foxpro for DOS
Как сделать меню в FoxPRO DOS?
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Всем привет. С новым годом!) Небольшое отступление: в общем то я студент 3-го курса пришедший на практику на завод, где мне дали тестовое задание на языке FoxPRO, о котором я ничего не слышал до этого момента, собственно весь завод работает на данной системе.
Задание следующее:
0) Интерфейс программы должен представлять меню, в котором выбирается пункт и выдается результат.
1) Создать базу данных состоящую из полей: № п/п, Фамилия, Имя, Отчество, Дата рождения, Пол, Профессия, Оклад, Цех. Ввести 100 записей.
2) Выдать список работников родившихся в один год. (В списке их должно быть несколько)
3) Выдать список работников родившихся в мае или любом другом месяце. (В списке их должно быть несколько)
4) Выдать список работников работающих в одном цеху. (В списке их должно быть несколько)
5) Выдать список работников одного пола. (В списке их должно быть несколько)
6) Выдать список работников с одним окладом. (В списке их должно быть несколько)
7) Выдать список работников фамилия которых начинается на заданную букву. (В списке их должно быть несколько)
8) Все эти списки вывести на экран и записать в файл.

В принципе я смог разобраться в чем то и сделал пункты 1-6, так же результаты вывел в отдельные файлы (Пункт 8).
Прошу помощи с 7-м пунктом, никак не смог понять как его решить, а так же помощи с 8-м пунктом, не могу разобраться как вывести все эти списки не только в файл, но и на экран. Если начинаю выводить их на экран, то выводится только несколько записей из БД и дальше все уходит за границы экрана и ничего не видно.
Очень нужно разобраться как сделать меню и вывод на экран с нормальным отображением. Покажите как это делается, буду очень благодарен ^_^ Файл со сделанными заданиями и БД [attachment 28794 Zadanie.zip]



Исправлено 2 раз(а). Последнее : TheGodMode, 05.01.18 12:39
Ratings: 0 negative/0 positive
Re: Как сделать меню?
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Цитата:
Файл со сделанными заданиями и БД Zadanie.zip
Это ж FPD тов. Симпле777 на помощь надо звать


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 3 раз(а). Последнее : Божья_коровка, 05.01.18 13:50
Ratings: 0 negative/0 positive
Re: Как сделать меню?
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Божья_коровка
Цитата:
Файл со сделанными заданиями и БД Zadanie.zip
Это ж FPD тов. Симпле777 на помощь надо звать
И как найти данного пользователя?
Ratings: 0 negative/0 positive
Re: Как сделать меню?
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
Да чего его искать, вон он на сайте, сейчас зайдет посмотрит. Там у тебя ничего сложного нет, правда никто уже не рисует так отчеты и менюшки. В принципе на экран если не рисовать, то результат данных можно показывать в BROW. Отфильтровал таблицу и после фильтра делаешь brow и на экран показываются отфильтрованные данные. Это если без рисования отчета руками.
Ну вот если по твоему коду -
set filt to Oklad = Roklad
Go Top
brow


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 05.01.18 12:53
Ratings: 0 negative/0 positive
Re: Как сделать меню?
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
TheGodMode
Божья_коровка
Цитата:
Файл со сделанными заданиями и БД Zadanie.zip
Это ж FPD тов. Симпле777 на помощь надо звать
И как найти данного пользователя?

Сам объявиться. Он частый ходок . Или сюда постучитесь.
Ratings: 0 negative/0 positive
Re: Как сделать меню?
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Божья_коровка
Да чего его искать, вон он на сайте, сейчас зайдет посмотрит. Ну вот если по твоему коду -
set filt to Oklad = Roklad
Go Top
brow
Кстати, кто давал задание, сказал что нельзя использовать функцию BROWSE или как она там. Поэтому я не нашел другого выхода как самому рисовать. Блин, сдавать в понедельник а я в тупике полном. Не могу найти ничего о том как это можно сделать. Надежда только на вашу помощь
Ratings: 0 negative/0 positive
Re: Как сделать меню?
Божья_коровка

Сообщений: 25731
Дата регистрации: 23.08.2001
ну выводи тогда руками, рисуй отчетик...Ну если прям сейчас и по быстрому на экран то LIST, посмотри его в хелпе.


------------------
Жись, она как зёбра, полоса белая, полоса черная, а мне всегда задница достается...




Исправлено 1 раз(а). Последнее : Божья_коровка, 05.01.18 13:03
Ratings: 0 negative/0 positive
Re: Как сделать меню?
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Не разрешают Browse,- ход конём: CHANGE

Ratings: 0 negative/1 positive
Re: Как сделать меню в FoxPRO DOS?
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Если по-быстрому, то можно и команду DISPLAY использовать.
Ratings: 0 negative/0 positive
Re: Как сделать меню в FoxPRO DOS?
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Simple777
Если по-быстрому, то можно и команду DISPLAY использовать.

Ну я пытался сделать так, однако выскакивает ошибка "Position is off the screen". Как я понимаю с перевода, то данные выходят за границы экрана и не отображаются. Как сделать так что бы экран можно было двигать в нужные стороны и просматривать все записи которые выведутся?
PROCEDURE ScreenPrint
CLEAR
DISPLAY
Go Top
@ROW,1 SAY replicate('-',115)
@ROW+1,1 SAY '| Полный список работников |'
@ROW+2,1 SAY replicate('-',115)
@ROW+3,1 SAY '| ФИО | Дата рождения | Должность | Цех | Оклад |'
@ROW+4,1 SAY replicate('-',115)
k=4
DO While !eof()
k=k+1
@ROW+k,1 SAY '| ' + alltrim(Famil) + ' ' + alltrim(Name) + ' ' + alltrim(Otchestvo)
@ROW+k,55 SAY '| ' + dtoc(Rozhdenie)
@ROW+k,71 SAY '| ' + alltrim(Dolg)
@ROW+k,101 SAY '| ' + alltrim(str(Ceh))
@ROW+k,107 SAY '| ' + alltrim(str(Oklad))
@ROW+k,115 SAY '|'
k=k+1
@ROW+k,1 SAY replicate('-',115)
if !eof()
skip
endif
enddo
RETURN
Ratings: 0 negative/0 positive
Re: Как сделать меню?
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Божья_коровка
ну выводи тогда руками, рисуй отчетик...Ну если прям сейчас и по быстрому на экран то LIST, посмотри его в хелпе.
Chemberzhy
Не разрешают Browse,- ход конём: CHANGE
Честно, ничего не понимаю из описания в HELPe, что куда зачем и как, не понятно
Ratings: 0 negative/0 positive
Re: Как сделать меню?
Владимир Максимов

Сообщений: 14097
Откуда: Москва
Дата регистрации: 02.09.2000
TheGodMode
Божья_коровка
Да чего его искать, вон он на сайте, сейчас зайдет посмотрит. Ну вот если по твоему коду -
set filt to Oklad = Roklad
Go Top
brow
Кстати, кто давал задание, сказал что нельзя использовать функцию BROWSE или как она там. Поэтому я не нашел другого выхода как самому рисовать. Блин, сдавать в понедельник а я в тупике полном. Не могу найти ничего о том как это можно сделать. Надежда только на вашу помощь

Для Вас настольной книгой должна стать

Попов А.А. Программирование в среде СУБД FoxPro 2.0

Ссылок на нее полно в интернете. Легко найдете и скачаете. Там много примеров и пояснений. Только ищите именно по 2.0, поскольку есть редакция для версии 2.5 под Windows. А это несколько другое


Насчет самой задачи для FP2.x Browse вполне себе рабочий инструмент. Но если нужен другой вариант, то можно создать форму и на ней вывести объект Lists

В книге Попова - это Глава 25 "Средства управления в стиле Windows", подраздел "Списки меню (Lists)"
Ratings: 0 negative/0 positive
Re: Как сделать меню?
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Владимир Максимов
Только ищите именно по 2.0, поскольку есть редакция для версии 2.5 под Windows. А это несколько другое
У меня вообще FOXPro DOS V1.10, на ней мне и надо писать, а по ней я не смог найти практический ничего. Тот кто задание дает - сказал что в этой версии нет очень много функций, которые появились в 2.0
Вот фото версии на которой надо разрабатывать:



Исправлено 2 раз(а). Последнее : TheGodMode, 05.01.18 13:24
Ratings: 0 negative/0 positive
Re: Как сделать меню в FoxPRO DOS?
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
И весь завод работает на этой версии? Куплю для ИК калаша - он ликвидирует. [sm128]
Ratings: 0 negative/1 positive
Re: Как сделать меню в FoxPRO DOS?
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Simple777
И весь завод работает на этой версии? Куплю для ИК калаша - он ликвидирует. [sm128]
Да, весь завод на этом работает. Люди сидят на современных компьютерах, через батники открывают нужные программы и на мониторах с фулл хд разрешением все растягивается и они сидят и работают. Пожалуйста, давайте конкретно по теме, очень нужна помощь с выводом данных на экран Могу даже прекрепить данную версию FoxPRO.



Исправлено 1 раз(а). Последнее : TheGodMode, 05.01.18 13:33
Ratings: 0 negative/0 positive
Re: Как сделать меню?
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
TheGodMode
Божья_коровка
ну выводи тогда руками, рисуй отчетик...Ну если прям сейчас и по быстрому на экран то LIST, посмотри его в хелпе.
Chemberzhy
Не разрешают Browse,- ход конём: CHANGE
Честно, ничего не понимаю из описания в HELPe, что куда зачем и как, не понятно

Change абсолютно аналогична Browse , только внешний вид отображения на экране отличается тем, что Browse выводит записи в одно строку по столбцам, а Change каждое записи таблицы выводит одна под другой, например:

Browse
Поле1. поле2, поле3, ...

Change
Поле1,
Поле2,
Поле3,
...

То есть, если Вы возьмете уже готовую у Вас строку с командой Browse и замените Browse на Change, то всё сработает, только в ином виде отображения. Но важно то, что малой кровью Вы обойдете, извините, идиотское требование не использовать Browse.

Хотя, может быть задачник хочет обойти Browse, дабы данные выводились только для чтения без возможности редактирования, но и это можно обойти дополнительными командами расширения что в Browse, что в Change NOEDIT и NOMENU

change fields ПЕРЕЧЕНЬ ПОЛЕЙ ЧЕРЕЗ ЗАПЯТУЮ noedit, nomenu



Исправлено 3 раз(а). Последнее : Chemberzhy, 05.01.18 13:39
Ratings: 0 negative/0 positive
Re: Как сделать меню в FoxPRO DOS?
Simple777

Сообщений: 33855
Дата регистрации: 05.11.2006
Вообще надо понимать, что стандартный видеорежим DOS - 80 знакомест по горизонтали, и 25 - по вертикали. Исходя из этого надо выводить данные на дисплей. Выход за пределы границ 80х25 при выводе по команде @ X,Y SAY будет сопровождаться сообщением об ошибке. Поэтому при "простом" выводе данных "от начала до конца" следует проверять значение, возвращаемое функцией ROW(). Если будет достигнуто значение 25, то следует "почистить" на экране выведенные данные, и начать выводить с первой строки. При этом можно использовать команду WAIT с выдачей сообщения о продолжении вывода данных при нажатии, например, клавиши. <ENTER>

Что же касаемо длины выводимой строки, то можно данные из записи выводить и в две, и в три строки подряд, после чего выводить разделяющую черту.



Исправлено 1 раз(а). Последнее : Simple777, 05.01.18 13:39
Ratings: 0 negative/0 positive
Re: Как сделать меню?
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Chemberzhy
Change абсолютно аналогична Browse , только внешний вид отображения на экране отличается тем, что Browse выводит записи в одно строку по столбцам, а Change каждое записи таблицы выводит одна под другой, например:
Change
Поле1,
Поле2,
Поле3,
...

Не, так не пойдет. Сказали что бы все было презентабельно нарисовано и что бы можно было на печать отправлять. Кстати забыл про печать написать в задании еще.

По хорошему надо сделать так: открывается программа и в ней сразу выведена вся БД. Я могу просматривать записи и листать их. На любой понравившейся записи я могу нажать Интер и мне в отдельном окне откроется окно для редактирования записи. Либо при просмотре всех записей я могу нажать функции "Поиск по полу, поиск по окладу, поиск по цеху и т.д.", после чего мне выведется результаты на экран, где я могу нажать клавиши "Сохранить результаты в файл либо вывести на принтер".

По плохому: мне надо сейчас доработать мое написанное приложение, что бы при нажатии тех функций что у меня есть, сначала выводились данные на экран, после чего при необходимости я мог вывести их либо в принтер, либо на экран.
Ratings: 0 negative/0 positive
Re: Как сделать меню в FoxPRO DOS?
TheGodMode
Автор

Сообщений: 77
Дата регистрации: 19.12.2017
Simple777
Вообще надо понимать, что стандартный видеорежим DOS - 80 знакомест по горизонтали, и 25 - по вертикали.

Это я понимаю прекрасно. Но просят сделать вот так. И для примера он мне запускал рабочие программы у них, там после вывода на экран можно было двигать за пределы экрана курсором и смотреть что там выведено. Вот просил так же
Ratings: 0 negative/0 positive
Re: Как сделать меню?
Chemberzhy

Сообщений: 13142
Откуда: Измаил
Дата регистрации: 28.04.2009
Не понимаю, откровенно говоря, в чем непрезентабельность, тем более, учитывая глупость поставленной задачи, но отправить на печать после отображения на экран можно как через предварительно созданный отчет, так и просто скопировав в текстовый файл и уже его распечатать. Сделать более презентабельное отображение можно "разукрасив" Change, например, добавить описание поле на русском.

Сложно помочь, хотя искреннее желание есть. Постановка не ясна и требования "мыльные". Тем более, что это как сегодня машиниста современного поездного локомотива посадить на паровоз 19-го века.
Ratings: 0 negative/0 positive


Извините, только зарегистрированные пользователи могут оставлять сообщения в этом форуме.

On-line: 40 (Гостей: 40)

© 2000-2024 Fox Club 
Яндекс.Метрика