Гость
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / активность формы среди прочих форм / 10 сообщений из 10, страница 1 из 1
09.01.2011, 17:55
    #37050268
StQFox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
Доброе время суток!
Не могу понять что еще такого надо подсунуть лисе, чтобы она сделала активным окно.
В чем трабла: приложение на основе _Screen, имеется панель кнопок; для предотвращения повторного запуска форм есть функция, анализирующая наличие запущенной формы; хотелось бы сделать активным окно среди нескольких запущенных других форм при повторном нажатии на кнопу (на панели кнопок).
как только не изголялся, пролистал форум (кое-что нашел, на ) не помогло. Формы не модальные. show() - не помогает.

Народ, подскажите плз.
...
Рейтинг: 0 / 0
09.01.2011, 17:59
    #37050273
StQFox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
плин и ссылку не сохраняет
...
Рейтинг: 0 / 0
09.01.2011, 18:14
    #37050285
igorbik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
StQFox,

ACTIVATE WINDOW WindowName1 не помогает?
...
Рейтинг: 0 / 0
09.01.2011, 18:53
    #37050325
StQFox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
igorbik,

и этот тривиальный подход использовал, увы...
...
Рейтинг: 0 / 0
10.01.2011, 00:01
    #37050598
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
StQFoxДоброе время суток!
Не могу понять что еще такого надо подсунуть лисе, чтобы она сделала активным окно.
В чем трабла: приложение на основе _Screen, имеется панель кнопок; для предотвращения повторного запуска форм есть функция, анализирующая наличие запущенной формы; хотелось бы сделать активным окно среди нескольких запущенных других форм при повторном нажатии на кнопу (на панели кнопок).
как только не изголялся, пролистал форум (кое-что нашел, на ) не помогло. Формы не модальные. show() - не помогает.

Народ, подскажите плз.
Очень странно!
Все время так работало:
Просмотр коллекции _SCREEN.Forms и активизации нужной формы через метод Show()
Покажите ваш код анализа запущенной формы.
С уважением, Алексей
...
Рейтинг: 0 / 0
10.01.2011, 01:06
    #37050618
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
Вы не путаете понятия "активное окно" и "окно на переднем плане"? Окно вполне может быть активным, но "под" другими окнами. И еще, надеюсь, это не формы из FormSet? Там своя специфика...
...
Рейтинг: 0 / 0
10.01.2011, 03:56
    #37050642
StQFox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
ВладимирМВы не путаете понятия "активное окно" и "окно на переднем плане"? Окно вполне может быть активным, но "под" другими окнами. И еще, надеюсь, это не формы из FormSet? Там своя специфика...

Конечно же, уважаемые форумчане, - прошу прощения за неточность. Окно должно быть именно на переднем плане. Набор форм FormSet не используется.

Листинг не привожу по причине - уточнения проблемы.
...
Рейтинг: 0 / 0
10.01.2011, 09:07
    #37050687
reware
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
StQFoxНе могу понять что еще такого надо подсунуть лисе, чтобы она сделала активным окно.

Вызываем форму prihs.
Код: 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.
DO FORM prihs NAME prihs linked
IF isform('prihs')> 0  && проверка её наличия на экране
	givefocus('prihs') && если найдена, дать ей фокус
	return
endif

******************************
Function isform
******************************
* Проверка наличия на экране
* формы, заданной именем.
* Возвращает числовое значение.
param form_name
local i,ii
for i= 1  to _SCREEN.formcount
	ii=_SCREEN.forms(i)
	if ALLTRIM(upper(ii.name))==alltrim(upper(form_name))
		return i
	endif
next
return  0 

******************************
Function givefocus
******************************
* Перевести фокус на форму
* по ее имени.
param form_name
local i,ii
for i= 1  to _SCREEN.formcount
	ii=_SCREEN.forms(i)
	if ALLTRIM(UPPER(ii.name))==ALLTRIM(UPPER(form_name))
		ii.windowstate= 0 
		ii.show
		exit
	endif
next
return .f.
...
Рейтинг: 0 / 0
10.01.2011, 10:50
    #37050745
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
Проверьте у проблемной формы свойство

Form.AlwaysOnBottom

либо у остальных открытых форм свойство

Form.AlwaysOnTop

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

_VFP.ActiveForm

Если это будет ссылка на нужную форму (после show()), значит форма стала активной, но просто осталась "под" другими формами. Тогда надо смотреть, почему она осталась "под" или почему осталные оказались "над".
...
Рейтинг: 0 / 0
10.01.2011, 11:17
    #37050769
StQFox
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
активность формы среди прочих форм
Благодарю всех за ответы. Владимир, свойства AlwaysOnBottom и AlwaysOnTop в дефолте. Модифицировал строки обращения к форме, в частности через перебор _SCREEN.forms(i), а затем получив индекс формы, использовал show().
У меня при запуске формы не используется Linked, видимо поэтому при обращении к форме (получается по имени *.scx) возникла проблема.
Спасибо!
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / активность формы среди прочих форм / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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