Спрятать в трей, Спрятать в трей |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Спрятать в трей, Спрятать в трей |
WishMaster |
Сообщение
#1
|
Новичок Группа: Пользователи Сообщений: 47 Пол: Мужской Реальное имя: Юрий Репутация: 0 |
Здравствуйте всем,перейду к сути вопроса.В C++Builder есть компанент который прячет прграмму в трей (с течение времени меняет её иконку и т.д. вобшем красота), мне хотелось бы узнать можно ли в Delphi 5 тоже сотворить что-то подобное.Заранее спасибо
|
volvo |
Сообщение
#2
|
Гость |
WishMaster, а что это такое по-твоему, "компанент который прячет прграмму в трей" ? Нет такого понятия "прятать в трей". Есть - добавлять в трей иконку, и скрывать основное окно приложения... Это прекрасно делает, например, RxTrayIcon из библиотеки RxLib ...
А вообще - см. DRKB -> Системные функции и WinAPI -> System tray -> Как свернуть прогу в tray? + Как изменить иконку на Tray? + Как удалить иконку с Tray? |
WishMaster |
Сообщение
#3
|
Новичок Группа: Пользователи Сообщений: 47 Пол: Мужской Реальное имя: Юрий Репутация: 0 |
Компанент называется TreyIcon , но все равно спасибо
|
Mr.Dmitry |
Сообщение
#4
|
Новичок Группа: Пользователи Сообщений: 46 Пол: Мужской Реальное имя: Дмитрий Репутация: 0 |
Скачал я этот DRKB нашол код как сворачивать в трей вот этот код
Procedure TForm1.Ic(n:Integer;Icon:TIcon); вот список ошибок котрые выдает мне программа когда я добовляю этот код:
Может я какнит не правельно добавил эту процелуру или не зделал кокоето важное условие для этой процедуры? хотя в DRKB не чего не было написано! |
volvo |
Сообщение
#5
|
Гость |
Во-первых, этот код сам по себе ничего не делает, ты забыл добавить еще обработку WM_SYSCOMMAND (там же ниже написано), а во-вторых, добавь в список Uses модуль ShellApi...
|
Mr.Dmitry |
Сообщение
#6
|
Новичок Группа: Пользователи Сообщений: 46 Пол: Мужской Реальное имя: Дмитрий Репутация: 0 |
Во-первых, этот код сам по себе ничего не делает, ты забыл добавить еще обработку WM_SYSCOMMAND (там же ниже написано), а во-вторых, добавь в список Uses модуль ShellApi... Все заработало но я как понел по нажатию левой кнопки мыши на иконке в трее программа должна развернуться но этого не происходит иконка в трее остаеться а программа как будто свернута но при попытки её развернуть не чего не происходит! |
volvo |
Сообщение
#7
|
Гость |
Телепатия?
Откуда МЫ видим, что именно ДОЛЖНО у тебя там происходить? |
Mr.Dmitry |
Сообщение
#8
|
Новичок Группа: Пользователи Сообщений: 46 Пол: Мужской Реальное имя: Дмитрий Репутация: 0 |
Телепатия? Откуда МЫ видим, что именно ДОЛЖНО у тебя там происходить? Причем здесь телепатия? Я же говорю в тексте программы есть оброботчик события нажатия левой кнопки мыши по которой программа должна разернуться в исходное состояние вот код . . . case Msg.LParam of WM_LBUTTONUP, WM_LBUTTONDBLCLK: begin Ic(3, Application.Icon); ShowWindow(Application.Handle, SW_SHOWNORMAL); end; WM_RBUTTONUP: begin SetForegroundWindow(Handle); . . . Но не принажадии один раз на иконку в треи не при нажатии два раза не чего не происходит (тоесть программа не востонавливает свои исходные размеры) И еще как зделать чтоб программа сразу сама сворачивалась в трей после запуска? Сообщение отредактировано: Mr.Dmitry - |
volvo |
Сообщение
#9
|
Гость |
Цитата вот код Неправильный код... Вот так:procedure TForm1.ControlWindow(var Msg: TMessage); все работает... |
Mr.Dmitry |
Сообщение
#10
|
Новичок Группа: Пользователи Сообщений: 46 Пол: Мужской Реальное имя: Дмитрий Репутация: 0 |
Все равно все работает не так как мне бы хотелось.
1. В каждой форме приходиться встовлять этот код и каждая оддельная форма сворачиваеься в оодельную иконку в треии. 2. Не получаеться чтобы программа при запуске сразу была свернута в трей(тоесть для того чтобы она свернулась приходиться нажимать кнопку свертывания формы) 3. В панели около "пуск" программа не исчезает (она сворачиваеться в трей и продолжает висеть в в панели около кнопки пуск) 4. А есть какойнибуть более лекгий код свертывания в трей или нету. Ну так вот может ктонибуть поможет мне оптимизировать код свертывания в трей? Вот код моей программы:(приведен без процедур свертывания в трей) unit Unit1; Вообщем то задумка такова. При запуске программа висит в треи пока не будет соединения с интернетом с определнным диапозоном ip адрессов. После того как соединение определяеться программа должна сома развернуться и вы дать сообщение (Адресс данного соединения тариф (определяеться по ip) реальное время, Длительность потключения интернета. Если Интернет отключен то программа овтамотически равертываеться и сообщает об этом. На иконке в трее есть три пункта Выход переход на другую форму и статистика. (Тоесть основное время программа проволит в треии). Извините конечно что я здесь привел весь кот (Возможно он написан более сложно для восприятия и его можно написать легче) Заренее спасибо |
volvo |
Сообщение
#11
|
Гость |
Цитата Все равно все работает не так как мне бы хотелось. Ну, ты же придумываешь новые правила в ходе игры, что ж ты хочешь? Цитата 1. В каждой форме приходиться встовлять этот код и каждая оддельная форма сворачиваеься в оодельную иконку в треии. А ты что хотел? Чтобы по клику в трее сразу всплывали ВСЕ формы, туда минимизированные? Или только четвертая? А почему не вторая? То, что КАЖДАЯ форма имеет иконку в трее - самый логичный вариант...Чтоб не писать этот код для КАЖДОЙ формы, можешь создать класс TTrayedForm, например, унаследовав его от TForm, в нем реализовать все эти методы, а свои формы создавать уже: Type Цитата 2. Не получаеться чтобы программа при запуске сразу была свернута в трей(тоесть для того чтобы она свернулась приходиться нажимать кнопку свертывания формы) А пробовал?Я вот попробовал, и, знаешь, получилось... { Эту процедуру не забудь добавить в класс формы } Цитата 3. В панели около "пуск" программа не исчезает (она сворачиваеться в трей и продолжает висеть в в панели около кнопки пуск) Да ты что???procedure TForm1.ControlWindow(var Msg: TMessage); Цитата 4. А есть какойнибуть более лекгий код свертывания в трей или нету. Если делать все ручками - нету, а по бездумному бросанию компонентов на форму, извини, я не специалист...Итог: Чтобы программы работали, как ТЫ хочешь - надо ТЕБЕ самому их и писать, не так ли? |
Текстовая версия | 18.09.2024 12:55 |