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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.11.2009, 13:07   #11
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

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

UPD: ну с этим разобрался, спас код:
Код:
procedure TTrayForm.CreateParams;
begin
 inherited;
 Params.WndParent:= VKform.Handle;
end;
но проблема сворачивания всеравно осталась =\
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 14.11.2009 в 13:21.
Johnson вне форума Ответить с цитированием
Старый 14.11.2009, 13:46   #12
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Чтобы форма "плевала" на всех и всегда была сверху, достаточно в ее обработчике написать:
Код:
procedure TForm2.FormShow(Sender: TObject);
begin
SetForegroundWindow(Form2.Handle);
SetWindowPos(Form2.Handle,HWND_TOPMOST,0,0,0,0, SWP_NOMOVE+SWP_NOSIZE) 
end;
mihali4 вне форума Ответить с цитированием
Старый 14.11.2009, 14:18   #13
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Чтобы форма "плевала" на всех и всегда была сверху, достаточно в ее обработчике написать:
Код:
procedure TForm2.FormShow(Sender: TObject);
begin
SetForegroundWindow(Form2.Handle);
SetWindowPos(Form2.Handle,HWND_TOPMOST,0,0,0,0, SWP_NOMOVE+SWP_NOSIZE) 
end;
Не получается. И при переходе на другие окна, и при сворачивании основной формы - вторая скрывается на заднем плане.

UPD:
При таком вот варианте:
Код:
  protected
    procedure CreateParams(var Params:TCreateParams);override;
...
procedure TTrayForm.CreateParams;
begin
 inherited;
 Params.WndParent:= VKform.Handle;
end;
Вторая форма не скрывается на заднем плане при переключениями между окон. Но при сворачивании основной формы - тоже сворачивается... =\


UPD2: А есть ли вариант отлавливать мессагу на сворачивание и не пропускать её? Вторая форма по задумкам должна только либо быть отображена (.Show; ) либо сокрыта (.hide; ), не должна перемещаться и сворачиваться... других условий нет.

Или, был ещё совет, основой сделать некую абстрактную невидимую форму, а первую и вторую - её дочерними... подскажите, как это реализовать?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 14.11.2009 в 14:31.
Johnson вне форума Ответить с цитированием
Старый 14.11.2009, 14:30   #14
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Не получается. И при переходе на другие окна, и при сворачивании основной формы - вторая скрывается на заднем плане.
Да, действительно...
Работает только для главной формы.
mihali4 вне форума Ответить с цитированием
Старый 14.11.2009, 15:31   #15
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Так-с... Одну проблему решил - появилась другая...
Сделал окно формы не дочерним к основному:
Код:
procedure TTrayForm.CreateParams;
begin
 inherited;
 Params.WndParent:= 0; //VKform.Handle
end;
Теперь появилась кнопка на таскбаре, которую я не могу сокрыть =\
И ещё при сворачивании основной формы пропадает сама вторая форма, но все контролы, находящиеся на ней - остаются)) пришлось делать форму fsNone, так даже симпатичнее)

Собсно вопрос: как убрать кнопку на таскбаре?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 14.11.2009, 15:34   #16
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

Код:
SetWindowLong(Handle, GWL_STYLE, GetWindowLong(Handle, GWL_STYLE) and not WS_CAPTION);
UPD
-------------

а так?
Код:
 SetWindowLong(Application.Handle,GWL_EXSTYLE,GetWindowLong(Application.Handle, GWL_EXSTYLE) or
  not WS_EX_APPWINDOW);
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation

Последний раз редактировалось raxp; 14.11.2009 в 15:53.
raxp вне форума Ответить с цитированием
Старый 14.11.2009, 15:45   #17
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

опять же не помогает...

UPD:
если именно в таком виде - ничего не происходит. если указать хендл второй формы - форма вобще не отображается
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 14.11.2009 в 16:13.
Johnson вне форума Ответить с цитированием
Старый 14.11.2009, 17:03   #18
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
Сообщение от Johnson Посмотреть сообщение
Теперь появилась кнопка на таскбаре, которую я не могу сокрыть
Собсно вопрос: как убрать кнопку на таскбаре?
Так не пробовали?
Код:
procedure TForm2.FormShow(Sender: TObject);
begin
ShowWindow(Form2.Handle, sw_Hide); 
end;
mihali4 вне форума Ответить с цитированием
Старый 14.11.2009, 17:14   #19
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Цитата:
Сообщение от mihali4 Посмотреть сообщение
Так не пробовали?
Код:
procedure TForm2.FormShow(Sender: TObject);
begin
ShowWindow(Form2.Handle, sw_Hide); 
end;
пробовал конечно... не даёт вобще ни какого эффекта =\
немного позже создам проект без лишних наворотов и скину... будет время - поглядите пожалуйста
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Пара вопросов Life9 Общие вопросы Delphi 38 14.07.2009 21:05
пара вопросов DeDoK Общие вопросы Delphi 1 10.11.2008 17:58
Пара вопросов... ~N@um~ Помощь студентам 6 14.07.2007 09:49
Пара вопросов. Kukkk Общие вопросы Delphi 5 03.07.2007 11:40
пара вопросов Trooper Общие вопросы Delphi 3 05.11.2006 17:56