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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.12.2014, 16:01   #1
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию Перенос иконки приложения из панели задач в трэй. Эмуляция поведения QIP

Сколько пытался добиться такого эффекта, так толком ничего и не вышло. ОС Win8. Среда разработки XE7. Стоит задача.
1) Полностью убрать иконку приложения из панели задач, и поместить ей в трэй.
2) При старте программы не должно быть ни каких мерцаний на рабочем столе, и в панели задач. Программа должна появляться исключительно в трэе (свёрнута).
3) При клике (двойном клике, не важно) программа должна разворачиваться, опять же минуя какое либо мерцание в панели задач. При последующем клике сворачиваться в трэй.
В пример могу повести поведение главного окна QIP (ICQ мэсседжера). Всевозможные trayicon реализуют только половину задачи (сам трэй), остального не получается добиться. Пробовал различные решения из гугла, но половина не работает, так как писались под XP, а другая половина даёт мерцания. Поможет кто нибудь с решением?
WinCoder вне форума Ответить с цитированием
Старый 07.12.2014, 16:30   #2
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

По 2 пункту:
Код:
Application.ShowMainForm:= false;
в файле проекта не помогает?
Iron Monk вне форума Ответить с цитированием
Старый 07.12.2014, 17:00   #3
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Iron Monk Мне нужно не один пункт выполнить, а все. Скрыть форму не проблема. Как показать её минуя отображение в панели задач по клику на иконку в трэе?
WinCoder вне форума Ответить с цитированием
Старый 07.12.2014, 17:02   #4
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от WinCoder Посмотреть сообщение
Iron Monk Мне нужно не один пункт выполнить, а все. Скрыть форму не проблема. Как показать её минуя отображение в панели задач по клику на иконку в трэе?
Если не проблема - второй пункт не нужно было включать в вопрос. по 3:
Нужно развернуть форму без отображения в таскбаре?
Iron Monk вне форума Ответить с цитированием
Старый 07.12.2014, 17:31   #5
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Если не проблема - второй пункт не нужно было включать в вопрос. по 3:
Неверное суждение. Свернуть при запуске да не проблема. Можно использовать предложенный Вами метод. А теперь попробуйте создать форму, положить на неё несколько компонентов, и вновь её отобразить. Таким образом Вы выполнив второй пункт автоматически сделали невозможным выполнение других пунктов, а это не есть решение.
Цитата:
Сообщение от Iron Monk Посмотреть сообщение
Нужно развернуть форму без отображения в таскбаре?
Да
P.S. Более точное объяснение задачи. Нужно полностью перенести программу из панели задач в трэй (в панели задач никогда ничего не отображается).

Последний раз редактировалось WinCoder; 07.12.2014 в 17:34.
WinCoder вне форума Ответить с цитированием
Старый 07.12.2014, 17:33   #6
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Так не работает по п.3?
В файле проекта:
Код:
Application.MainFormOnTaskbar:= false;
При разворачивании формы из трея(onActivate):
Код:
ShowWindow(Application.Handle,SW_HIDE);
Iron Monk вне форума Ответить с цитированием
Старый 07.12.2014, 17:37   #7
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Application.MainFormOnTaskbar:= false; работает. Иконка пропала. Как теперь разворачивать и сворачивать, и избежать появления окна при старте программы?
WinCoder вне форума Ответить с цитированием
Старый 07.12.2014, 17:40   #8
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Цитата:
Сообщение от WinCoder Посмотреть сообщение
Application.MainFormOnTaskbar:= false; работает. Иконка пропала. Как теперь разворачивать и сворачивать, и избежать появления окна при старте программы?
Иконка пропала из трея?
Iron Monk вне форума Ответить с цитированием
Старый 07.12.2014, 17:45   #9
WinCoder
Заблокирован
 
Регистрация: 24.11.2014
Сообщений: 721
По умолчанию

Цитата:
Иконка пропала из трея?
Нет, из панели задач. То что мне и нужно. В общем вот что в итоге получилось

Код:
var
  Form1: TForm1;
   ExitBool: boolean;
implementation

{$R *.dfm}

procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin // при нажатии на окно закрытия сворачиваем в трэй
  CanClose := ExitBool;
  ShowWindow(Handle,SW_HIDE);
end;

procedure TForm1.N1Click(Sender: TObject);
begin
  ExitBool := true; // принудительное завершение через PopupMenu присвоенном TrayIcon
  Close;
end;

procedure TForm1.TrayIcon1Click(Sender: TObject);
begin
  ShowBool := not ShowBool; //сворачиваем разворачиваем по клику на иконку в трее
  if ShowBool then
    ShowWindow(Handle,SW_Show) else
      ShowWindow(Handle,SW_HIDE);
end;

end.
Код:
program Project1;

uses
  Vcl.Forms,
  Unit1 in 'Unit1.pas' {Form1};

{$R *.res}

begin
  Application.Initialize;
  Application.MainFormOnTaskbar := False;
  Application.ShowMainForm := False; // тут понятно, всё спрятали
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.
Осталась одна проблема. Исчезли компоненты с формы. Как исправить?
WinCoder вне форума Ответить с цитированием
Старый 07.12.2014, 17:50   #10
Iron Monk
Форумчанин
 
Аватар для Iron Monk
 
Регистрация: 05.10.2007
Сообщений: 478
По умолчанию

Форма создается динамически?
Iron Monk вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При скрытии главной формы и открытии другой, пропадает икнонка приложения из панели задач TrickMePLS Общие вопросы Delphi 1 07.06.2014 19:01
Смена иконки в панели задач AndreyK Общие вопросы Delphi 8 23.01.2013 23:42
Иконка приложения в панели задач Кристинка89 Общие вопросы Delphi 12 11.06.2011 13:49
Изменение названия приложения в панели задач Demien Общие вопросы Delphi 4 10.05.2011 12:36
Иконки на скрытой панели segail Microsoft Office Excel 7 01.08.2010 23:03