![]() |
|
|
![]()
|
|
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
есть код, который запускается в таймере:
На форме трей (из стандартной поставки ВСВ6.0), два ImageList (ImageAnimate и ImageNoAnimate). в первом ImageAnimate занесено 19 иконок для анимации, когда запускается таймер во втором ImageNoAnimate всего две картинки с 0 и 1 индексом. Хочу, что бы при запуске таймера анимировалась иконка в трее, а она стоит как вкопанная вот лог из этого участка программы: *************************************************** Start Program 11.01.2007 *************************************************** 13:06:54 Start of the cycle 13:06:54 TrayIcon -> ImageAnimate 13:06:54 TrayIcon Animate -> true 13:06:55 TrayIcon -> ImageNoAnimate 13:06:55 TrayIcon Animate -> true 13:07:05 Start of the cycle 13:07:05 TrayIcon -> ImageAnimate 13:07:05 TrayIcon Animate -> true 13:07:05 TrayIcon -> ImageNoAnimate 13:07:05 TrayIcon Animate -> true 13:07:15 Start of the cycle 13:07:15 TrayIcon -> ImageAnimate 13:07:15 TrayIcon Animate -> true 13:07:15 TrayIcon -> ImageNoAnimate 13:07:15 TrayIcon Animate -> true из него видно, что команда TrayIcon1->Animate=false; не выполняется. В чем дело, понять не могу Это сообщение отредактировал(а) Bima - 11.1.2007, 12:18 -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
отслеживал по шагам свою программы, и видно, что команда TrayIcon1->Icons=ImageAnimate; не выполняется.
Каким образом можно компоненту TrayIcon1 присвоить иконку? начал делать так:
но вот дальше вытащенную иконку MyIcon не могу прикрутить к TrayIcon1, как ни стараюсь -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Смотри внимательно билдеровский пример.
Присоединённый файл ( Кол-во скачиваний: 31 )
Traydemo.zip 16,04 Kb |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Пример хороший, но у меня задача немного другая. В вашем примере есть один ImageList, куда загружены все иконки, а у меня анимационные иконки идут в одном ImageList, а статичные в другом. Что бы было понятно объясню мой алгоритм.
Есть программа, которая с определенным интервалом (через таймер) опрашивает сервера и в момент опроса делает определенные действия (для примера можно взять поиск файла на сервере). Так вот, когда идет поиск файла, я хочу что бы иконка в трее была анимированной, а в зависимости от того, нашла программа файл или нет выставляются по окончанию поиска либо иконку, что файл не найден или иконку, что файл найден. На данный момент я не могу использовать RxLib, а в нем все решалось бы достаточно просто, так как там есть два свойства: RxTrayIcon1->Icon - это свойство, куда загружается статичная иконка RxTrayIcon1->Icons - это свойство, куда загружаюся иконки для анимации для того, что бы поменять иконку в свойстве RxTrayIcon1->Icon, я бы использовал такой код:
Как мне, все тоже самое реализовать на стандартном компоненте TrayIcon? P.S. Запихнуть все иконки (статические и анимированные) в один ImageList, я не могу, так как при анимировании трея будут выскакивать статические иконки, что по алгоритму не правильно. -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
||||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Оригинальное решение, я об этом не подумал. Но если честно это обходное решение, но как решение - имеет право быть. Если не найду более легкого решения, то буду использовать этот метод.
Здесь используется два компонента TrayIcon которые нужно настраивать одинаково Этот пример легкий, и на моей быстрой машине смена компонентов (TrayIcon) не заметна, а на старых машинах не может получится так, что одновременно выскачат две иконки (на небольшое время)? Это сообщение отредактировал(а) Bima - 12.1.2007, 08:51 -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
||||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
А в эмуляторе проблемы
кстати, вот у меня такой код:
проблема как раз в прорисовке иконок в трее. Сначала одна появляется, потом вторая, и после этого исчезает первая. -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
не знаю, возможно есть другой вариант. Юзать только 1 tray. Посмотрю.
Это сообщение отредактировал(а) codelord - 12.1.2007, 10:56 |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
в смысле код плохой??? -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Вот
про фигню это я про себя поэтому стер. У тебя все нормально. Добавлено @ 11:09 там 1 Tray Присоединённый файл ( Кол-во скачиваний: 10 )
animate2.zip 22,85 Kb |
|||
|
||||
| Bima |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 518 Регистрация: 15.8.2006 Репутация: 2 Всего: 2 |
Я хотел реализовать подобное, но остановило вот что:
Допустим я выставляю таймер на 500 мс, иконки прокручиваются (при анимации), но в основной программе у меня есть запрос к серверу, который может выполянятся быстро, а может и пару секунд. Во время этих 2 секунд по логике должно произойти 4 прерывания на выполнение таймера и сответственно 4 раза обновится иконки. Но у меня такое ощущение, что таймер выполняется в одном потоке с программой и за эти 2 секунды обновления иконок не будет. А вот в предпоследнем способе(два компонента TrayIcon), компонент в отдельном потоке анимирует иконкии подвисаний не должно быть. Это все мои домыслы поэтому и не утверждаю (хотя хотелось бы знать поточнее). Добавлено @ 11:43 codelord Для примера поставьте в свою последнюю программу следующий код:
Запустите анимацию, а потом запустите код на 5 кнопке и посмотрите, будет ли торможение анимации -------------------- Чтобы дойти до цели, надо идти. Клавиатура и мышь - это главные инструменты прогресса. |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
таймер это не один поток с програмой. А вариант по моему приемлемый.
Добавлено @ 11:59 Засовывай свою качалку в отдельный поток, а то вешаешь все приложение и хочешь чтобы анимация была. |
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
можешь посмотреть что стандартной анимацией во время зависа программы тоже анимирует
|
|||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 16 Всего: 39 |
Bima, ты чего молчишь обиделся чтоли?.
Я к тому что основной поток (К которому относится главная форма) Должен быть более или менее свободен, если ты предполагаешь что он во время работы должен отзываться. В противном случае лучше рассовывать свои не быстрые обработки по потокам. Если занят основной поток, то он и плохо отзывается на другие дополнительные. Поэтому и TrayIcon не анимирует когда висит форма. |
|||
|
||||
![]()
|
| Правила форума "С++ Builder" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C++ Builder | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |