Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Окно поверх всех окон, Как сделать 
:(
    Опции темы
Гость_Den
Дата 29.12.2004, 05:06 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Подскажите пожалуйста, как заставить окно появляться и оставаться поверх всех окон, даже если оно не активно. Речь идет не только о главной форме, а и о формах, вызванных с помощью Show, ShowModal.

Спасибо.
  Вверх
Bes
Дата 29.12.2004, 07:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 806
Регистрация: 8.12.2004

Репутация: 5
Всего: 7



А FormStyle не подойдет?
PM MAIL   Вверх
Burich-Caeser
Дата 29.12.2004, 07:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 28.7.2004

Репутация: нет
Всего: 1



А установка FormStyle в fsStayOnTop не прокатывает?

Тогда попробуй через Апишную функцию. Чего-то такое:

with MyForm do
SetWindowPos(Handle, HWND_TOPMOST, Left,Top,
Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);

Должно прокатить.

--------------------
Ты брошен вниз силой судьбы,Ты унижен и раздавлен,Время забыть то, кем ты был,Но помнить, кем ты стал...
PM MAIL   Вверх
Zero
Дата 29.12.2004, 09:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2169
Регистрация: 23.10.2004
Где: Россия, г. Рязань

Репутация: 8
Всего: 24



Burich-Caeser, что-то у тебя сложно написано, вот проще:
поверх всех:
Код

SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);
обратно:
Код

SetWindowPos(Form1.Handle,HWND_NOTOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);

PM MAIL ICQ   Вверх
Pathfider
Дата 30.12.2004, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 128
Регистрация: 13.7.2004
Где: все там же

Репутация: -1
Всего: 1



При переключении между формами делаем следующее:
<Главная форма>.FormStyle:=fsNormal;
<Форма>.Show;
<Форма>.FormStyle:=fsStayOnTop;
при обратном переключении либо закрытии - то же самое с точностью до наоборот.
--------------------
Trust is a weakness
PM MAIL   Вверх
Гость_Den
Дата 4.1.2005, 04:24 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Большое всем спасибо за помощь. С проблемой справился только благодаря вам. Радует реакция ответов. По-моему это один из лучших форумов. Спасибо
  Вверх
Гость_Den
Дата 8.1.2005, 06:27 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ух. Поторопился я наверное с благодарностями. Значит такая проблема.

Нужно, что бы главная форма пряталась в трей (это сделано), а дополнительная, вызвенная с помощью Form2.Show была всегда наверху, т.е. поверх всех окон. И вот что получается. Кагда гл. форма активна, доп. всегда сверху. Но стоит гл. форму свернуть в трей, как доп. перестает быть всегда наверху.

При сворачивании гл. формы отлавливается нажатие на кнопку свернуть и вызавается Form1.Hide.( это что бы не было ее на таскбаре) и рисуется иконка в трее.

Если же не сворачивать в трей, а просто свернуть на таскбар, то и доп. форма исчезает.

Перепробовал все выше перечасленное. Не помогло. Может я не правильно что-то делаю в данном случае?
Подскажите, как лучше реализовать задеманное.

Спасибо.
  Вверх
Guest
Дата 8.1.2005, 06:31 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ух. Поторопился я наверное с благодарностями. Значит такая проблема.

Нужно, что бы главная форма пряталась в трей (это сделано), а дополнительная, вызвенная с помощью Form2.Show была всегда наверху, т.е. поверх всех окон. И вот что получается. Кагда гл. форма активна, доп. всегда сверху. Но стоит гл. форму свернуть в трей, как доп. перестает быть всегда наверху.

При сворачивании гл. формы отлавливается нажатие на кнопку свернуть и вызавается Form1.Hide.( это что бы не было ее на таскбаре) и рисуется иконка в трее.

Если же не сворачивать в трей, а просто свернуть на таскбар, то и доп. форма исчезает.

Перепробовал все выше перечасленное. Не помогло. Может я не правильно что-то делаю в данном случае?
Подскажите, как лучше реализовать задеманное.

Спасибо.
  Вверх
Guest
Дата 8.1.2005, 06:34 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ух. Поторопился я наверное с благодарностями. Значит такая проблема.

Нужно, что бы главная форма пряталась в трей (это сделано), а дополнительная, вызвенная с помощью Form2.Show была всегда наверху, т.е. поверх всех окон. И вот что получается. Кагда гл. форма активна, доп. всегда сверху. Но стоит гл. форму свернуть в трей, как доп. перестает быть всегда наверху.

При сворачивании гл. формы отлавливается нажатие на кнопку свернуть и вызавается Form1.Hide.( это что бы не было ее на таскбаре) и рисуется иконка в трее.

Если же не сворачивать в трей, а просто свернуть на таскбар, то и доп. форма исчезает.

Перепробовал все выше перечасленное. Не помогло. Может я не правильно что-то делаю в данном случае?
Подскажите, как лучше реализовать задеманное.

Спасибо.
  Вверх
Guest
Дата 8.1.2005, 06:37 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Простите за повторы, глюки провайдера.
  Вверх
Akella
Дата 8.1.2005, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



а может поменять метсами формы smile
Добавлено @ 10:16
Попробуй вызывать данную функцию в обработчиках события OnShow() или OnDeactivate(), OnActivate() доп. формы.

Код

with Form1 do
 SetWindowPos(Form1.Handle, HWND_TOPMOST,  Left,  Top,  Width, Height,  SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);

Добавлено @ 10:20


попробуй использовать в событии OnHide основной формы или в той процедуре, где ты прячешь окно
Код

ShowWindow(Form1.Handle, параметр);

параметр
SW_HIDE Скрывает окно и активизирует другое.
SW_MAXIMIZE Разворачивает окно.
SW_MINIMIZE Сворачивает окно.
SW_RESTORE Активизирует и выводит окно. Если окно было развёрнуто или свёрнуто - восстанавливает исходный размер и позицию.
SW_SHOW Активизирует и выводит окно с его оригинальным размером и положением.
SW_SHOWDEFAULT Активизирует с установками, заданными в структуре STARTUPINFO, которая была передана при создании процесса приложением запускающим нужную программу.
SW_SHOWMAXIMIZED Выводит окно в развёрнутом виде.
SW_SHOWMINIMIZED Выводит окно в виде пиктограммы на панели задач.
SW_SHOWMINNOACTIVE Выводит окно в свёрнутом виде на панели задач и не передаёт ему фокус ввода, т.е. окно, которое до этого было активно остаётся активно по прежнему.
SW_SHOWNA Отображает окно в его текущем состоянии. Активное окно остаётся активным по прежнему.
SW_SHOWNOACTIVATE Выводит окно в его последнем положении и с последними используемыми размерами. Активное окно остаётся активным по прежнему.
SW_SHOWNORMAL Выводит окно. Если оно было свёрнуто или развёрнуто - восстанавливает его оригинальные размеры и позицию

PM MAIL   Вверх
Akella
Дата 8.1.2005, 10:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 36
Всего: 329



в событии OnHide основной формы

Код

SetForeGroundWindow(ИмяДопФормы.Handle);
Handle - это уникальный идентификатор окна во всей системе

Добавлено @ 10:27
еще
Код

SetWindowPos(Form1.Handle,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE or SWP_NOSIZE);

Добавлено @ 10:30
попробуй пользоваться поиском на форуме, а еще у нас есть огромный FAQ, обратись к Alex`у
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0554 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.