Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Popup зависает / 16 сообщений из 16, страница 1 из 1
23.04.2010, 14:04
    #36594744
АлексейО
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
Уважаемые форумчане, не встречались ли с таким поведением popup меню:
после комманды activate popup меню выводится и всё приложение перестет реагировать на что либо.
Если свернуть окно приложения, развернуть , то в развернутом окне уже нет popup меню.
Если его опять вызвать меню - ситуация повторится.
Если закрыть приложени и окрыть заново, то ситуация может не повторится днями и месяцами.
Это происходит на многих ПК с неопределеной переодичностью.
это может произойти в любом месте программы, но именно в месте с использования popup
сейчас использую VFP9 SP2, но это было и в VFP8
если кто-то победил эту "хитрость", поделитесь пожалуйста.
...
Рейтинг: 0 / 0
23.04.2010, 14:30
    #36594842
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
АлексейОУважаемые форумчане, не встречались ли с таким поведением popup меню:
после комманды activate popup меню выводится и всё приложение перестет реагировать на что либо.
Если свернуть окно приложения, развернуть , то в развернутом окне уже нет popup меню.
Если его опять вызвать меню - ситуация повторится.
Если закрыть приложени и окрыть заново, то ситуация может не повторится днями и месяцами.
Это происходит на многих ПК с неопределеной переодичностью.
это может произойти в любом месте программы, но именно в месте с использования popup
сейчас использую VFP9 SP2, но это было и в VFP8
если кто-то победил эту "хитрость", поделитесь пожалуйста.

пример, коллега

скажу однозначно, у меня все работало удачно,
поэтому что-то не таГ написали.
пробуйте переписать.
...
Рейтинг: 0 / 0
23.04.2010, 14:48
    #36594901
АлексейО
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
например здесь
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
		define popup set_field font "Arial",  10  shadow FROM MROW(),MCOL()
		define bar  1  of set_field PROMPT "1"
		define bar  2  of set_field PROMPT "2"
		on selection popup set_field deactivate popup set_field 
		activate popup set_field
		m_value=bar()
		release popup set_field 
вот более сложный кусок, но не могу сказать что в нем происходит чаще
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
popup_subordin= 'p'+sys( 2015 )
define popup &popup_subordin SHORTCUT from  0 , thisform.f6_command.left/ 7  ;
		TITLE "выбор" color scheme  4  font "Arial",  10 
i_suborp= 0 
dimension t_subordin[ 1 , 2 ]
select t_links_db
scan for upper(alltrim(table1))==upper(alltrim(thisform.m_table)) .and. type='1'
	i_suborp= i_suborp+ 1 
	dimension t_subordin[i_suborp, 2 ]
	t_subordin[i_suborp, 1 ]=upper(iif(upper(alltrim(table1))==upper(alltrim(thisform.m_table)),table2,table1))
	t_subordin[i_suborp, 2 ]=iif(seek(t_subordin[i_suborp, 1 ],"tables"),alltrim(tables.info),"нет")
	define bar i_suborp of &popup_subordin PROMPT t_subordin[i_suborp, 2 ]
	on selection bar i_suborp of &popup_subordin deactivate popup &popup_subordin
endscan
activate popup &popup_subordin
if lastkey()#  27  .and. bar()> 0  .and. bar()<=i_suborp
* что-то сделали
endif
release popups &popup_subordin
...
Рейтинг: 0 / 0
23.04.2010, 14:50
    #36594907
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
без макроподстановок не пробовал писать?
и не использовать ссылку, а предвычислить в переменные и т.д.?

попробуй - и напиши ровно - нам должишь
...
Рейтинг: 0 / 0
23.04.2010, 14:54
    #36594930
АлексейО
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
пробовал. например первый кусок кода. - тоже зависает
...
Рейтинг: 0 / 0
23.04.2010, 14:55
    #36594932
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
пример для подсмотреть, чтобы отвыкнуть от макроподстановки
Код: 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.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
lparameters toColumn

* toColumn - активная колонка грида
if vartype(toColumn)<>'O' or lower(toColumn.baseclass)<>'column'
	return .f.
endif
LOCAL lcPopupNameSort, llIslocked, llSetup, lnX, lnY, lnAction, llImages
if !pemstatus(toColumn,'Locked', 5 )
	toColumn.addproperty('Locked')
endif
llIslocked = toColumn.Locked
llSetup    = (pemstatus(this,'oColor_style', 5 ) and vartype(this.oColor_style)='O')

if empty(this.cPopupName)
	llImages = .t. &&this.CheckImages()
	local lcTempPath
	lcTempPath = '' &&addbs(sys( 2023 ))
	* пока поднимаем меню так (стандартное - одинаковое для всех гридов)
	* но можно поднять разные меню, зависящие от каких-то настроечных сущностей
	store 'Popup'+sys( 2015 ) to lcPopupName, this.cPopupName
	lcPopupNameSort  = lcPopupName+'_index'
	lcPopupNameSetup = lcPopupName+'_setup'
	DEFINE popup (lcPopupName) SHORTCUT RELATIVE margin shadow
	if llImages 
		Define BAR  1  of (lcPopupName) PROMPT '\<Заморозить колонку' picture lcTempPath+'pin_on.bmp' ;
												skip for llIslocked
		Define BAR  2  OF (lcPopupName) PROMPT '\<Разблокировать колонку' picture lcTempPath+'pin_off.bmp' ;
												skip for !llIslocked
	else
		Define BAR  1  of (lcPopupName) PROMPT '\<Заморозить колонку' skip for llIslocked
		Define BAR  2  OF (lcPopupName) PROMPT '\<Разблокировать колонку' skip for !llIslocked
	endif												
	Define BAR  3  OF (lcPopupName) PROMPT '\-'
	Define BAR  4  OF (lcPopupName) PROMPT '\<Формат (маска ввода)' 
											*;
											skip for empty(ARM_USER.user_adm)
											
	Define BAR  5  OF (lcPopupName) PROMPT '\-'
	Define BAR  6  OF (lcPopupName) PROMPT '\<Сортировать данные' ;
											skip for (pemstatus(toColumn,'SORT_ENABLED', 5 ) and !toColumn.SORT_ENABLED)
	Define BAR  7  OF (lcPopupName) PROMPT '\-'
	Define BAR  8  OF (lcPopupName) PROMPT '\<Изменить очередность'
	Define BAR  9  OF (lcPopupName) PROMPT '\-'
	Define BAR  10  OF (lcPopupName) PROMPT '\<Установки' 

	on bar  1  OF (lcPopupName) lnAction= 1 
	on bar  4  OF (lcPopupName) lnAction= 2 
	on bar  2  OF (lcPopupName) lnAction= 3 
	on bar  8  OF (lcPopupName) lnAction= 4 

	ON BAR  6  OF (lcPopupName) ACTIVATE popup (lcPopupNameSort)
			DEFINE popup (lcPopupNameSort) SHORTCUT relative margin shadow
			if llImages
				Define BAR  1  of (lcPopupNameSort) prompt 'По \<алфавиту' picture lcTempPath+'sort_az.bmp'
				Define BAR  2  of (lcPopupNameSort) prompt 'В \<обратном порядке' picture lcTempPath+'sort_za.bmp'
			else
				Define BAR  1  of (lcPopupNameSort) prompt 'По \<алфавиту'
				Define BAR  2  of (lcPopupNameSort) prompt 'В \<обратном порядке'
			endif
			Define BAR  3  of (lcPopupNameSort) prompt 'Отменить \<сортировку'
			on bar  1  OF (lcPopupNameSort) lnAction= 61 
			on bar  2  OF (lcPopupNameSort) lnAction= 62 
			on bar  3  OF (lcPopupNameSort) lnAction= 63 

	ON BAR  10  OF (lcPopupName) ACTIVATE popup (lcPopupNameSetup)
			DEFINE popup (lcPopupNameSetup) SHORTCUT relative margin shadow
			Define BAR  1  of (lcPopupNameSetup) prompt iif(llSetup,'\<','\')+'Внешний вид/Цвета'
			Define BAR  2  of (lcPopupNameSetup) prompt '\-'
			Define BAR  3  of (lcPopupNameSetup) prompt 'Установить \<размеры по умолчанию'
			Define BAR  4  of (lcPopupNameSetup) prompt iif(llSetup,'\<','\')+'Установить  цвета  по умолчанию'
			on bar  1  OF (lcPopupNameSetup) lnAction= 101 
			on bar  3  OF (lcPopupNameSetup) lnAction= 103 
			on bar  4  OF (lcPopupNameSetup) lnAction= 104 
endif

lnX = mrow("SCREEN")-wlrow()- 2 
lnY = mcol("SCREEN")-wlcol()- 1 
ACTIVATE POPUP (this.cPopupName) at lnX, lnY 

if !empty(lnAction) and !empty(bar())


переписать подобно,
потестировать,
доложить результат
...
Рейтинг: 0 / 0
23.04.2010, 14:58
    #36594948
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
АлексейОпробовал. например первый кусок кода. - тоже зависает

не верю (С)

ну убери определение координат из объявления меню
и перенеси в активацию - см.пример

убери макроподстановки нафек, и забудь

макроподстановка - зло!

напечатай большими буквами - и на стену.
...
Рейтинг: 0 / 0
23.04.2010, 15:56
    #36595174
АлексейО
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
прошелмимо
переписать подобно,
потестировать,
доложить результат

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

а против макроподстановок у вас есть объективные факты?
...
Рейтинг: 0 / 0
23.04.2010, 16:04
    #36595199
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
АлексейОпрошелмимо
переписать подобно,
потестировать,
доложить результат

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

а против макроподстановок у вас есть объективные факты?

поиском - все темы с содержанием: "макроподстановка - зло".
...
Рейтинг: 0 / 0
26.04.2010, 11:41
    #36597979
АлексейО
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
прошелмимо,
вот первый пример переписан как:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
		py= MROW()
		px= MCOL()
		define popup set_field font "Arial",  10  shadow FROM py, px
		define bar  1  of set_field PROMPT "1"
		define bar  2  of set_field PROMPT "2"
		on selection popup set_field deactivate popup set_field 
		activate popup set_field 
		m_value=bar()
		release popup set_field 
и надо же - опять завис
не в расчете координат и не в макроподстановке дело.
Уважаемые коллеги, нет ли еще каких идей?
...
Рейтинг: 0 / 0
26.04.2010, 11:53
    #36598019
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
		py= MROW()
		px= MCOL()
		define popup set_field  &&font "Arial",  10  shadow &&FROM py, px
		define bar  1  of set_field PROMPT "1"
		define bar  2  of set_field PROMPT "2"
		on selection popup set_field deact popup set_field 
		activate popup set_field at py, px
		m_value=bar()
		Release POPUPS set_field

так?
...
Рейтинг: 0 / 0
26.04.2010, 12:03
    #36598043
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
+ ТАК
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
		Local lnAction
		Release POPUPS set_field
		py= MROW()
		px= MCOL()
		define popup set_field SHORTCUT RELATIVE margin shadow
		&&font "Arial",  10  shadow &&FROM py, px
		define bar  1  of set_field PROMPT "1"
		On Selection Bar  1  of set_field lnAction= 1 
		define bar  2  of set_field PROMPT "2"
		On Selection Bar  2  of set_field lnAction= 2 
		*on selection popup set_feld deact popup set_field 
		activate popup set_field at py, px
		If !Empty(lnAction)
			Wait WINDOW NOWAIT Str(lnAction)
		EndIf 
		Release POPUPS set_field
...
Рейтинг: 0 / 0
26.04.2010, 12:08
    #36598056
АлексейО
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
прошелмимо
Код: plaintext
1.
		activate popup set_field at py, px
так?
так ошибается в месте вывода - сдвигает вправо вниз примерн на 5 %
...
Рейтинг: 0 / 0
26.04.2010, 12:20
    #36598089
АлексейО
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
Вот удача!!!. ситуация стала повторятся относительно стабильно и удалось выяснить что лечится с помошью SHORTCUT.
...
Рейтинг: 0 / 0
26.04.2010, 12:22
    #36598097
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
АлексейОпрошелмимо
Код: plaintext
1.
		activate popup set_field at py, px
так?
так ошибается в месте вывода - сдвигает вправо вниз примерн на 5 %

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

вот по правому клику в хедере колонок грида я делаю так:
(работает для форм инскрин)
Код: plaintext
1.
2.
lnX = mrow("SCREEN")-wlrow()- 2 
lnY = mcol("SCREEN")-wlcol()- 1 
ACTIVATE POPUP (this.cPopupName) at lnX, lnY 
...
Рейтинг: 0 / 0
26.04.2010, 12:23
    #36598102
прошелмимо
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Popup зависает
АлексейОВот удача!!!. ситуация стала повторятся относительно стабильно и удалось выяснить что лечится с помошью SHORTCUT.

ок, все одно прекрати использовать макроподстановки
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Popup зависает / 16 сообщений из 16, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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