powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / menu
8 сообщений из 8, страница 1 из 1
menu
    #34492580
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В програме предусмотрено главное меню (когда ничего не открыто, голый SCREEN) и меню когда зупускается форма. При запуске формы главное меню должно исчезнуть и появится новое меню. При закрытии формы новое меню исчезает и появляется главное меню. Я определяю оба меню, но в начале активизирую главное. При старте формы главное помещаю в стек и активизирую другое меню. При закрытии формы главное меню достаю из стека:

SET SYSMENU OFF

DEFINE MENU MaineMenu BAR
....

DEFINE MENU FormMenu BAR
....


ACTIVATE MENU MaineMenu NOWAIT

DEFINE CLASS MeForm AS FORM

PROCEDURE Init
PUSH MENU MaineMenu
ACTIVATE MENU FormMenu NOWAIT
ENDPROC

PROCEDURE Destory
POP MENU MaineMenu
ACTIVATE MENU MaineMenu NOWAIT
ENDPROC

ENDDEFINE

Правельно я делаю? Или перед активацией новаого меню старое надо DEACTIVATE? Или RELEASE?
Как правельно построить работу с меню в даном случае?
...
Рейтинг: 0 / 0
menu
    #34492608
Sergey Sizov.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В общем случае ничего активировать и деактивировать не надо. Надо пользоваться, при необходимости Push Menu и Pop Menu.
...
Рейтинг: 0 / 0
menu
    #34492738
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо! Понятно.
Не хочу начинать новый топик. Вопрос не по теме.
На форме есть TreeView и Grid. В методе TreeView.NodeClick прописываю:
WAIT node.text WINDOW NOWAIT
При загрузке формы активным стаёт первый node дерева, но метод NodeClick выполняется только после того как я клацну на node. Но если node уже активный, то и NodeClick должен бы выполнится. Как сделать чтоб при загрузке формы node который стал активным выполнил свой NodeClick? Пробовал ручками на ThisForm.Init песле населения дерева прописать:
IF !ISNULL(This.TreeView1.SelectedItem)
This.TreeView1.NodeClick(This.TreeView1.SelectedItem)
ENDIF
но условие не выполняется, по идее node ещё не выбран. А когда он стаёт активным? Может на Activate формы прописать?
...
Рейтинг: 0 / 0
menu
    #34492879
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
выдернул из своего
посмотри как я при старте восстанавливаю положение
(у меня здесь еще пейджфрейм)

метод INIT формы
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
	
            if empty(lnSave) or !.set_currentNode()
		With .pgFrame.oPage1.oleTreeView
			.SetFocus ()
			.Click ()
			.LabelEdit =  0 
		endwith
	endif


метод set_currentNode
Код: 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.
* становимся на нужную страницу и нужный узел
with this
	Select (.cSetupAlias)
	local lnPage, lcKey, loPage, loNode
	lnPage = nPage
	lcKey  = alltrim(cKey)
 	if !empty(lnPage)
		try 
			loPage = .pgFrame.Pages(lnPage)
		catch
		endtry
		if vartype(loPage)='O'
			if lnPage<> 1 
				this.pgFrame.ActivePage = lnPage
				thisform.ChangeGroupPage(loPage)
				loPage.Fontbold = .t.
			endif
			if !empty(lcKey)
				try
					loNode = loPage.oleTreeView.nodes(lcKey)
				catch
				endtry
				if vartype(loNode)='O'
					store .t. to loNode.Expanded, loNode.Selected
				else
					return .f.
				endif
			endif
			with loPage.oleTreeView
				.SetFocus ()
				.Click ()
				.LabelEdit =  0 
			endwith 
		else
			return .f.
		endif
	else
		return .f.
	endif
endwith
return .t.
...
Рейтинг: 0 / 0
menu
    #34493129
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Большое спасибо!
Опять к меню. Есть меню:

#DEFINE C_MENU_ADM "AdmMenu"

LOCAL lcMenu
lcMenu=C_MENU_ADM
DEFINE MENU lcMenu BAR

DEFINE PAD pad07 OF lcMenu PROMPT 'Защита'
DEFINE PAD pad08 OF lcMenu PROMPT 'Настройка'
DEFINE PAD pad09 OF lcMenu PROMPT 'Помощь'

к этому меню нужно добавлять в начало ещё один пункт PAD, в зависимости от того на каком TreeView.Node кликнул. Прописывать это собираюсь на NodeClick. Вопрос как пункт меню в начало, конешно можно написать BEFORE pad07, А завтра там не pad07, тоесть не привязываясь к имени. И ещё. Перед тем как добавить в начало пункт нужно удалить тот что есть, если он есть. Думаю привязатся к количеству, если CHTPAD()>3, то первый RELEASE. А чтобы сделать RELEASE PAD нужно знать его имя, оно может быть разное. Можна в цыкле прочитать все PAD от первого до последнего, но низнаю как по номеру PAD получить его имя? Помогите пожалуйста, в который раз.
...
Рейтинг: 0 / 0
menu
    #34493338
alex11100
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
? GETPAD('_msysmenu',1)
...
Рейтинг: 0 / 0
menu
    #34502996
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите пожалуйста, как добавить пункт меню в начало меню? Делаю так:

DEFINE PAD pad99 OF AdmMenu PROMPT 'Архивы' BEFORE pad07

но в результате пункт добавляется в конец меню.
...
Рейтинг: 0 / 0
menu
    #34503010
shanton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нет... всётаки получается... извените!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / menu
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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