powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Запуск процедуры при раскрытии окна формы
9 сообщений из 9, страница 1 из 1
Запуск процедуры при раскрытии окна формы
    #34803072
StandD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!

Вот такая вот задачка.
Есть несколько форм, расположенные в отдельных окнах. Обычно окна с неиспользуемыми в данный момент формами пользователи сворачивают. Так, у них внизу экрана постоянно торчит несколько ярлычков. По мере надобности пользователь щелкает на "раскрыть окно" и видит нужную форму.
Проблема вот в чем. Информация, представленная в форме к этому времени устаревает. На форме есть кнопка "Обновить", запускающая процедуру обновления. Но пользователям часто влом пользоваться этой кнопкой.
Вопрос. Можно ли процедуру обновления прописать в клик раскрытия окна формы?
...
Рейтинг: 0 / 0
Запуск процедуры при раскрытии окна формы
    #34803124
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Первое, что пришло в голову. При операциях сворачивания/разворачивание срабатывает событие Form.Resize. Но размеры формы при этом не меняются. Меняется значение свойства Form.WindowState.

Значит, надо сохранить в свойствах формы старое значение Form.WindowState и сравнить его с текущим в событии Form.Resize. Если произошло изменение обновляешь значение в свойстве формы. А если изменение произошло в нужную сторону (было 1 стало 0), то запускаешь обновление

PS: Делать метод WindowState_Assign() можно, но бессмысленно, поскольку методы X_Assign() срабытвают только при программном изменении значения свойства X. А в данном случае происходит интерактивное изменение, которого X_Assign() не чувствует
...
Рейтинг: 0 / 0
Запуск процедуры при раскрытии окна формы
    #34803245
StandD
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, буду копать...
...
Рейтинг: 0 / 0
Запуск процедуры при раскрытии окна формы
    #34803350
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ, а про Activate забыли. Странно.
...
Рейтинг: 0 / 0
Запуск процедуры при раскрытии окна формы
    #34803360
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДекораторВладимирМ, а про Activate забыли. Странно.
Форма может быть свернута, но при этом активна.
С уважением, Алексей.
...
Рейтинг: 0 / 0
Запуск процедуры при раскрытии окна формы
    #34803361
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Aleksey-K, а событие срабатывет. Попробуй.
...
Рейтинг: 0 / 0
Запуск процедуры при раскрытии окна формы
    #34803365
Фотография Aleksey-K
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДекораторAleksey-K, а событие срабатывет. Попробуй.
Событие срабатывает на выборе формы.
Попробуйте выбрать форму, но не раскрывать ее. Activate будет, но форма так и будет в свернутом виде. Т.е если пользователь случайно ткнул в форму, но не раскрыл ее, сработает код, который будет обновлять ее содержимое. Вам это надо?
С уважением, Алексей.
...
Рейтинг: 0 / 0
Запуск процедуры при раскрытии окна формы
    #34803370
Декоратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А развернуть в событии не судьба ? :)) Всего-то 1 API функция :))
Странно все это.
...
Рейтинг: 0 / 0
Запуск процедуры при раскрытии окна формы
    #34803593
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ДекораторВладимирМ, а про Activate забыли. Странно.
Помню я про нее. Но здесь последовательность событий другая. Надо же запустить обновление именно после разворачивания формы. Это значит, что СНАЧАЛА должно произойти событие разворачивания формы и только ПОТОМ событие обновления.

А событие Activate, в общем случае, вообще никак не связано с фактом сворачивания/разворачивания. Оно само по себе. Это значит, что вполне возможна ситуация, когда форму СНАЧАЛА активизируют, и только ПОТОМ развернут. Более того, форму можно развернуть программно БЕЗ активизации.

Делать принудительное разворачивание формы в событии Activate (кстати, при чем здесь API, когда это решается присвоением Form.WindowState=0) не разумно. Никто ведь этого не просил. Задача-то обратная.

Хотя, возможно, разумно будет сделать обновление в событие Form.Activate() вне зависимости от факта сворачивания/разворачивания. Ведь если на экране множество одновременно открытых форм, то формы могут и не сворачивать, а просто заслонять другими формами.

Но здесь уже есть варианты.

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


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