![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
В общем, у меня такая задача. У моей программы есть плавающее окошко. При на ведении на него курсора необходимо, чтобы его яркость увеличивалась (как у Download Master'a). Как это сделать, подскажите пожалуйста. Желательно с примером.
|
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Скорее прозрачность уменьшалась! И это работает только в Вин 2000/Хр. Делается просто:
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
А можно ли чтобы все это делалось плавно? Ну, то есть яркость чтобы увеличивалась плавно.
|
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
||||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
Да нет, это тоже не то. Надо чтобы плавно, как у Download Master'а. Допустим, AlphaBlendValue плавающего окошка =155. Нужно чтобы это значание плавно увеличивалось до 255. Я вот думал через таймер, но может как - то попроще можно?
|
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Поставь sleep(50)
-------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| volvo877 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2073 Регистрация: 15.11.2004 Репутация: 14 Всего: 116 |
Ну, и чем, собственно, тебя не устраивает вышеприведенный код? Недостаточно плавно меняется? Что не так? Вот я, например, DM не использую, так что мне просто не известно, "как в Download Master", я показал тебе, как плавно уменьшить прозрачность...
|
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Комп выполнит твой код очень быстро. Так что ты увидишь этого "плавного" перехода. Все будет мгновенно! -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
Sunvas правильно говорит, это даже не успеваешь заметить. Все же думаю через таймер все сделать. Неужели нельзя сделать попроще?
|
|||
|
||||
| Sunvas |
|
|||
|
Соль и сахар ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3388 Регистрация: 12.3.2006 Где: Тосно Репутация: 28 Всего: 89 |
Проще уже некуда.. Ну, тода надо через таймер онимать и прибавлять количество прозрачности. Довольно мудрено. -------------------- Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их. |
|||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
Зато конечный результат, рассчитываю, будет неплохим. Выйдет как раз то, что мне нужно.
|
|||
|
||||
| PsychosisIRC |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 7 Регистрация: 3.6.2006 Репутация: нет Всего: нет |
на 100% уверен где нибудь на Тории валяется какой-нибудь компонент на эту тему...
если не хочешь париться лишний раз по мелочам заходи туда... или ещё где поищи... http://torry.net (если не ошибаюсь или ru... не помню) |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
Да ну ладно
Ты получишь постепенное, с нужной скоростью, уменьшение прозрачности... Разве это плохо? P.S. А почему - прозрачность, а не яркость? Конечно, свойства Color у формы и компонентов - это не совсем RGB код, но вполне можно было бы приближать цвет к белому при наведении, а при потере фокуса - уменьшать до, скажем, тёмно-синего... Добавлено @ 09:13 Я осознаю, что яркость != цветность. Но визуально это будет напоминать увеличение яркости. |
|||
|
||||
| Quadr0 |
|
|||
|
Unregistered |
...
Это сообщение отредактировал(а) Quadr0 - 15.7.2011, 11:23 |
|||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
А разве procedure TForm1.CMMouseEnter и procedure TForm1.CMMouseLeave не определяют, когда мышка наведена, а когда ее нет на форме?
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
jaAlex, но процедура по MouseLeave не начнёт работать, пока не отработает MouseEnter... Потому либо задействовать потоки, либо задействовать изменения по таймеру. А OnMouseEnter и ONMouseLeave только будет определять направление изменения прозрачности(будут менять только одну переменную)
|
|||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
Я вот об этом и подумал. В общем, думаю сделать так: задействовать изменения по таймеру в таймере увеличения и уменьшения прозрачности. Потому что про потоки знаю только общую теорию, а как работать с ними - не знаю, даже не представляю с чего начинать. Ты вот говорил, что можешь помочь с этим. Накидай пожалуйста мне примерный текст программы, дальше сам разберусь. Или линки на теорию по подобным темам. Очень буду признателен. |
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
я сам с потоками даже не "на Вы", а на "ой-ай поток... спасите!"
И поищи в хелпе на "TThread" |
|||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
Спасибо, будем разбираться. Но вот мне на данный момент проще сделать через таймер. А как будет более корректно с точки зрения исполнения?
|
|||
|
||||
| skyboy |
|
|||
|
неОпытный ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9820 Регистрация: 18.5.2006 Где: Днепропетровск Репутация: 4 Всего: 260 |
jaAlex, я не могу себя назвать специалистом
|
|||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
Я тогда пока буду пробовать это все реализовать, а потом, если что не получится, опять попрошу вашей, уважаемые форумчане, помощи. Ну а если все сделаю, то выложу текст реализации данной задачи сюда, может кому пригодиться.
|
|||
|
||||
| BinaryEvil |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 4.3.2006 Репутация: -1 Всего: 2 |
ручное оформление потоков не нужно. просто обрабатывать оба события паралельно (вставлять везде application.proccessmessages), и использовать в обработке обеих процедур какой-нибудь флаг. вместо флага можно mutex'ы и CriticalSection
|
|||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
Можно поподробнее, желательно с кодом. И что такое mutex'ы?
|
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Quadr0, какраз тут поток - совершенно лишний
оптимальный вариант использовать таймер.
писал без дельфей но думаю должно жыть нормально -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
z-END, данный пример работает, но есть одно НО: когда значение AlphaBlendValue:=255 таймер продолжает прибавлять к AlphaBlendValue 1 (при procedure TForm1.CMMouseEnter), что вобщем - то неправильно(если мышка находится на плавающем окошке). Мое плавающее окошко начинает мигать. Скоро сяду за Delphi и доведу до ума, времени пока катастрофически не хватает. После все выложу сюда. Почему? Через потоки тоже можно сделать, но вот я тут прикинул: через таймер будет более оптимально, как ты и сказал. |
|||
|
||||
| BinaryEvil |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 98 Регистрация: 4.3.2006 Репутация: -1 Всего: 2 |
||||
|
||||
| jaAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 64 Регистрация: 31.5.2006 Где: Краснодар Репутация: нет Всего: нет |
Но ведь тоже вариант!
|
|||
|
||||
| z-END |
|
||||||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
мдя
на :
потому что потоки используются для выполнения паралельных задач (например математический обсчет, запись гигабайтного файла на диск и визаулизация этих процессов) при работе с формой из потока необходима синхронизация - которая выполняется в основном потоке приложения, что полностью аналогично работе с таймером, только мароки больше. Это сообщение отредактировал(а) z-END - 9.6.2006, 18:34 -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
||||||
|
|||||||
| KgCoder |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 93 Регистрация: 6.3.2008 Где: KGstan Репутация: нет Всего: нет |
Не хотел поднимать старую тему, хочу заметить что используя таймер, лучше его не останавливать при достижении MaxAlpha или MinAlpha. Достаточно обнулить DeltaAlpha.
|
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |