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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.02.2017, 23:28   #1
кусака44
 
Регистрация: 27.12.2016
Сообщений: 9
По умолчанию Form. Отображение формы в трее.

Есть ли простой способ переключаться между формами одного приложения через трей, что-бы вторая отображалась в трее?
(трей- область панели инструментов рабочего стола)

Кстати неплохо бы выделить спец раздел про формы, так много вопросов по теме .
Хорошо поставленный вопрос это половина ответа.
Круг это свёрнутый в кольцо квадрат.

Последний раз редактировалось кусака44; 21.02.2017 в 00:03.
кусака44 вне форума Ответить с цитированием
Старый 21.02.2017, 02:08   #2
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

В трее или на панели задач?
Для панели задач решено:
http://www.programmersforum.ru/showthread.php?t=161761
А для "дурновкусия", коим является предлагаемый вами вариант (уж простите, но это так), есть простое объяснение (приведу цитату, которая все вам должна прояснить):
Цитата:
Никакого сворачивания окон в трей НЕ СУЩЕСТВУЕТ. Это только внешняя видимость, не более того. На самом же деле "сворачиваемые" окна никуда не сворачиваются, а просто становятся невидимыми. Одновременно в трей помещается значок (поэтому и возникает иллюзия "сворачивания в трей"). При движении и при щелчках мышки над этим значком одному из окон приложения (тому, чей хэндл указан в структуре NOTIFYICONDATA) автоматически посылается соответствующее сообщение, которое это окно может обрабатывать любым способом (например, оно может показать всплывающее меню, сделать видимым одно или несколько окон программы и т.п.).
Поэтому процедура "свернуть в трей" для ОДНОГО окна выглядит всегда одинаково:
1. Заполнить структуру NOTIFYICONDATA.
2. Вызвать функцию Shell_NotifyIcon.
3. Скрыть окно. Для форм Delphi это делается вызовом метода Hide (и никакие CreateParams не нужны), а окно Application скрывается вызовом функции ShowWindow.
Отсюда вытекает ответ на Ваш вопрос - как "свернуть в трей" ВСЕ окна программы: точно так же, как и ОДНО окно, только в п.3 невидимыми надо сделать ВСЕ формы программы, включая и окно Application.

Последний раз редактировалось kropotkina-alice; 21.02.2017 в 02:26.
kropotkina-alice вне форума Ответить с цитированием
Старый 21.02.2017, 06:51   #3
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Вот образец:
Код:
uses ShellAPI;

type
   TForm1 = class(TForm)
     Button1: TButton;
     procedure WMICON(var msg: TMessage); message WM_USER;
     procedure Button1Click(Sender: TObject);
   private
     { Private declarations }
   public
     { Public declarations }
   end;
    TDUMMYUNIONNAME = record
    case Integer of
       0: (uTimeout: UINT);
       1: (uVersion: UINT);
    end;
    TNewNotifyIconData = record
       cbSize: DWORD;
       Wnd: HWND;
       uID: UINT;
       uFlags: UINT;
       uCallbackMessage: UINT;
       hIcon: HICON;
       szTip: array[0..127] of Char;
       dwState: DWORD;
       dwStateMask: DWORD;
       szInfo: array[0..255] of Char;
       DUMMYUNIONNAME: TDUMMYUNIONNAME;
       szInfoTitle: array[0..63] of Char;
       dwInfoFlags: DWORD;
    end;
***
procedure TForm1.Button1Click(Sender: TObject);
var nidata: TNewNotifyIconData;
begin
    With nidata do
    begin
       cbSize:=SizeOf(nidata);
       Wnd:=Handle;
       uID:=0;
       uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
       uCallBackMessage:=WM_USER;
       hIcon:=Icon.Handle;
       StrPCopy(szTip, 'Yes');
    end;
    Shell_NotifyIcon(NIM_ADD, @nidata);
end;

procedure TForm1.WMICON(var msg: TMessage);
begin
    MessageBox(0, 'SMS-ка пришла', 'Окно', 0);
end;
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]

Последний раз редактировалось newerow1989; 21.02.2017 в 06:54.
newerow1989 вне форума Ответить с цитированием
Старый 23.02.2017, 08:53   #4
кусака44
 
Регистрация: 27.12.2016
Сообщений: 9
По умолчанию

Кропоткина-Алиса спасибо
Да, для панели задач, но про трей тоже интересно. (я попутал с треем)
( Я честно просматривал темы, но в середине пропустил пару страниц. )
Не вижу ничего плохого чтобы отображать вторую форму в трее.

newerow1989 спасибо.
Хорошо поставленный вопрос это половина ответа.
Круг это свёрнутый в кольцо квадрат.

Последний раз редактировалось кусака44; 23.02.2017 в 09:00.
кусака44 вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Form Style не меняется у второй формы pinya_mov Общие вопросы Delphi 55 05.03.2015 07:50
отображение формы в разных браузерах. Pein95 HTML и CSS 7 29.06.2012 09:17
C# Cоздание иконки в трее без создания формы dasvex Помощь студентам 4 30.04.2012 09:40
не получается связать две формы использую с++ в проекте Windows Application Form (не MFC) VS2008 molodoy-pirat Windows Forms 2 23.04.2009 10:27
изменить размер шрифта в свойстве “Caption” формы (Form) Борис2 Компоненты Delphi 8 13.09.2007 20:36