Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.08.2009, 11:51   #1
unit-85
Пользователь
 
Регистрация: 16.07.2008
Сообщений: 35
По умолчанию Узнать скрыта ли форма

Добрый день! Нужно определить скрытые формы.
Можно ли узнать, была ли cкрыта форма методом Hide?
unit-85 вне форума Ответить с цитированием
Старый 21.08.2009, 11:54   #2
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

проверить ее на if form1.visible then ....не скрыта
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]

Последний раз редактировалось Stilet; 21.08.2009 в 12:09.
Volt вне форума Ответить с цитированием
Старый 21.08.2009, 12:07   #3
unit-85
Пользователь
 
Регистрация: 16.07.2008
Сообщений: 35
По умолчанию

а мне именно скрытые надо, то есть те, которые уже были показаны, а потом скрыты. Те которые не были показаны не нужны. Поэтому свойство Visible не подходит
unit-85 вне форума Ответить с цитированием
Старый 21.08.2009, 12:14   #4
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от unit-85 Посмотреть сообщение
а мне именно скрытые надо, то есть те, которые уже были показаны, а потом скрыты. Те которые не были показаны не нужны. Поэтому свойство Visible не подходит
Брат, isWindowVisible(wind: tHandle) возвращает True, если окно отображается, ну и false в противном случае.
А функция getForegroundWindow возвращает дескриптор окна, которой на переднем плане (под фокусом). Можешь так-же юзать процедуру setForegroundWindow(wind: tHandle) что-бы вывести на передний план отображаемое окно.
Altera вне форума Ответить с цитированием
Старый 21.08.2009, 12:45   #5
unit-85
Пользователь
 
Регистрация: 16.07.2008
Сообщений: 35
По умолчанию

IsWindowVisible Дает те же результате, что и Form.Visible. Отображаемое окно у меня одно. Но есть еще несколько скрытых. При закрытии активного окна хотелось бы, чтобы все скрытые (кроме одного) окна тоже закрывались. я бы мог их закрывать сам, но заранее неизвестно, через какие именно формы я добрался до этого окна.
Как вариант, можно их запоминать, конечно, просто хотел по-другому: цикл по формам, если скрыта, то закрыть.
unit-85 вне форума Ответить с цитированием
Старый 21.08.2009, 13:00   #6
Volt
Форумчанин
 
Аватар для Volt
 
Регистрация: 07.12.2008
Сообщений: 244
По умолчанию

Цитата:
Можно ли узнать, была ли cкрыта форма методом Hide
ну проверяй if form.viseble=false then то форма скрыта.
Цитата:
Те которые не были показаны не нужны.
без запоминания по моемому ни как.
|̲̅̅●̲̅̅|̲̅̅=̲̅̅|̲̅̅●̲̅̅]
Volt вне форума Ответить с цитированием
Старый 21.08.2009, 13:03   #7
unit-85
Пользователь
 
Регистрация: 16.07.2008
Сообщений: 35
По умолчанию

Ладно, будем запоминать
unit-85 вне форума Ответить с цитированием
Старый 21.08.2009, 13:09   #8
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Volt Посмотреть сообщение
ну проверяй if form.viseble=false then то форма скрыта.

без запоминания по моемому ни как.
По мойму лучше showWindows(handle, SW_HIDE) для скрытия и showWindow(handle, SW_SHOW) для отображения юзать.

У меня в проге так. Правда мне нужно было запоминать только главное окно, ну я и писал в ini: iniFIle.writeBool('main_from', 'wasVisible', isWindowVisible(handle))
Ну а считываю в переменную а потом

if wasWindowVisible then
showWindows(handle, SW_HIDE);


и никогда проблем не было...
Altera вне форума Ответить с цитированием
Старый 21.08.2009, 13:22   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
При закрытии активного окна хотелось бы, чтобы все скрытые (кроме одного) окна тоже закрывались.
Твои окна? Твоего приложения?
Тогда в цикле проходи
Код:
for i:=0 to Screen.FormCount-1 do
 if screen.forms[i].visible then...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 21.08.2009, 13:26   #10
unit-85
Пользователь
 
Регистрация: 16.07.2008
Сообщений: 35
По умолчанию

я так и прохожу, но если окно не было открыто ни разу, то у него свойство visible = false, и при попытке закрыть окно прога виснет. при этом если окно было просто скрыто, то все нормально закрывает.
unit-85 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма StudentMarat Microsoft Office Access 2 22.06.2009 09:32
форма blackstersl Общие вопросы Delphi 1 18.09.2008 15:23
Форма Killbrum Помощь студентам 8 21.08.2008 18:48
Как узнать создана ли форма во время работы приложения? Avalonix Общие вопросы Delphi 4 31.05.2008 21:01
Форма MAcK Общие вопросы Delphi 4 07.02.2007 01:43