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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.12.2009, 13:49   #21
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
Так не пробивали?
Читайте пост 3.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 05.12.2009, 16:48   #22
Anatoly Pr
Новичок
Джуниор
 
Регистрация: 05.12.2009
Сообщений: 2
По умолчанию

Altera, тот проект, в которов я встретил эту проблему пишу на Borland C++ Builder 6, сейчас запустил похожий на Delphi 7, на ней тоже самое, они вообще очень синхронно ведут себя во многих специфических мелочах, с которыми я встречался.

А именно, на делфи сделал проект с двумя формами поверх всех, хотя только сейчас понял, что ситуация у меня достаточно сильно отличается от описанной вами в начале темы. В Delphi 7 я вообще не создаю форм, т. е. они уже созданы методами
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
И обе они имеют fsStayOnTop, они его какое-то время держат, но иногда, после нескольких кликов по другим окнам теряют.

Если же сделать так, чтобы одна форма запускала другую, то по крайней мере одна из них сразу теряет свой атрибут fsStayOnTop, в этом случае вообще нет ни намека на стабильность.

Gerzs, спасибо за совет, да, пробовал, эта строчка делает окно поверх всех и вроде бы стабильно держит его в таком состоянии, но как только в приложении более одного окна, то окна ЧЕРЕЗ РАЗ уходят на второй план. Меня просто поражает вот эта самая нестабильность, никак не могу понять в чем фишка.
Anatoly Pr вне форума Ответить с цитированием
Старый 08.12.2009, 09:27   #23
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Так, с этим вопросом частично разорался.
В общем перехватываю перекрываю createParams и добавляю в params.exStyle значение WS_EX_TOPMOST. Проблема осталось лишь в том, как изменить этот параметр не закрывая окна?

Пытался сделать через getWindowLong и setWindowLong, константа WS_EX_TOPMOST. Не получается.
Код:
setWindowLong(handle, GWL_EXSTYLE, getWindowLong(handle, GWL_EXSTYLE) or WS_EX_TOPMOST);

Последний раз редактировалось Altera; 08.12.2009 в 13:57.
Altera вне форума Ответить с цитированием
Старый 09.12.2009, 05:52   #24
Altera
Старожил
 
Аватар для Altera
 
Регистрация: 29.01.2008
Сообщений: 2,406
По умолчанию

Ну вот я вроде как-бы сам разобрался
Код:
procedure Tsome_wnd.setTopMost(const Value: boolean);
var
position, long: cardinal;
begin
   long := getWindowLong(handle, GWL_STYLE);

   if value then
   begin
      position := HWND_TOPMOST;
   end
   else
   begin
      position := HWND_NOTOPMOST;
   end;

   setWindowPos(handle, position, 0, 0, 0, 0, SWP_NOMOVE or SWP_NOSIZE or SWP_SHOWWINDOW);
end;
По ходу новый вопрос http://programmersforum.ru/showthread.php?t=74944
Altera вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 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