|
|
|
Запуск процедуры при раскрытии окна формы
|
|||
|---|---|---|---|
|
#18+
Всем привет! Вот такая вот задачка. Есть несколько форм, расположенные в отдельных окнах. Обычно окна с неиспользуемыми в данный момент формами пользователи сворачивают. Так, у них внизу экрана постоянно торчит несколько ярлычков. По мере надобности пользователь щелкает на "раскрыть окно" и видит нужную форму. Проблема вот в чем. Информация, представленная в форме к этому времени устаревает. На форме есть кнопка "Обновить", запускающая процедуру обновления. Но пользователям часто влом пользоваться этой кнопкой. Вопрос. Можно ли процедуру обновления прописать в клик раскрытия окна формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 11:14 |
|
||
|
Запуск процедуры при раскрытии окна формы
|
|||
|---|---|---|---|
|
#18+
Первое, что пришло в голову. При операциях сворачивания/разворачивание срабатывает событие Form.Resize. Но размеры формы при этом не меняются. Меняется значение свойства Form.WindowState. Значит, надо сохранить в свойствах формы старое значение Form.WindowState и сравнить его с текущим в событии Form.Resize. Если произошло изменение обновляешь значение в свойстве формы. А если изменение произошло в нужную сторону (было 1 стало 0), то запускаешь обновление PS: Делать метод WindowState_Assign() можно, но бессмысленно, поскольку методы X_Assign() срабытвают только при программном изменении значения свойства X. А в данном случае происходит интерактивное изменение, которого X_Assign() не чувствует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 12:28 |
|
||
|
Запуск процедуры при раскрытии окна формы
|
|||
|---|---|---|---|
|
#18+
Спасибо, буду копать... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 14:34 |
|
||
|
Запуск процедуры при раскрытии окна формы
|
|||
|---|---|---|---|
|
#18+
ВладимирМ, а про Activate забыли. Странно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 16:32 |
|
||
|
Запуск процедуры при раскрытии окна формы
|
|||
|---|---|---|---|
|
#18+
ДекораторВладимирМ, а про Activate забыли. Странно. Форма может быть свернута, но при этом активна. С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 16:41 |
|
||
|
Запуск процедуры при раскрытии окна формы
|
|||
|---|---|---|---|
|
#18+
Aleksey-K, а событие срабатывет. Попробуй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 16:42 |
|
||
|
Запуск процедуры при раскрытии окна формы
|
|||
|---|---|---|---|
|
#18+
ДекораторAleksey-K, а событие срабатывет. Попробуй. Событие срабатывает на выборе формы. Попробуйте выбрать форму, но не раскрывать ее. Activate будет, но форма так и будет в свернутом виде. Т.е если пользователь случайно ткнул в форму, но не раскрыл ее, сработает код, который будет обновлять ее содержимое. Вам это надо? С уважением, Алексей. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 16:49 |
|
||
|
Запуск процедуры при раскрытии окна формы
|
|||
|---|---|---|---|
|
#18+
А развернуть в событии не судьба ? :)) Всего-то 1 API функция :)) Странно все это. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 16:52 |
|
||
|
Запуск процедуры при раскрытии окна формы
|
|||
|---|---|---|---|
|
#18+
ДекораторВладимирМ, а про Activate забыли. Странно. Помню я про нее. Но здесь последовательность событий другая. Надо же запустить обновление именно после разворачивания формы. Это значит, что СНАЧАЛА должно произойти событие разворачивания формы и только ПОТОМ событие обновления. А событие Activate, в общем случае, вообще никак не связано с фактом сворачивания/разворачивания. Оно само по себе. Это значит, что вполне возможна ситуация, когда форму СНАЧАЛА активизируют, и только ПОТОМ развернут. Более того, форму можно развернуть программно БЕЗ активизации. Делать принудительное разворачивание формы в событии Activate (кстати, при чем здесь API, когда это решается присвоением Form.WindowState=0) не разумно. Никто ведь этого не просил. Задача-то обратная. Хотя, возможно, разумно будет сделать обновление в событие Form.Activate() вне зависимости от факта сворачивания/разворачивания. Ведь если на экране множество одновременно открытых форм, то формы могут и не сворачивать, а просто заслонять другими формами. Но здесь уже есть варианты. Если "данные устаревают" означает, что изменения были внесены этим же пользователем, то здесь нужен диспетчер форм с взаимными ссылками. Изменения в каких формах должны обновить вот эти формы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.09.2007, 21:40 |
|
||
|
|

start [/forum/topic.php?fid=41&tid=1588765]: |
0ms |
get settings: |
9ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
95ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
68ms |
get tp. blocked users: |
2ms |
| others: | 230ms |
| total: | 445ms |

| 0 / 0 |
