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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2013, 22:19   #1
nestquik
 
Регистрация: 26.10.2013
Сообщений: 6
Восклицание Обновление трея при наведенном курсоре

При наведении курсора на иконку в трее нужно, чтобы время обновлялось, пока курсор находится на трее.
Есть такой код:
Код:
procedure TForm1.TrayIcon1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Timer1.Enabled=True then
  begin
    TrayIcon1.Hint:=tk2;
    tk2:=IntToStr(hour)+':'+IntToStr(min)+':'+IntToStr(sec);
  end
  else
    if Timer3.Enabled=True then
      begin
        TrayIcon1.Hint:=tk2;
        tk2:=IntToStr(hs)+':'+IntToStr(ms)+':'+IntToStr(ss);
      end
    else
      begin
        TrayIcon1.Hint:=tk2;
        tk2:=TimeToStr(Now);
      end
end;
nestquik вне форума Ответить с цитированием
Старый 27.10.2013, 23:41   #2
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Кидаем таймер на форму с нужным интервалом, тут похоже 1 сек (1000).
У балун-хинта выставляем большой интервал, хоть час...
Псевдокод:
Код:
procedure TForm1.TrayIcon1MouseEnter;
begin
 MyTimer.enabled:=true;
 TrayIcon1.ShowBaloonHint;
end;

procedure TForm1.TrayIcon1MouseLeave;
begin
 TrayIcon1.HideBaloonHint; //скрываем хинт, если есть show, должен быть и hide
 //правда реализация закрытия хинта может быть другая...
 MyTimer.enabled:=false;
end;

procedure TForm1.MyTimerTimer
begin
 tk2:=IntToStr(hour)+':'+IntToStr(min)+':'+IntToStr(sec);//считаем нужное время
 TrayIcon1.Hint:=tk2; //выводим
end;
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 28.10.2013, 16:08   #3
nestquik
 
Регистрация: 26.10.2013
Сообщений: 6
По умолчанию

Если честно, то я не очень понял, что вы имели ввиду. Мне нужно чтобы показывало время в зависимости от включенного таймера: если включен таймер №1 то показывает время секундомера, если включен таймер №3 то показывает время таймера, если не включен ни 1 ни 3 то показывать текущее время по 2 таймеру... Исходя из вашего кода оно будет выводить время (если немного поправить), но хинт будет, как бы мерцать, правильно?
nestquik вне форума Ответить с цитированием
Старый 28.10.2013, 19:52   #4
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Ну, я думаю, мерцать ничего не должно.
Если балун-хинт - окно приложения, то скорее всего мы увидим такой же эффект, если бы просто ежесекундно меняли label на форме. При наведении мыши на значок программы в трее отрабатывает TrayIcon1MouseEnter (показывая сам хинт), при убирании мыши ~Leave (скрывая хинт).
Если такая реализация вообще возможна.
А расчет tk2 можете оставить такой, какой был.
Код:
procedure TForm1.MyTimerTimer
begin
 if Timer1.Enabled=True then
  begin
    TrayIcon1.Hint:=tk2;
    tk2:=IntToStr(hour)+':'+IntToStr(min)+':'+IntToStr(sec);
  end
  else
    if Timer3.Enabled=True then
      begin
        TrayIcon1.Hint:=tk2;
        tk2:=IntToStr(hs)+':'+IntToStr(ms)+':'+IntToStr(ss);
      end
    else
      begin
        TrayIcon1.Hint:=tk2;
        tk2:=TimeToStr(Now);
      end;
 TrayIcon1.Hint:=tk2; //выводим
end;
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 28.10.2013, 22:55   #5
nestquik
 
Регистрация: 26.10.2013
Сообщений: 6
По умолчанию

у TrayIcon'a нет ивента MouseEnter и MouseLeave не судьба?
nestquik вне форума Ответить с цитированием
Старый 29.10.2013, 18:44   #6
alextrof94
Форумчанин
 
Регистрация: 16.03.2013
Сообщений: 599
По умолчанию

Цитата:
Сообщение от nestquik Посмотреть сообщение
у TrayIcon'a нет ивента MouseEnter и MouseLeave не судьба?
Да, мой вариант отпадает...
alextrof94$gmail.com
alextrof94 вне форума Ответить с цитированием
Старый 29.10.2013, 21:37   #7
nestquik
 
Регистрация: 26.10.2013
Сообщений: 6
По умолчанию

На соседнем форуме помогли, правда не совсем так, как я хотел но все же:
Код:
procedure TForm1.TrayIcon1BalloonClick(Sender: TObject);
begin
  Timer4.Enabled := not Timer4.Enabled;
end;

procedure TForm1.Timer4Timer(Sender: TObject);
begin
  if Timer1.Enabled = True then
  begin
    tk2 := IntToStr(hour) + ':' + IntToStr(min) + ':' + IntToStr(sec);
    TrayIcon1.BalloonHint := tk2;
  end
  else if Timer3.Enabled = True then
  begin
    tk2 := IntToStr(hs) + ':' + IntToStr(ms) + ':' + IntToStr(ss);
    TrayIcon1.BalloonHint := tk2;
  end
  else
    TrayIcon1.BalloonHint := TimeToStr(Now);
  TrayIcon1.ShowBalloonHint;
end;

procedure TForm1.TrayIcon1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  TrayIcon1.Visible := false;
  Form1.Show;
  Timer4.Enabled := not Timer4.Enabled;
end;

procedure TForm1.TrayIcon1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if Timer1.Enabled = True then
    TrayIcon1.Hint := 'Секундомер'
  else if Timer3.Enabled = True then
    TrayIcon1.Hint := 'Таймер'
  else
    TrayIcon1.Hint := 'Текущее время';
end;
nestquik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обновление дат при помощи макроса alexp21 Microsoft Office Excel 2 26.09.2013 14:56
обновление при добавлении(delphi) Johny91 БД в Delphi 10 17.10.2012 17:24
ошибка при обновление БД 622089 PHP 4 29.02.2012 19:34
Offset. Обновление при открытии книги zavhoz Microsoft Office Excel 0 24.07.2009 18:03