Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.87/67: Рейтинг темы: голосов - 67, средняя оценка - 4.87
6 / 6 / 1
Регистрация: 29.09.2009
Сообщений: 91

TrayIcon

14.10.2009, 22:30. Показов 13614. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Имеется программа которая по нажатию на кнопку скрытие или закрытие появляется в системном трее,
использую компонент TrayIcon
реализую так по нажатию на обычную кнопку
TrayIcon -> Visible = true; появляется.
а мне нужно по нажатию на значок закрытие или скрытие формы в правом верхнем углу формы.....
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.10.2009, 22:30
Ответы с готовыми решениями:

TrayIcon
День добрый! Есть такой код. Всё хорошо, только одна проблема кнопка сворачивания работает только один раз. После этого необходимо...

TrayIcon
Здравствуйте. Написал программку, создал ярлык к экзешнику и поместил в автозагрузку. При запуске компа программка выдает ошибку: ...

Работа с TrayIcon
Здраствуйте, как сделать чтобы при нажатии кнопки свернуть справа вверху на проге она сворачивалась не в панель задач, а появлялся значок в...

8
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
14.10.2009, 22:35
Цитата Сообщение от Rumus Посмотреть сообщение
а мне нужно по нажатию на значок закрытие или скрытие формы в правом верхнем углу формы.....
напиши в событии OnCloseQuery:

C++
1
2
3
CanClose = false;
TrayIcon->Visible = true;
Form1->Hide();
1
6 / 6 / 1
Регистрация: 29.09.2009
Сообщений: 91
14.10.2009, 22:47  [ТС]
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
напиши в событии OnCloseQuery:

C++
1
2
3
CanClose = false;
TrayIcon->Visible = true;
Form1->Hide();
Большое спасибо работает, а что такое CanClose = false;
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
14.10.2009, 22:50
Лучший ответ Сообщение было отмечено как решение

Решение

Цитата Сообщение от Rumus Посмотреть сообщение
а что такое CanClose = false;
Это переменная, передваемая в метод, которая отвечает за возможность закрытия формы. Вообщем, OnCloseQuery выполняется тогда, когда посылается сообщение закрытия окна (аналогично OnClose и является посути нажатием на крестик), но в отличии от OnClose, можно управлять - стоит закрывать окно, или нет. В данном случае, мы присваеваем CanClose = false, что значит, что окно закрывать не надо, и выполняем код: добавлячем иконку в трей и прячем окно.
3
6 / 6 / 1
Регистрация: 29.09.2009
Сообщений: 91
14.10.2009, 22:58  [ТС]
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Это переменная, передваемая в метод, которая отвечает за возможность закрытия формы. Вообщем, OnCloseQuery выполняется тогда, когда посылается сообщение закрытия окна (аналогично OnClose и является посути нажатием на крестик), но в отличии от OnClose, можно управлять - стоит закрывать окно, или нет. В данном случае, мы присваеваем CanClose = false, что значит, что окно закрывать не надо, и выполняем код: добавлячем иконку в трей и прячем окно.
Спасибо за точность
1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
16.10.2009, 13:31
А у меня вот какой вопрос. TrayIcon - выставлены следующие свойства:

1. Visible - true // Показываем значок в трее
2. RestoreOn - imLeftClickUp // Восстанавливаем окно по одинарному щелчку л.к.м.

События:
1. OnClick
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void __fastcall TForm1::FormCreate(TObject *Sender)
{
   Flag = true;  // Объявлен в .h как bool Flag
}
...
// Переводим программу в трей и по щелчку восстанавливаем
// так же по щелчку левой кнопки мыши - прячем обратно-----------------------
void __fastcall TForm1::TrayIcon1Click(TObject *Sender)
{
   if(Flag){
     Form1->Visible = false;
     Flag = false;
    }
   else if(!Flag){
     Form1->Visible = true;
     Flag = true;
    }
}
Цель: Сделать, чтобы по одинарному щелчку иконки в трее, можно было восстановить\спрятать программу в трей.

Пока получается так. Жму кнопочку минимизации, программа прячется в трей(всё правильно). Щёлкаю иконку в трее, программа появляется(всё правильно). Жму иконку в трее, окно программы исчезает, но остаётся кнопка на панели задач... Как сделать, чтобы по щелчку на иконку программа так же скрывалась в трей, как если бы по кнопке минимизации.

Пробовал различные выкрутасы с обработчиком OnRestrore и OnMinimize, но получается либо так же, либо совсем не так...
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
17.10.2009, 01:14
Maestrino,
1. Вместо флага, попробуй сделать так (зачем нужна переменная, если она есть в классе ):

C++
1
2
3
4
    if (Form1->Showing)
        Form1->Hide();
    else
        Form1->Show();
2. Насчет кнопки на панели задач не понял вопроса... ты об этом?

C++
1
2
ShowWindow(Application->Handle, SW_HIDE); // спрятать задачу на панели задач
ShowWindow(Application->Handle, SW_SHOW); // отобразить задачу на панели задач
1
Маэстро
Вирусоборец
 Аватар для Maestro
1244 / 365 / 40
Регистрация: 06.09.2009
Сообщений: 798
17.10.2009, 11:31
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Вместо флага, попробуй сделать так
Попробовал. Но так ругается на то что невозможно вызвать функцию.
[C++ Ошибка] Tutor1.cpp(596): E2314 Call of nonfunction
C++
1
2
3
4
5
6
7
8
9
// Переводим программу в трей и по щелчку восстанавливаем
// так же по щелчку левой кнопки мыши - прячем обратно-----------------------
void __fastcall TForm1::TrayIcon1Click(TObject *Sender)
{
   if (Form1->Showing)
        Form1->Hide(); // На эту ругается
    else
        Form1->Show();
}
Цитата Сообщение от Monte-Cristo Посмотреть сообщение
Насчет кнопки на панели задач не понял вопроса...
Нет, когда программа должна сворачиваться в трей, то она сворачивается не в трей, а на панель задач.
0
 Аватар для Monte-Cristo
2816 / 1408 / 107
Регистрация: 07.03.2009
Сообщений: 4,446
17.10.2009, 12:34
Цитата Сообщение от Maestrino Посмотреть сообщение
Form1->Hide(); // На эту ругается
используй вместо Form1->Hide() и Form1->Show() соответственно:
C++
1
2
ShowWindow(Form1->Handle, SW_HIDE); // спрятать главное окно
ShowWindow(Form1->Handle, SW_SHOW); // отобразить главное окно

Цитата Сообщение от Maestrino Посмотреть сообщение
Нет, когда программа должна сворачиваться в трей, то она сворачивается не в трей, а на панель задач.
ну естевственно, это действие поумолчанию. ты должен отлавливать событие сворачивания окна, прятать окно с панели задач (функцию я приводил выше) и добавлять иконку в трей.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
17.10.2009, 12:34
Помогаю со студенческими работами здесь

PopUpMenu в TrayIcon
Подскажите в как исправить проблему с PopUpMenu в TrayIcon, - он почему-то складывается в 2 столбца а не как у всех программ в один, кто...

TrayIcon и ImageList
Здравствуйте!! Ребята, подскажите, по такому вопросу. Создаю иконку в трее не через компонент, а динамически и иконку загружаю из...

BallonTimeout в TrayIcon
Использую C++Builder XE4. Решил использовать TrayIcon и конкретно его метод ShowBallonHint(). В свойстве BallonTimeout поставил 10000 т.е...

TrayIcon с Child окном
Здравствуйте, подскажите, как можно исправить и можно ли вообще, тот факт, что при сворачивании дочернего окна, оно не спускается в трей, а...

Отсутствует TrayIcon (C++Builder XE)
Oтсутствует TrayIcon (C++Builder XE). Как сделать так, что он был. Пересмотрел все компоненты - нет его.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20%
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru