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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.12.2009, 00:08   #11
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Цитата:
В приложении нет главных форм! Т.к. приложение работает в фоновом режиме и нельзя выделить какую нить форму как главную не могу
гм... давайте уточним, вы формы динамически создаете из основного процесса без формы? установка стиля formStyle = fsStayOnTop каждой вызванной форме какой дает эффект?

Цитата:
Приведу пример: плавающее окошко у Download Master-а. Оно явно не главное, но оно always on top.
пример подходящий, только выводы делать, что там нету или есть главная форма нельзя... у меня тоже в плеере 3 формы, все поверх и все можно тягать и вызывать отдельно и что это меняет, ничего... форма там главная есть и работает все в фоне.

upd
-------

Цитата:
Altera
Цитата:тебе надо отслеживать все ситуации, когда у окошка меняется Z-order
и корректировать его

Только я не въехал о чём он...
это вообще к чему?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 04.12.2009 в 09:22.
raxp вне форума Ответить с цитированием
Старый 04.12.2009, 07:30   #12
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
гм... давайте уточним, вы формы динамически создаете из основного процесса без формы? установка стиля formStyle = fsStayOnTop каждой вызванной форме какой дает эффект?
Нет, не работает. Даже, наверное, и наедятся на это было глупо...
Блок Begin..End. модуля DPR выглядит следующим образом:
  • Мелкие приготовления, типа Randomize и сохранения в переменной extractFilePath(application.exeName )
  • Создаются главные формы методом someForm := tSomeForm.create(application); Остальные создаются по нужде...
  • загружаются параметры, такие как положение форм, размер и настройки программы.
  • Потом создаются разного рода интерфейсы и прочее, что требует создания.
  • В зависемосте от настроек могут отобразится некоторые формы методом someForm.show
  • потом идёт блок
    Код:
    workDone := false;
      repeat
         application.ProcessMessages;
      until workDone;
  • Сохранение настроек
  • Уничтожение объектов и
  • Выход из программы...

workDone - переменная, которой в процессе работы программы присваивается true для того, что-бы завершить работы. Немного по быдлокодовски, но альтернативы я не нашёл.

Цитата:
Сообщение от raxp Посмотреть сообщение
пример подходящий, только выводы делать, что там нету или есть главная форма нельзя... у меня тоже в плеере 3 формы, все поверх и все можно тягать и вызывать отдельно и что это меняет, ничего... форма там главная есть и работает все в фоне.
Один чувак со схожей проблемой мне в аське написал:
Цитата:
тебе надо отслеживать все ситуации, когда у окошка меняется Z-order
и корректировать его
Только я не въехал о чём он...
Altera вне форума Ответить с цитированием
Старый 04.12.2009, 08:31   #13
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Только я не въехал о чём он...
Фуф... Это скорее надуманное решение чем реально правильное...
Что мешает перед показом формы задавть fsStayOnTop?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2009, 09:25   #14
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

пост #8
Цитата:
Altera
Ок, а щас такой вопросег:
В приложении нет главных форм! Т.к. приложение работает в фоновом режиме и нельзя выделить какую нить форму как главную не могу.
пост #12
Цитата:
Altera
Создаются главные формы методом someForm := tSomeForm.create(application); Остальные создаются по нужде...
чет как-то не то... и насчет fsStayOnTop когда делаете?
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 04.12.2009, 13:14   #15
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от raxp Посмотреть сообщение
Цитата:
Сообщение от Altera
Создаются главные формы методом someForm := tSomeForm.create(application); Остальные создаются по нужде...
чет как-то не то... и насчет fsStayOnTop когда делаете?
Ах да. когда я говорил, что в приложении нет главных форм, а точнее главной формы, то я имел ввиду, что формы у меня создаются не методом Application.createForm, а в предыдущем посте под [I]главными формами я подразумевал те формы, которые предоставляют основные функции приложения. Есть ещё что-то не понятное? По-мойму с fsStayOnTop всё ясно: он не подходит в моей ситуации. Я вообще удивился, когда увидел, где оно находится. Что, в MDI приложениях не может быть главных форм? Что, не может потребоваться, что-бы fsMDIForm форма была-бы поверх всех или какое-то fsMDIChild было-бы поверх остальных?
Altera вне форума Ответить с цитированием
Старый 04.12.2009, 13:24   #16
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Хм... Странно, вот никогда бы не подумал что такого рода стратегии могу создать собственные же проблемы...
По-моему ты чо-то лишнее навертел, я бы на твоем месте пересмотрел свою стратегию.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 04.12.2009, 16:01   #17
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Да нет ничего лишнего. Я спрашиваю только когда все варианты пересмотренны
p.s. Примечательно, что согласно MSDN во всех языках этот параметр (поверх всех окон) задаётся как логический.

Последний раз редактировалось Altera; 05.12.2009 в 11:00.
Altera вне форума Ответить с цитированием
Старый 05.12.2009, 03:22   #18
Anatoly Pr
Новичок
Джуниор
 
Регистрация: 05.12.2009
Сообщений: 2
По умолчанию

У меня очень схожая проблемка возникла. Есть приложение у которого две формы, одна главная и одна ею созданная, если назначить и той и другой атрибут fsStayOnTop, то вроде как они обе поверх всех, но если кликнуть пару раз по ним, потом по окнам других приложений, то 2я форма очень часто просто теряет свой атрибут fsStayOnTop, а иногда и главная вслед за ней, притом без какой-либо закономерности, через раз. Это все на Delphi/Builder 6. Посмотрел справку, там написано "If one fsStayOnTop form launches another, neither form will consistently remain on top", слабо понял, что это значит , но сути дела не меняет, стабильности в удержании и потере атрибута нет.

Скачал Embarcadero C++Builder 2010, там это все работает более стабильно, а именно, если и главная и создаваемая ей форма - fsStayOnTop, то главная форма все равно, что без него, зато созданные ею хорошо держат этот атрибут.

И кстати, я видел, как специальные программы, сделанные для того, чтобы управлять тем, какие формы открытых сейчас приложений поверх, а какие нет, и вроде бы неплохо написанные программы, и все равно некоторые окна помеченные ими как поверх всех, теряли этот атрибут. Так что совсем не понятно... видимо это не такая простая фишка...

Кто-нибудь может подсказать, как можно управлять атрибутами формы "поверх всех" не через fsStayOnTop, а залезть на более низкий уровень, чтобы поразбираться? Хоть куда лезть надо?
Anatoly Pr вне форума Ответить с цитированием
Старый 05.12.2009, 05:29   #19
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Цитата:
Сообщение от Anatoly Pr Посмотреть сообщение
Скачал Embarcadero C++Builder 2010, там это все работает более стабильно
Это вы на Ц++ работаете? Там может и отличаться от дельфи, ну, т.е. Другие условия могут быть. Я вот уже качаю 2010 дельфи. Посмотрю...

По сабжу: какие там ВинАПИ функции для этого? Не забрасывайте тему. Этот вопрос имеет право быть
Altera вне форума Ответить с цитированием
Старый 05.12.2009, 13:42   #20
Gerzs
Форумчанин
 
Аватар для Gerzs
 
Регистрация: 23.07.2009
Сообщений: 185
По умолчанию

SetWindowPos(Handle, HWND_TOPMOST, Left, Top, Width, Height, SWP_NOACTIVATE or SWP_NOMOVE or SWP_NOSIZE);
Так не пробивали?
Gerzs вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма поверх всех окон LordTor Общие вопросы Delphi 5 18.11.2009 23:38
Как сделать так, чтобы форма была поверх всех окон? Jupiter Общие вопросы Delphi 9 31.07.2009 17:42
поверх всех окон Temka Общие вопросы Delphi 4 31.05.2009 14:09
Форма поверх всех окон (!!!) Viteef Общие вопросы Delphi 12 29.06.2007 00:22
Форма поверх всех окон. Kamikadze_666 Общие вопросы Delphi 1 16.05.2007 07:10