Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > C++ > C++ Builder
Регистрация

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

Ответ
 
Опции темы
Старый 01.09.2015, 19:24   #1
Smitt&Wesson
Профессионал
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Адрес: г. Киров
Сообщений: 13,994
Репутация: 622

skype: forwardbiznes
По умолчанию Не срабатывает событие OnActivate

Вернее, оно срабатывает только один раз, когда программа толко загрузилась и первый раз я вызываю её из трея. Потом, я прячу её в трей. При повторных вызовах из трея, OnActivate не срабатывает.

В общем идея такая. Пишу напоминалку. Произошедшие события, она вводит в подсказку иконки в трее и она начинает мигать. Как только я нажимаю на иконку, должно открываться окно программы. Мигание иконки прекращается и всплывающая подсказка стирается.

Если не через OnActivate, через какое событие это можно сделать или как возобновить срабатывание On Activate?
__________________
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума   Ответить с цитированием
Старый 01.09.2015, 19:36   #2
Smitt&Wesson
Профессионал
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Адрес: г. Киров
Сообщений: 13,994
Репутация: 622

skype: forwardbiznes
По умолчанию

Всё. Разобрался. Нужно использовать событие OnShow.
__________________
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума   Ответить с цитированием
Старый 01.09.2015, 20:16   #3
xxbesoxx
Профессионал
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Адрес: Грузия Рустави
Сообщений: 1,268
Репутация: 628
Отправить сообщение для xxbesoxx с помощью Yahoo
По умолчанию

Цитата:
общем идея такая. Пишу напоминалку. Произошедшие события, она вводит в подсказку иконки в трее и она начинает мигать.
Если с помощью компоненту Timer установить нужное интервал
Код:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
	: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
  Label1->Visible = !Label1->Visible;
  Label1->Font->Color = 0x007F42E1;
  Label1->Caption = L"Оплатите долг пожалуйста ;))";
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{ // отключить
  Label1->Visible =false;
  Timer1->Enabled =false;

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{   // включить
  Label1->Visible =true;
  Timer1->Enabled =true;
}
//---------------------------------------------------------------------------

__________________
E_MAIL: rijgvina7@yahoo.com
xxbesoxx вне форума   Ответить с цитированием
Старый 01.09.2015, 20:26   #4
Smitt&Wesson
Профессионал
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Адрес: г. Киров
Сообщений: 13,994
Репутация: 622

skype: forwardbiznes
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Если с помощью компоненту Timer установить нужное интервал
Спасибо конечно, но у меня иконка в трее мигает а не метка. Два таймера. Один управляет миганием иконки, другой служит для проверки базы на совпадение даты и времени. Проверка делается ежеминутно.
__________________
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума   Ответить с цитированием
Старый 01.09.2015, 20:34   #5
xxbesoxx
Профессионал
 
Аватар для xxbesoxx
 
Регистрация: 10.08.2010
Адрес: Грузия Рустави
Сообщений: 1,268
Репутация: 628
Отправить сообщение для xxbesoxx с помощью Yahoo
По умолчанию

Цитата:
другой служит для проверки базы на совпадение даты и времени.
Если я правильно понял .... при работе "базы" если имеется в виду "база данных" то когда иконка будет моргать ? при переходу :ADOQuery1AfterScroll(TDataSet *DataSet) и такой вариант не прокатить .... Если я неправильно понял вас ... извиняюсь )
__________________
E_MAIL: rijgvina7@yahoo.com
xxbesoxx вне форума   Ответить с цитированием
Старый 01.09.2015, 20:46   #6
Smitt&Wesson
Профессионал
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Адрес: г. Киров
Сообщений: 13,994
Репутация: 622

skype: forwardbiznes
По умолчанию

Цитата:
Сообщение от xxbesoxx Посмотреть сообщение
Если я правильно понял .... при работе "базы" если имеется в виду "база данных" то когда иконка будет моргать ? при переходу :ADOQuery1AfterScroll(TDataSet *DataSet) и такой вариант не прокатить .... Если я неправильно понял вас ... извиняюсь )
Нет не база данных. Это я её так называю. Это простой XML в который записывается инфа. Вот, заготовка того, что я уже сделал за два дня.
Запускаем прогу. Ждём минуту. Иконка начинает мигать и при наведени на неё мыши, выскакивает всплывающая подсказка в которой будут выводится названия тех тем, которые активны. При нажатии на иконку, мигание прекращается и не возобновляется до тех пор, пока окошко не будет закрыто.
Вложения
Тип файла: rar Reminder.rar (280.9 Кб, 11 просмотров)
__________________
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 01.09.2015 в 20:50.
Smitt&Wesson вне форума   Ответить с цитированием
Старый 02.09.2015, 09:36   #7
Krok27
Участник клуба
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Адрес: Москва
Сообщений: 505
Репутация: 181
По умолчанию

Smitt&Wesson хотел подсобить с событием, потом смотрю сам разобрался (OnShow).
А исходничек, если не жалко, можно в ЛС.
__________________
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 02.09.2015 в 10:00.
Krok27 вне форума   Ответить с цитированием
Старый 02.09.2015, 13:05   #8
Smitt&Wesson
Профессионал
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Адрес: г. Киров
Сообщений: 13,994
Репутация: 622

skype: forwardbiznes
По умолчанию

Цитата:
Сообщение от Krok27 Посмотреть сообщение
Smitt&Wesson хотел подсобить с событием, потом смотрю сам разобрался (OnShow).
А исходничек, если не жалко, можно в ЛС.
Так она жутко недоработана. Но если есть желание посмотреть как сделано, я и сюда могу выложить, не жалко.

В конце public: афйла .h прописываем

Код:

  BEGIN_MESSAGE_MAP
  MESSAGE_HANDLER(MyTrayIcon,TMessage,MTIcon);
  END_MESSAGE_MAP(TComponent);

В этом-же файле, сразу перед классом формы, определяем глобальную переменную
const MyTrayIcon = WM_USER + 1;

В private: прописываем шаблон функции
void __fastcall MTIcon(TMessage&);

В файле .cpp прописываем глобальную переменную
TNotifyIconData NID;

Код:

//****************************  Иконка в трее  ******************************
void __fastcall TFormHome::MTIcon(TMessage&a)
{
 POINT P;
 switch( a.LParam)
 {
  case 514://WM_LBUTTONDBLCLK:
  {
   Show();
   SetForegroundWindow(Handle);
   break;
  }
  case 516://WM_RBUTTONDOWN:
  {
   GetCursorPos(&P);
   PopupMenu1->Popup(P.x,P.y);
  }
 }
}
//---------------------------------------------------------------------------
BOOL WeAreAlone(LPSTR szName)
{
HANDLE hMutex=CreateMutex(NULL,TRUE,szName);
if (GetLastError()==ERROR_ALREADY_EXISTS)
  {
  CloseHandle(hMutex);
  return false;
  }
return true;
}
//...........................................................................
void __fastcall TFormHome::FormCreate(TObject *Sender)
{
 // Активируем иконку в трее 
 Application->ShowMainForm = false;
 NID.cbSize = sizeof(TNotifyIconData);
 NID.hWnd = Handle;
 NID.uID = 1;
 NID.uFlags = NIF_ICON | NIF_MESSAGE | NIF_TIP;
 NID.uCallbackMessage = MyTrayIcon;
 NID.hIcon = Application->Icon->Handle;
 strcpy(NID.szTip, "");//"Мое приложение");
 Shell_NotifyIcon(NIM_ADD, &NID);
}
//--------------------------------------------------------------------
// Уничтожение формы
void __fastcall TFormHome::FormDestroy(TObject *Sender)
{
  Shell_NotifyIcon(NIM_DELETE, &NID);
}
//--------------------------------------------------------------------
// Таймер мигания кнопки
void __fastcall TFormHome::Timer2Timer(TObject *Sender)
{
  if(Timer2->Tag == 0)
  {
    TImage *img  = new TImage(Application);// Пустое поле
    NID.hIcon = img->Picture->Icon->Handle;
    Timer2->Tag = 1;
    delete img;
  }
  else
  {
    NID.hIcon = Application->Icon->Handle;// Иконка приложения
    Timer2->Tag = 0;
  }
  Shell_NotifyIcon(NIM_MODIFY, &NID);
}
//-------------------------------------------------------------------
// Закрыть
void __fastcall TFormHome::PopUpShutdown1Click(TObject *Sender) {Close();}
// Свернуть
void __fastcall TFormHome::PopUpMenuHideClick(TObject *Sender){Visible = false;}
// Развернуть
void __fastcall TFormHome::PopUpProperties1Click(TObject *Sender)
{Show();}
//------------------------------------------------------------------
//************************  Работа с базой данных ***************************
// Выдача сообщения в трей
void __fastcall TFormHome::Timer1Timer(TObject *Sender)
{
// Здесь проверка БД и вывод результатов в трей и в блок сообщений
strcpy(NID.szTip,"День рождения у Васи\nДень рождения у Пети");// Вывадим сообщение в трей
Shell_NotifyIcon(NIM_MODIFY, &NID);
Timer2->Enabled = true;
}
//---------------------------------------------------------------------------
// Обнуляем подсказку в трее и выключаем таймеры
void __fastcall TFormHome::FormShow(TObject *Sender)
{
NID.hIcon = Application->Icon->Handle;
strcpy(NID.szTip, "");// Уничтожаем подсказку
Shell_NotifyIcon(NIM_MODIFY, &NID);
Timer1->Enabled = false;
Timer2->Enabled = false;
}
//---------------------------------------------------------------------------
// Разрешаем проверку базы даных
void __fastcall TFormHome::FormHide(TObject *Sender)
{
Timer1->Enabled = true;
}
//---------------------------------------------------------------------------

Вот и всё. Ничего сложного.
__________________
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 02.09.2015 в 13:17.
Smitt&Wesson вне форума   Ответить с цитированием
Старый 03.09.2015, 09:01   #9
Krok27
Участник клуба
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Адрес: Москва
Сообщений: 505
Репутация: 181
По умолчанию

Цитата:
Сообщение от Smitt&Wesson Посмотреть сообщение
Так она жутко недоработана. Но если есть желание посмотреть как сделано, я и сюда могу выложить, не жалко.
Ну никто ж не требует от тебя код отвечающий требованиям контрольного задания на соискание должности ведущего разработчика какой нибудь неизвестной фирмы Microsoft. Форум на то и форум что бы делиться. Спасибки.
__________________
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Com порт - не могу получить данные. Не срабатывает событие DataReceived nastya_nlo C# (си шарп) 15 26.01.2015 22:36
Не всегда срабатывает событие (Event) Antony41 БД в Delphi 4 24.11.2014 17:57
Не срабатывает событие OnMouseWheel Хамяг Общие вопросы Delphi 2 24.05.2011 16:27
Не срабатывает OnActivate у формы SolovejK Общие вопросы Delphi 6 28.03.2010 15:26
Проблема с OnActivate Dennis777 Помощь студентам 6 04.01.2010 20:30


23:52.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru