Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 09.11.2010, 14:34   #1
FACE OFF
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 62
По умолчанию как создать меню в Foxpro?

Дайте пожалуйста ссылку, где можно узнать, как в foxpro создать главное меню?

Само меню я в конструкторе могу сделать, а вот какой код надо писать, тчо бы при нажатии открывалась форма или запрос?
FACE OFF вне форума Ответить с цитированием
Старый 09.11.2010, 14:49   #2
Риндера
Delphi, учу С
Форумчанин
 
Аватар для Риндера
 
Регистрация: 20.10.2010
Сообщений: 178
По умолчанию

В FoxPro можно создавать меню разными способами. Наиболее простой из них – команда prompt. Ее синтаксис: @<номер строки>, <номер столбца> prompt <строка меню>. Вот пример листинга для организации меню программы:

Код:
Set color to w+/b
Clear
X=10
Y=10
Menu_it=1
@x-1,y-1 to x+6,y+25 double
@x,y prompt “Плательщики”
@x+1,y prompt “Ввод показаний счетчика”
@x+2,y prompt “Оплата”
@x+3,y prompt “Отчеты”
@x+4,y prompt “Сервис”
@x+5,y prompt “Выход”
menu to menu_it
После выполнения вышеперечисленных строк на экране появиться меню, выбранный пункт будет в переменной menu_it.

Недостаток команды prompt состоит в том, что он не предусматривает автоматически всплывающие подменю и “горячие клавиши”. Для этой цели в FoxPro существуют более мощные команды:

Код:
Define menu <переменная меню>- определяет меню
Define pad <переменная пункта меню> of <переменная меню> prompt <строка > - определяет пункт меню
Define popup <переменная всплывающего меню > - определяет всплывающее меню.
Define bar <номер пункта> of <переменная всплывающего меню> prompt <текст пункта меню> - определяте пункт всплывающего меню
Вызвать меню, определенное этими командами можно командой activate menu <переменная меню>. Теперь нам осталось “навесить” на меню конкретные процедуры. Для первого варианта, с командой prompt можно использовать оператор do case или if. Рассмотрим два примера:

Код:
Do case
   Case menu_it=1
     Do plat
   Case menu_it=2
     Do count
   Case menu_it=3
     Do oplata
Endcase 
Или 

  If menu_it=1
     Do plat
  endif
  If menu_it=2
     Do count
  endif
  If menu_it=3
     Do oplata
  endif
Если основное меню имеет какие то подменю, то их придется реализовывать уже в навешанных на пункты основного меню процедуры, например:

Код:
Procedure plat
Define window _plat from x+5,y+7 to x+4,y+50
Activate window _plat
Set color to w+/g
Clear
@1,1 prompt “Просмотр и редактирование"
@2,1 prompt “Удаление помеченных записей”
@3,1 prompt “Выход”
menu to menu_plat
   do case 
     case menu_plat=1
       do brplat
     case menu_plat=2
       do pack_plat
     endcase
release window _plat
return
Согласитесь, трудоемкий процесс. Поэтому рассмотрим пример со вторым вариантом:

Код:
define menu _oplelectr
define pad _plat of _oplelectr prompt "Плательщики"
define pad _count of _oplelectr prompt 'Показания счетчика'
define popup _plat_p 
define bar 1 of _plat_p prompt "Просмотр и редактирование"
define bar 2 of _plat_p prompt "Удалить помечанные записи"
ON SELECTION PAD _plat OF _oplelectr activate popup _plat_p
on selection bar 1 of _plat_p do brplat
on selection bar 2 of _plat_p do pack_plat
activate menu _oplelectr
Как видно из примера, подменю навешиваются прямо на пункты основного меню, а процедуры прямо на пункты подменю, и при этом программа выглядит более компактно. Не надо никаких конструкций разветвления и множественного выбора. Всего гораздо проще и быстрее, но в тоже время, немного мудренее. Так что каким способом программировать меню программы, решайте сами. А я тем временем расскажу о других возможностях по созданию меню:

Код:
@1,1 prompt “Плательщики" message "Список физических лиц, которые являться плательщиками за электроэнергию"
@2,1 prompt "Показания счетчика" message "Здесь вводится показания счетчика за электроэнергию"
menu to main_menu
или

Код:
define pad _plat of _oplelectr prompt "Плательщкик" message" Список физических лиц, которые являться плательщиками за электроэнергию "
………
define bar 1 of _plat_p prompt "Редактирование" message "Вызывает интерактивное окно просмотра и редактирования базы даннх плательщиков"
define bar 2 of _plat_p prompt "Удаление помеченных записей" message "Удалит безвозвратно все записи, которые ранее были помечены на удаления"
Можно заменить системное меню своим меню, выполнив следующие команды:

Код:
SET SYSMENU TO
SET SYSMENU AUTOMATIC
Ключевое слово KEY <Комбинация клавиш >,[< Текст подсказки >] позволяет навесить на пункт меню “горячую” клавишу. Пример:

Код:
define bar 2 of _plat_p prompt "Удалить помечанные записи" KEY ALT+P, “ALT+P”
Источник
Риндера вне форума Ответить с цитированием
Старый 09.11.2010, 15:12   #3
FACE OFF
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 62
По умолчанию

А можете объяснить, как это сделать через конструктор.
К примеру:
у меян есть форма с названием avto. Я создал пункт меню с параметром command. Что надо написать в самом тексте команды? Я писал do form avto и do avto. не работает. Подскажте, что тут надо вписать?
FACE OFF вне форума Ответить с цитированием
Старый 09.11.2010, 15:23   #4
Риндера
Delphi, учу С
Форумчанин
 
Аватар для Риндера
 
Регистрация: 20.10.2010
Сообщений: 178
По умолчанию

Я не знаю ФоксПро, так что за объяснениями жди мастеров, либо в гугл)
Просто нашла статью, думала поможет.
Риндера вне форума Ответить с цитированием
Старый 09.11.2010, 15:39   #5
FACE OFF
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 62
По умолчанию

Понятно. Спасибо большое за помощь.
FACE OFF вне форума Ответить с цитированием
Старый 09.11.2010, 15:41   #6
FACE OFF
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 62
По умолчанию

Вот исходники базы.
Я чт от овообзе не могу понять, как делать?

Если не трудно, сделайте пожалуйста меню, что бы запускало несколько форм и отчетов.

Я просто без наглядного примера ничего не понимаю (((
Вложения
Тип файла: rar БД.rar (24.6 Кб, 44 просмотров)

Последний раз редактировалось FACE OFF; 09.11.2010 в 15:45.
FACE OFF вне форума Ответить с цитированием
Старый 09.11.2010, 15:44   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

FoxPro какой? небось какой-нибудь Visual ?...

в старом, чтобы показать форму достаточно было написать в обработчике меню:
Код:
do Avto.spr
попробуйте, может и в VFP такое прокатит...


p.s. исходников базы от Вас не видно...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 09.11.2010, 16:09   #8
FACE OFF
Пользователь
 
Регистрация: 24.09.2010
Сообщений: 62
По умолчанию

Да, получилось. спасибо большое.
FACE OFF вне форума Ответить с цитированием
Старый 17.03.2011, 11:45   #9
vasyagorev
Новичок
Джуниор
 
Регистрация: 17.03.2011
Сообщений: 1
Радость

Доброго времени суток форумчане!
Помогите "Организовать меню" в FP 6.0 в программном файле (типа PRG), отдельные пункты которого анологичны пунктам меню системы TURBO-PASCAL. Меню можно организовать либо с помощью Fox-меню, либо с помощью Dbase-меня (последнее предпочтительнее).
При выборе пункта вертикального меню на экране должно выводиться название этого пункта.
С уважением, vasyagorev
vasyagorev вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как создать базу данных по тестированию? а именно просчет баллов (visual foxPro) Melkaya546 Помощь студентам 0 09.04.2010 17:06
как создать меню в паскале? Kati Помощь студентам 1 20.06.2009 11:35
Си++ Как создать меню? vadima Помощь студентам 4 30.04.2009 14:56
как создать меню????? Paul_AG Общие вопросы C/C++ 1 12.04.2009 13:50
как создать меню в CSS? Ulan HTML и CSS 7 08.10.2008 10:01