| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > Определить видна ли форма |
| Автор: Akella 2.11.2011, 17:58 |
| Может глупость сейчас спрошу, но я немного в недоумении. Self.Showing возвращает True, хотя форма на экране не видна! Как однозначно определить, видна ли форма или нет? |
| Автор: bems 2.11.2011, 18:18 |
| Visible это не то часом? |
| Автор: Akella 2.11.2011, 23:50 |
| нет, тоже возвращает True, но форма не видна, а вообще, свойство visible предназначено ведь для управления видимостью |
| Автор: bems 3.11.2011, 01:11 |
| что значит не видна? закрыта другими окнами? |
| Автор: CROTishka 3.11.2011, 09:09 |
| вам сюда: http://msdn.microsoft.com/en-us/library/windows/desktop/ms632599(v=vs.85).aspx#zorder http://msdn.microsoft.com/en-us/library/windows/desktop/ms633527(v=vs.85).aspx http://msdn.microsoft.com/en-us/library/windows/desktop/ms633519(v=vs.85).aspx только определить 100% видны ли ваша форма из-под других невозможно, т.к. они могут быть неправильной формой, и/или прозрачными. ещё учтите, что мониторов несколько может быть узнать разрешение: http://msdn.microsoft.com/en-us/library/dd144877(v=vs.85).aspx |
| Автор: bems 3.11.2011, 17:11 |
| это Visible. Выкладывай тестовый проект |
| Автор: v258 5.11.2011, 20:15 | ||
А не проще задать Form.Visible=False перед восстановлением настроек чекбоксов, а после выставить Visible=True? |
| Автор: Akella 6.11.2011, 01:01 | ||
Обрати внимание на то, какое значение Visible форма имеет в дизайне |
| Автор: Delvish 7.11.2011, 13:53 |
| Application.MainForm.Visible разве не дает нужный результат? можно еще обойтись булевым флагом, установленным изначально в false, впоследствии переведенном в true при первом же изменении и проверять по нему делать открытие НД или нет |
| Автор: v258 7.11.2011, 14:51 | ||
Ну и что? Стоит задача не допустить запуска обработчика при создании формы? Вот и не допускай, не хочешь Visible формы использовать, задай свой флаг, как Delvish советует. Или восстанавливай настройки не в onCreate, а в onShow формы |
| Автор: Akella 7.11.2011, 15:06 |
Нельзя, а вдруг получится так, что onShow сработает 2 раза. |
| Автор: Delvish 7.11.2011, 18:14 |
| а в onCreate форма еще не создалась (насколько я знаю, это событие как раз "за миг" до создания формы) и там проверять Visible-свойство и не требуется. я бы решил проблему через использование флага, который однозначно позволит (не)сработать событию только 1 раз (в зависимости от потребностей) |
| Автор: v258 7.11.2011, 18:15 |
Ну тогда только флагами |