powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как построить меню, чтоб без глупостей
8 сообщений из 8, страница 1 из 1
как построить меню, чтоб без глупостей
    #32734290
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я вот билдером строил меню - такой голимзян, я потому и под досовым фоксом этим билдером не пользовался, он считает, что пады и бары должны именоваться так же как в промпте. В результате - сам же мне при запуске такого меню ругается на свои же проезды. Можно потом вручную все поправить, но достаточно в проекте случайно даблкликнуть на меню - и все уже "исправлено". Как кто с этим борется? Вот что оно мутит:

DEFINE PAD _1cq0udll3 OF _MSYSMENU PROMPT "Абоненты" COLOR SCHEME 3 ;
KEY ALT+А, ""
DEFINE PAD _1cq0udll4 OF _MSYSMENU PROMPT "Банк" COLOR SCHEME 3 ;
KEY ALT+Б, ""
DEFINE PAD _1cq0udll5 OF _MSYSMENU PROMPT "Отчеты" COLOR SCHEME 3 ;
KEY ALT+О, ""
DEFINE PAD _1cq0udll6 OF _MSYSMENU PROMPT "Должники" COLOR SCHEME 3 ;
KEY ALT+Д, ""

чего это за названия падов такие? он сам их создает и сам на них ругаецца!
...
Рейтинг: 0 / 0
как построить меню, чтоб без глупостей
    #32734322
SergeyPl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ручками пишем меню и такое, как надо самому.
...
Рейтинг: 0 / 0
как построить меню, чтоб без глупостей
    #32734464
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
получается так - я создаю свою мнюху, из этой сгенеренной, в ней я только один раз могу выбрать один пункт, он сработает, а после выполнения - все закрывается и меню мое исчезает. Типа деактивируецца и все.
я раньше делал так:
задавал переменную
Quit=0
do while Quit=0
acti menu mainmenu
enddo
а в пункте Выход
была процедурка, где Quit делался 1 или 2, типа в Дос и в фоксу

А в вижуале как-то по-другому делается?
...
Рейтинг: 0 / 0
как построить меню, чтоб без глупостей
    #32734521
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Читай описание команды READ EVENTS. Вкратце здесь

http://www.sql.ru/faq/faq_topic.aspx?fid=249
...
Рейтинг: 0 / 0
как построить меню, чтоб без глупостей
    #32734542
luser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пишешь класс , ну к примеру xxx_menu
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
DEFINE CLASS xxx_menu as Custom
Procedure Init
LPARAMETERS oMFrm
define menu (oMFrm.Name) in (oMFrm.Name) bar
DEFINE PAD Pad_Station OF (oMFrm.name) PROMPT "\<Станция" COLOR SCHEME  3   
ON PAD Pad_Station OF (oMFrm.name)  ACTIVATE POPUP Popup_Station
DEFINE POPUP Popup_Station MARGIN RELATIVE SHADOW COLOR SCHEME  4   
   	        DEFINE BAR  1   OF Popup_Station   PROMPT  '\<Запуск станции' 	 PICTURE  "next_square16.gif"    && DoRun
       		DEFINE BAR  3   OF Popup_Station   PROMPT  '\-'  
       		DEFINE BAR  10  OF Popup_Station   PROMPT  '\<Пользователи системы' PICTURE "user_properties16_h.ico"
       		DEFINE BAR  9   OF Popup_Station   PROMPT  '\<Системные настройки' PICTURE "view16.ico"
       		DEFINE BAR  6   OF Popup_Station   PROMPT  '\<Настройки линий'     PICTURE "edit_square16_h.gif"
       		DEFINE BAR  7   OF Popup_Station   PROMPT  '\-'  
      		DEFINE BAR  8   OF Popup_Station   PROMPT  '\<Завершение работы'  PICTURE "cancel_square16_h.gif"

DEFINE PAD Pad_test OF (oMFrm.name) PROMPT "\<Cервис" COLOR SCHEME  3   
ON PAD Pad_test OF (oMFrm.name)  ACTIVATE POPUP Popup_test
DEFINE POPUP Popup_test MARGIN RELATIVE SHADOW COLOR SCHEME  4   
   	        DEFINE BAR  1   OF Popup_test   PROMPT  '\<Плюс' 	 		 PICTURE  "insert_square16.gif"  &&
        	DEFINE BAR  2   OF Popup_test   PROMPT  '\<Минус'   		 PICTURE  "delete_square16_d.gif"  && 
        	DEFINE BAR  3   OF Popup_test   PROMPT  '\-'  
       		DEFINE BAR  4   OF Popup_test   PROMPT  '\<Блокировать'    PICTURE "refresh_square16.gif"
       		DEFINE BAR  5   OF Popup_test   PROMPT  '\<Разблокировать' PICTURE "refresh_square16_d.gif"
       		DEFINE BAR  6   OF Popup_test   PROMPT  '\-'  
       		DEFINE BAR  7   OF Popup_test   PROMPT  '\<Звук ВЫКЛ'    	 PICTURE "cancel_square16_d.gif"
       		
       		
DEFINE PAD Pad_Stat OF (oMFrm.name) PROMPT "\<Cтатистика" COLOR SCHEME  3   
ON PAD Pad_Stat OF (oMFrm.name)  ACTIVATE POPUP Popup_stat
DEFINE POPUP Popup_stat MARGIN RELATIVE SHADOW COLOR SCHEME  4   
   	        DEFINE BAR  1   OF Popup_stat   PROMPT  '\<Тарифные зоны' 	   PICTURE  "db_sql_procedure16.ico"  &&
        	DEFINE BAR  2   OF Popup_stat   PROMPT  '\<Маршрутные индексы'   PICTURE  "db_sql_execute16_h.ico"  && 
        	DEFINE BAR  3   OF Popup_stat   PROMPT  '\-'  
       		DEFINE BAR  4   OF Popup_stat   PROMPT  '\<Общая наработка'   PICTURE "sql_script_save16_h.ico"

DEFINE PAD Pad_Help OF (oMFrm.name) PROMPT "\<Помощь" COLOR SCHEME  3 
ON PAD Pad_Help OF (oMFrm.name)  ACTIVATE POPUP Popup_Help
DEFINE POPUP Popup_Help MARGIN RELATIVE SHADOW COLOR SCHEME  4   
   	        DEFINE BAR  9    OF Popup_Help   PROMPT  '\<О программе' 				
        	DEFINE BAR  10   OF Popup_Help   PROMPT  '\<Справка по системе'  

* Управление линиями
       		ON SELECTION BAR  1    OF Popup_Station m.oFrm.OnRun()
       		ON SELECTION BAR  6    OF Popup_Station m.oFrm.RuleLine()
       		ON SELECTION BAR  8    OF Popup_Station m.oFrm.OnClose()
     		ON SELECTION BAR  9    OF Popup_Station m.oFrm.OnNastr()
     		ON SELECTION BAR  10    OF Popup_Station m.oFrm.OnUsers()

*Сервиис       		
		    ON SELECTION BAR  1   OF Popup_test   m.oFrm.SetTest( m.oFrm.nSelectPort,m.oFrm.nSelectLine, 1 ) &&PROMPT  '\<Плюс' 	 PICTURE  "insert_square16.gif"  &&
        	ON SELECTION BAR  2   OF Popup_test   m.oFrm.SetTest( m.oFrm.nSelectPort,m.oFrm.nSelectLine, 2 ) &&PROMPT  '\<Минус'   PICTURE  "delete_square16_d.gif"  && 
       		ON SELECTION BAR  4   OF Popup_test   m.oFrm.SetTest( m.oFrm.nSelectPort,m.oFrm.nSelectLine, 3 ) &&PROMPT  '\<Блокировать'    PICTURE "refresh_square16.gif"
       		ON SELECTION BAR  5   OF Popup_test   m.oFrm.SetTest( m.oFrm.nSelectPort,m.oFrm.nSelectLine, 4 ) &&PROMPT  '\<Разблокировать'    PICTURE "refresh_square16_d.gif"
       		ON SELECTION BAR  7   OF Popup_test   m.oFrm.SetTest( m.oFrm.nSelectPort,m.oFrm.nSelectLine, 5 ) &&PROMPT  '\<Звук ВЫКЛ'    PICTURE "cancel_square16_d.gif"

* Статистика
	   ON SELECTION BAR  1   OF Popup_stat    m.oFrm.onZone()
     	   ON SELECTION BAR  2   OF Popup_stat    m.oFrm.onMarch()
     	   ON SELECTION BAR  4   OF Popup_stat    m.oFrm.onNar()

acti menu (oMFrm.name)  nowait
endproc
enddefine

Вот тебе рабочий пример.
oFrm - объект где лежат твои методы для выполнения по выбору меню.
Как понимаешь могут лежать где угодно и не обязательно объект передавать как параметр, можно и глобально объявить, тогда тут вообще никаких парметров не нужно.
Пользоваться так:
Код: plaintext
1.
2.
 set procedure to твой_файл_с классом. prg additive
 Local lo_menu as Object
 lo_menu  =  createobject("xxx_menu")
Например.
...
Рейтинг: 0 / 0
как построить меню, чтоб без глупостей
    #32734807
CTAC-KO
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо.
правда пример от luser для меня пока что тяжеловат к восприятию...
...
Рейтинг: 0 / 0
как построить меню, чтоб без глупостей
    #32735121
Burn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Он ругается на на имена PAD-ов а на русские буквы в определении горячих клавиш - KEY ALT+ А - А-то здесь русское. Чтобы этого не было достаточно задавать горячие клавиши самому - соответсвующие латинские
...
Рейтинг: 0 / 0
как построить меню, чтоб без глупостей
    #32735244
Станислав C.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CTAC-KOполучается так - я создаю свою мнюху, из этой сгенеренной, в ней я только один раз могу выбрать один пункт, он сработает, а после выполнения - все закрывается и меню мое исчезает. Типа деактивируецца и все.


Sorry, я около 5 лет проработал под FPD, но никогда не сталкивался с подобной проблемой и не делал таких монстров:
CTAC-KO
Quit=0
do while Quit=0
acti menu mainmenu
enddo
а в пункте Выход...Quit делался 1 или 2, типа в Дос и в фоксу

все великолепно работало и без этого: Activate menu в запускающей процедуре, deactivate menu при выходе. Если, конечно, где-то внутри вызываемых в меню процедур не делать deactivate menu вместо hide menu... Но это уже сам виноват...
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / как построить меню, чтоб без глупостей
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]