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

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

скажу однозначно, у меня все работало удачно,
поэтому что-то не таГ написали.
пробуйте переписать.
...
Рейтинг: 0 / 0
Popup зависает
    #36594901
АлексейО
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
например здесь
Код: 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
Popup зависает
    #36594907
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без макроподстановок не пробовал писать?
и не использовать ссылку, а предвычислить в переменные и т.д.?

попробуй - и напиши ровно - нам должишь
...
Рейтинг: 0 / 0
Popup зависает
    #36594930
АлексейО
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробовал. например первый кусок кода. - тоже зависает
...
Рейтинг: 0 / 0
Popup зависает
    #36594932
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пример для подсмотреть, чтобы отвыкнуть от макроподстановки
Код: 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
Popup зависает
    #36594948
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейОпробовал. например первый кусок кода. - тоже зависает

не верю (С)

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

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

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

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

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

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

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

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

поиском - все темы с содержанием: "макроподстановка - зло".
...
Рейтинг: 0 / 0
Popup зависает
    #36597979
АлексейО
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо,
вот первый пример переписан как:
Код: 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
Popup зависает
    #36598019
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: 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
Popup зависает
    #36598043
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
+ ТАК
Код: 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
Popup зависает
    #36598056
АлексейО
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
прошелмимо
Код: plaintext
1.
		activate popup set_field at py, px
так?
так ошибается в месте вывода - сдвигает вправо вниз примерн на 5 %
...
Рейтинг: 0 / 0
Popup зависает
    #36598089
АлексейО
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот удача!!!. ситуация стала повторятся относительно стабильно и удалось выяснить что лечится с помошью SHORTCUT.
...
Рейтинг: 0 / 0
Popup зависает
    #36598097
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейОпрошелмимо
Код: 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
Popup зависает
    #36598102
прошелмимо
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
АлексейОВот удача!!!. ситуация стала повторятся относительно стабильно и удалось выяснить что лечится с помошью SHORTCUT.

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


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