Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Программная активация Top-level формы  [new]
9IKOB
Member

Откуда: Тамбов
Сообщений: 249
Доброго времени суток!

Главная Top-level форма (Application.Visible = .F.) проекта почему-то открывается неактивной. Как её программно активировать?
23 май 13, 10:16    [14337022]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
Rostislav D. Kudryashov
Member

Откуда:
Сообщений: 237
А как ты узнаёшь, что форма "неактивна"? Она даёт об этом объявление?
23 май 13, 23:17    [14341598]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
Rostislav D. Kudryashov
Member

Откуда:
Сообщений: 237
А как ты узнаёшь, что форма "неактивна"? Она даёт об этом объявление?
Но, вроде бы, есть способ заставить любой объект "пережить" необходимое тебе событие. Например,
23 май 13, 23:18    [14341605]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
Rostislav D. Kudryashov
Member

Откуда:
Сообщений: 237
А как ты узнаёшь, что форма "неактивна"? Она даёт об этом объявление?
Но, вроде бы, есть способ заставить любой объект "пережить" необходимое тебе событие. Например,
RAISEEVENT (TopForm, 'GotFocus')
23 май 13, 23:19    [14341611]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
9IKOB
Member

Откуда: Тамбов
Сообщений: 249
Rostislav D. Kudryashov
А как ты узнаёшь, что форма "неактивна"? Она даёт об этом объявление?


Вообще-то в Windows визуально видно, активно окно или нет
24 май 13, 08:04    [14342178]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
9IKOB
Member

Откуда: Тамбов
Сообщений: 249
Rostislav D. Kudryashov
А как ты узнаёшь, что форма "неактивна"? Она даёт об этом объявление?
Но, вроде бы, есть способ заставить любой объект "пережить" необходимое тебе событие. Например,
RAISEEVENT (TopForm, 'GotFocus')


RAISEEVENT не помог - форма по-прежнему неактивна.
24 май 13, 08:47    [14342323]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
pioner-v
Member

Откуда:
Сообщений: 47
9IKOB,

чтобы не заниматься гаданием, не лучше ли приложить
пример формы показывающий описываемую проблему?
И Config, если используется...
24 май 13, 10:20    [14342987]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
9IKOB
Member

Откуда: Тамбов
Сообщений: 249
pioner-v
9IKOB,

чтобы не заниматься гаданием, не лучше ли приложить
пример формы показывающий описываемую проблему?
И Config, если используется...


У меня в стартовом prg-шнике перед началом выполнения ряда действий с таблицами создаётся окно wLoad, в котором говорится, что идёт загрузка:

DEFINE WINDOW wLoad AT 20, 30 SIZE 3, 35 STYLE 'B' TITLE "Загрузка" FONT 'Arial', 14 NOCLOSE FLOAT NOGROW FILL FILE Load.bmp' IN DESKTOP
ACTIVATE WINDOW wLoad
? ''


После выполнения всех действий с таблицами это окно закрывалось и запускалась главная Top-level форма (она и была неактивной):

DEACTIVATE WINDOW wLoad
RELEASE WINDOWS wLoad
DO FORM frmMain.scx NAME frmMain LINKED
READ EVENTS


Я поставил строки с деактивацией и закрытием окна перед запуском формы, и теперь она запускается активной! Проблема решена!

P.S. Кстати, в процессе выяснил, что RAISEEVENT() только выполняет код родного события формы, то есть при RAISEEVENT (TopForm, 'Release') выполнится код, содержащийся в событии 'Release', но сама форма не закроется.
24 май 13, 10:59    [14343293]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
9IKOB
Member

Откуда: Тамбов
Сообщений: 249
Небольшие поправки к предыдущему посту:

1) В коде
DEFINE WINDOW wLoad AT 20, 30 SIZE 3, 35 STYLE 'B' TITLE "Загрузка" FONT 'Arial', 14 NOCLOSE FLOAT NOGROW FILL FILE 'Load.bmp' IN DESKTOP
пропущена кавычка перед Load.bmp.

2) Строки кода с закрытием окна я поставил после строки DO FORM frmMain.scx и перед READ EVENTS
24 май 13, 11:12    [14343373]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
Reese
Member

Откуда:
Сообщений: 58
Попробуйте так

DECLARE INTEGER SetForegroundWindow IN user32 INTEGER hwnd

SetForegroundWindow(thisform.hwnd)
24 май 13, 16:48    [14346411]     Ответить | Цитировать Сообщить модератору
 Re: Программная активация Top-level формы  [new]
9IKOB
Member

Откуда: Тамбов
Сообщений: 249
Reese
Попробуйте так

DECLARE INTEGER SetForegroundWindow IN user32 INTEGER hwnd

SetForegroundWindow(thisform.hwnd)


Как я писал выше, проблема уже решилась. Ваш способ попробую, если мой в следующий раз не поможет.
27 май 13, 08:02    [14351999]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить