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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.07.2010, 13:22   #1
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию Показать форму при наведении

Всем привет.

ВОбщем решил добавить некую удобность в плеер, а именно,
при наведении мыши на трей иконку, появляется форма где можно будет менять громкость.
Вроде бы все сделал.
Но есть 2 пакости.

1.Как точно определить где показывать форму смены громкости?
Аналогично coolTrayIcon1.PopupAtCursor.

2.При появлении формы громкости, если навести мышку на регулятор и попробовать
его сместить, то это делается как бы с задержкой, а иногда вообще со второго раза.

3.Ну и собственно. если кто писал уже подобное)
подскажите как сделать что бы скролл бар оставлял за собой полосу)
как в аимпе.

Для наглядности прикладываю пример.
Вложения
Тип файла: zip Громкость в TREE.zip (242.9 Кб, 15 просмотров)
Moonquake
phphel вне форума Ответить с цитированием
Старый 31.07.2010, 14:25   #2
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

есть кто?)
Moonquake
phphel вне форума Ответить с цитированием
Старый 31.07.2010, 14:48   #3
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

кто-то есть.... сейчас посмотрю...

Цитата:
1.Как точно определить где показывать форму смены громкости?
Аналогично coolTrayIcon1.PopupAtCursor.
В твоем коде не вижу смысла, лучше уж действительно использовать coolTrayIcon1.PopupAtCursor.

Цитата:
2.При появлении формы громкости, если навести мышку на регулятор и попробовать
его сместить, то это делается как бы с задержкой, а иногда вообще со второго раза.
Естественно, т.к. у тебя при смещении регулятора каждый раз вызывается событие CoolTrayIcon1MouseMove
Никогда не знаешь, где тебе повезет... (Фрай)

Последний раз редактировалось DIgorevich; 31.07.2010 в 14:56.
DIgorevich вне форума Ответить с цитированием
Старый 31.07.2010, 15:07   #4
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

Цитата:
Сообщение от DIgorevich Посмотреть сообщение
В твоем коде не вижу смысла, лучше уж действительно использовать coolTrayIcon1.PopupAtCursor.
Смысл есть, coolTrayIcon1.PopupAtCursor что мне даст?
Эта процедура выводит PopUp окно в трее, если бы она давала координаты мыши при
наведении на иконку, то другое дело.

Цитата:
Сообщение от DIgorevich Посмотреть сообщение
Естественно, т.к. у тебя при смещении регулятора каждый раз вызывается событие CoolTrayIcon1MouseMove
а вот тут верно, что-то я это не учел...
я так понимаю надо типа так..

Код:
if form2.onShow = true
then begin
	form2.show;
end;
Moonquake

Последний раз редактировалось phphel; 31.07.2010 в 15:09.
phphel вне форума Ответить с цитированием
Старый 31.07.2010, 15:19   #5
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от phphel Посмотреть сообщение
Смысл есть, coolTrayIcon1.PopupAtCursor что мне даст?
Эта процедура выводит PopUp окно в трее, если бы она давала координаты мыши при
наведении на иконку, то другое дело.
Ну а кто мешает получить позицию курсора?

Код:
 
var
  P: TPoint;
begin
  GetCursorPos(p);
  form2.Left:=p.x;
  form2.Top:=p.y;
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 31.07.2010, 15:23   #6
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

DIgorevich, ну просмотри мой код более внимательней)
там я и так получаю позицию курсора, причем даже если мышь не находится на форме, в отличии от этого кода

Код:
 
var
  P: TPoint;
begin
  GetCursorPos(p);
  form2.Left:=p.x;
  form2.Top:=p.y;
Но проблема заключается в том, что мне надо получить координаты курсора именно над иконкой в трее, аналогично coolTrayIcon1.PopupAtCursor как я уже писал.
Moonquake
phphel вне форума Ответить с цитированием
Старый 31.07.2010, 15:25   #7
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Неверно. у себя ты определяешь координаты относительно своей формы\программы. А функция GetCursorPos получает координаты экранные.
Никогда не знаешь, где тебе повезет... (Фрай)
DIgorevich вне форума Ответить с цитированием
Старый 31.07.2010, 15:28   #8
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

DIgorevich. да нет, как раз наоборот, в моем коде по моему это четко видно.
Moonquake
phphel вне форума Ответить с цитированием
Старый 31.07.2010, 15:30   #9
phphel
Форумчанин
 
Аватар для phphel
 
Регистрация: 12.07.2010
Сообщений: 249
По умолчанию

В моем коде, я при наведении мыши на иконку, получаю X и Y мыши, и по этим координатам вывожу форму, но как видно из примера, это получается криво, надо узнать даже не left параметр формы, а top.

если бы я знал как получить высоту экрана минус высота таскбара, то думаю проблема бы решилась
Moonquake
phphel вне форума Ответить с цитированием
Старый 31.07.2010, 15:38   #10
DIgorevich
Погулять вышел
Участник клуба
 
Аватар для DIgorevich
 
Регистрация: 17.05.2010
Сообщений: 1,573
По умолчанию

Цитата:
Сообщение от phphel Посмотреть сообщение
DIgorevich. да нет, как раз наоборот, в моем коде по моему это четко видно.
Точно, был не прав, извиняюсь!
но в этом вообще не вижу смысла...
Код:
procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
 if GetCapture = 0 then
   SetCapture(Form2.Handle);
   if PtInRect(Rect(Form2.Left,Form2.Top,Form2.Left + Form2.Width,
   Form2.Top + Form2.Height),ClientToScreen(Point(x, y)))
   then else form2.Close;
end;
Лучше просто допиши:

Код:
procedure TForm2.FormDeactivate(Sender: TObject);
begin
   ReleaseCapture;
   form2.Close;
end;
Никогда не знаешь, где тебе повезет... (Фрай)

Последний раз редактировалось DIgorevich; 31.07.2010 в 15:43.
DIgorevich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Показать форму свернутую на панели задач Shouldercannon Общие вопросы Delphi 2 29.06.2010 18:24
звук при наведении beygul Помощь студентам 16 13.01.2010 22:05
builder. Как показать вторую форму? Как подключить другой юнит? TwiX C++ Builder 2 21.12.2009 21:29
Как показать форму в Visual C++? Vitek-pm Visual C++ 2 21.02.2009 22:19
Как показать одну форму из другой в С++ по нажатию кнопки anton.metal Общие вопросы .NET 1 21.11.2008 19:38