for flooders
:: Главная :: Решения :: Статьи :: Сайт М. Дроздова :: Файловый архив :: Книга по VFP 9 :: Русский Help Online :: OFF-LINE Форум
   Л и с о в о д ы   в с е х   с т р а н,  о б ъ е д и н я й т е с ь !!!  

Список Форумов  :: Visual Foxpro, Foxpro for DOS
   :: Помощь сайту :: 

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

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

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



Исправлено: TheGodMode, 05.01.18 11:39
Ratings: 0 negative/0 positive


Вложения:
[Zadanie.zip (3.1KB)]  

Re: Как сделать меню?
Божья_коровка

Сообщений: 15337
Дата: 05.01.18 11:33:40ОтветитьЦитировать
Цитата:
Файл со сделанными заданиями и БД Zadanie.zip
Это ж FPD тов. Симпле777 на помощь надо звать


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




Исправлено: Божья_коровка, 05.01.18 12:50
Ratings: 0 negative/0 positive

Re: Как сделать меню?
TheGodMode
Автор

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

Re: Как сделать меню?
Божья_коровка

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


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




Исправлено: Божья_коровка, 05.01.18 11:53
Ratings: 0 negative/0 positive

Re: Как сделать меню?
Chemberzhy

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

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

Re: Как сделать меню?
TheGodMode
Автор

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

Re: Как сделать меню?
Божья_коровка

Сообщений: 15337
Дата: 05.01.18 11:59:50ОтветитьЦитировать
ну выводи тогда руками, рисуй отчетик...Ну если прям сейчас и по быстрому на экран то LIST, посмотри его в хелпе.


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




Исправлено: Божья_коровка, 05.01.18 12:03
Ratings: 0 negative/0 positive

Re: Как сделать меню?
Chemberzhy

Сообщений: 9964
Откуда: Измаил
Дата: 05.01.18 12:03:30ОтветитьЦитировать
Не разрешают Browse,- ход конём: CHANGE

Ratings: 0 negative/1 positive

Re: Как сделать меню в FoxPRO DOS?
Simple777

Сообщений: 19366
Дата: 05.01.18 12:10:10ОтветитьЦитировать
Если по-быстрому, то можно и команду DISPLAY использовать.
Ratings: 0 negative/0 positive

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

Сообщений: 77
Дата: 05.01.18 12:14:32ОтветитьЦитировать
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
Дата: 05.01.18 12:16:31ОтветитьЦитировать
Божья_коровка
ну выводи тогда руками, рисуй отчетик...Ну если прям сейчас и по быстрому на экран то LIST, посмотри его в хелпе.
Chemberzhy
Не разрешают Browse,- ход конём: CHANGE
Честно, ничего не понимаю из описания в HELPe, что куда зачем и как, не понятно
Ratings: 0 negative/0 positive

Re: Как сделать меню?
Владимир Максимов

Сообщений: 13814
Откуда: Москва
Дата: 05.01.18 12:19:47ОтветитьЦитировать
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
Дата: 05.01.18 12:21:50ОтветитьЦитировать
Владимир Максимов
Только ищите именно по 2.0, поскольку есть редакция для версии 2.5 под Windows. А это несколько другое
У меня вообще FOXPro DOS V1.10, на ней мне и надо писать, а по ней я не смог найти практический ничего. Тот кто задание дает - сказал что в этой версии нет очень много функций, которые появились в 2.0
Вот фото версии на которой надо разрабатывать:



Исправлено: TheGodMode, 05.01.18 12:24
Ratings: 0 negative/0 positive


Вложения:
[Безымянный.png (15.6KB)]  

Re: Как сделать меню в FoxPRO DOS?
Simple777

Сообщений: 19366
Дата: 05.01.18 12:27:17ОтветитьЦитировать
И весь завод работает на этой версии? Куплю для ИК калаша - он ликвидирует. [sm128]
Ratings: 0 negative/1 positive

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

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



Исправлено: TheGodMode, 05.01.18 12:33
Ratings: 0 negative/0 positive

Re: Как сделать меню?
Chemberzhy

Сообщений: 9964
Откуда: Измаил
Дата: 05.01.18 12:32:59ОтветитьЦитировать
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



Исправлено: Chemberzhy, 05.01.18 12:39
Ratings: 0 negative/0 positive

Re: Как сделать меню в FoxPRO DOS?
Simple777

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

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



Исправлено: Simple777, 05.01.18 12:39
Ratings: 0 negative/0 positive

Re: Как сделать меню?
TheGodMode
Автор

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

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

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

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

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

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

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

Re: Как сделать меню?
Chemberzhy

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

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



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

On-line: 34 Chemberzhy Божья_коровка BOBAN  and Guests: 31


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