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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 28.07.2011, 02:05   #1
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
Вопрос Форма как отдельная программа в панели задач

Как сделать чтобы форма программы определялась в панели задач как отдельная программа(то есть была отдельной "кнопкой")?

Нашел пример как это делается: http://www.cyberguru.ru/delphi-sources/ui-windows/forma-delphi-na-paneli-zadatch.html
Это сработало, дополнительная форма получила отдельную кнопку на панели задач, но возникла проблема - если скрываю основную форму то ее кнопка всеравно остается и ктомуже перестает быть функциональной(при нажатии на нее окно не появляется), прочитал на каком-то форуме что причиной этому может служить трей иконка программы, а она у моей программы есть... Как мне удалять из панели задач кнопку основной формы при ее скрытии чтобы оставалась только кнопка дополнительной формы?

И еще желательно чтобы можно было этой форме в панели задач сделать не только отдельную кнопку но и отдельную иконку этой кнопки(это не обязательно но было бы очень неплохо).
Заранее спасибо за помощь.
Crystallon вне форума Ответить с цитированием
Старый 28.07.2011, 09:46   #2
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

отдельное приложение + общение с помощью WM_COPYDATA
другие варианты сложнее.
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Старый 28.07.2011, 10:33   #3
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Ответ:
Цитата:
Часто возникает противоположная по смыслу задача - убрать окна с панели задач (в случае, если они создаются в DLL). В таком случае используйте стиль WS_Ex_ToolWindow.
т.е. ловим сообщении sw_syscommand -> sc_minimized и через setwindowlong ставим стиль WS_EX_TOOLWINDOW

Перед тем как разворачиваешь пишешь код
Код:
  SetWindowLong(Form2.Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_APPWINDOW);
Перед тем как сворачиваешь пишешь код
Код:
  SetWindowLong(Form2.Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);

Последний раз редактировалось Вадим Мошев; 21.02.2017 в 05:25.
ZuBy вне форума Ответить с цитированием
Старый 28.07.2011, 17:52   #4
gesper
Пользователь
 
Аватар для gesper
 
Регистрация: 02.04.2011
Сообщений: 17
По умолчанию

Код:
type
TForm2 = class(TForm)
private
{ Private declarations }
procedure CreateParams(VAR Params: TCreateParams);
override;
...
procedure TForm2.CreateParams(VAR Params: TCreateParams);
begin
Inherited CreateParams(Params);
WITH Params DO
ExStyle := ExStyle OR WS_EX_APPWINDOW;
end;
Ты нашел правильное решение. Этот код может не только добавит кнопку в панель задач для второстепенной формы, но если его использовать с другими параметрами(поищи сам, кроме WS_EX_APPWINDOW есть другие стили), то ты сможешь и убрать у главной формы кнопку из панели задач.

Иконка кнопки у второстепенной формы, насколько помню, выставляется свойством Icon этой формы.
gesper вне форума Ответить с цитированием
Старый 30.07.2011, 05:48   #5
Crystallon
Форумчанин
 
Регистрация: 05.04.2010
Сообщений: 273
По умолчанию

ZuBy
Спасибо, это работает, иконки главного окна из панели задач удаляются при сворачивании, вот только подчеркну - иконки, т.е. их теперь у родительского окна 2, как я понимаю одна изначальная, другая создается по onshow(WS_EX_APPWINDOW), ну а если WS_EX_APPWINDOW не ставить тогда и WS_EX_TOOLWINDOW не срабатывает =(

Наконец нашел как удалять изначальную кнопку программы из панели задач - ShowWindow(Application.Handle, sw_Hide);
Всем спасибо за помощь.

Последний раз редактировалось Вадим Мошев; 21.02.2017 в 05:25.
Crystallon вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Форма как отдельная программа в панели задач Crystallon Общие вопросы Delphi 2 28.05.2011 12:36
Что нужно сделать, чтобы форма была поверх панели задач? Andr Общие вопросы Delphi 11 25.02.2011 22:06
Как узнать высоту панели задач Vikenty Общие вопросы Delphi 11 15.09.2010 23:38
Как убрать себя с панели задач. Alex Cones Общие вопросы Delphi 2 27.12.2009 16:13
Как сделать так чтобы моя программа при включении отображалась в панели задач, как например часы Window ? asked86 Win Api 1 15.12.2008 08:42