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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2017, 07:21   #1
Nurbek91
Новичок
Джуниор
 
Регистрация: 10.02.2017
Сообщений: 1
По умолчанию Уведомления в трее

Доброго времени суток уважаемые форумчане.
Сразу к делу...
Есть DbGrid в котором имеется список значений (список значений появляется за счет sql запроса в БД) и нужно чтобы программа выводила уведомление в трее если в этот список добавляется запись.
P.s. Список обновляется каждые 10сек. при помощи таймера, т.е. запрос в БД идет каждые 10 сек.
Вот собственно "говнокод"))
Код:
unit Unit1;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, CoolTrayIcon, TextTrayIcon, DB, Grids, DBGrids, ADODB,
  ExtCtrls, Menus, XPMan, sSkinProvider, sSkinManager, acDBGrid;
 
type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOQuery1: TADOQuery;
    DataSource1: TDataSource;
    Timer1: TTimer;
    CoolTrayIcon1: TCoolTrayIcon;
    PopupMenu1: TPopupMenu;
    N1: TMenuItem;
    N2: TMenuItem;
    ADOQuery1discussion_value: TStringField;
    ADOQuery1create_date: TDateField;
    ADOQuery1create_user: TStringField;
    ADOQuery1task_code: TStringField;
    ADOQuery1task_name: TStringField;
    ADOQuery1proj_short_name: TStringField;
    ADOQuery1wbs_name: TStringField;
    ADOQuery1name: TStringField;
    Timer2: TTimer;
    sSkinManager1: TsSkinManager;
    sSkinProvider1: TsSkinProvider;
    DBGrid1: TsDBGrid;
    procedure SQL(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure N1Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
    procedure CoolTrayIcon1DblClick(Sender: TObject);
    procedure KOL(Sender: TObject);
  private
  procedure MouseWheelHandler(var Message: TMessage);
  override;
    { Private declarations }
  public
   disc_q:integer;
    { Public declarations }
  end;
 
var
  Form1: TForm1;
 
implementation
 
{$R *.dfm}
//Прокрутка колесиком списка
procedure TForm1.MouseWheelHandler(var Message: TMessage);
var  
p:TPoint;
begin
GetCursorPos(p);
If WindowFromPoint(p)=DBGrid1.Handle then
begin
  If Message.WParam<0
 then
  DBGrid1.Perform(WM_VSCROLL, SB_LINEDOWN, 0)
 else
  DBGrid1.Perform(WM_VSCROLL, SB_LINEUP, 0);
end;
end;
 
   //SQL запрос при созданий формы
 
procedure TForm1.FormCreate(Sender: TObject);
begin
 ADOQuery1.SQL.Text:='SELECT d.discussion_value,d.create_date,d.create_user,t.task_code,'+
  ' t.task_name,p.proj_short_name,w.wbs_name,p1.name' +
 ' FROM DISCUSSION d,task t, PROJWBS w, PROJECT p, PROJECTX p1   '+
  'WHERE d.task_id=t.task_id    '+
 ' AND t.proj_id=p.proj_id    '   +
 ' AND t.wbs_id=w.wbs_id     '     +
 ' AND t.proj_id=p1.proj_id order by d.create_date desc; ' ;
ADOQuery1.Active:= true;
 end;
 
 
 //SQL запрос в БД
 
    procedure TForm1.SQL(Sender: TObject);
begin
   ADOQuery1.SQL.Text:='SELECT d.discussion_value,d.create_date,d.create_user,t.task_code,'+
  ' t.task_name,p.proj_short_name,w.wbs_name,p1.name' +
 ' FROM DISCUSSION d,task t, PROJWBS w, PROJECT p, PROJECTX p1   '+
  'WHERE d.task_id=t.task_id    '+
 ' AND t.proj_id=p.proj_id    '   +
 ' AND t.wbs_id=w.wbs_id     '     +
 ' AND t.proj_id=p1.proj_id order by d.create_date desc; ' ;
  ADOQuery1.Active:= true;
end;
 
 
 
  procedure TForm1.KOL(Sender: TObject);
var kolvo:integer;
begin
disc_q:=ADOQuery1.RecordCount;
    kolvo:=ADOQuery1.RecordCount ; //119
           if kolvo=disc_q then
    CoolTrayIcon1.ShowBalloonHint('NewsTape', 'Новое сообщение', bitWarning, 11);
   // ShowMessage ('kolvo='+IntToStr(kolvo));
   // ShowMessage('disc_q='+IntToStr(disc_q));
    end;
 
//Разворачивание с трея
procedure TForm1.N2Click(Sender: TObject);
begin
CoolTrayIcon1.ShowMainForm;
end;
 
 //Выход
procedure TForm1.N1Click(Sender: TObject);
begin
halt;
end;
 
   //Сворачивание в трей вместо выхода
 
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := false;
   Application.Minimize;
end;
 
 //Разворачивание при двойном клике
 
procedure TForm1.CoolTrayIcon1DblClick(Sender: TObject);
begin
CoolTrayIcon1.ShowMainForm;
end;
 
end.
_____
Код программы нужно выделять (форматировать) тегами [CODE] (читать FAQ)
Модератор

Последний раз редактировалось Serge_Bliznykov; 10.02.2017 в 10:53.
Nurbek91 вне форума Ответить с цитированием
Старый 10.02.2017, 19:33   #2
Zis67
Пользователь
 
Аватар для Zis67
 
Регистрация: 06.04.2011
Сообщений: 80
По умолчанию

в таймере после обновления списка проверять количество записей, если увеличилось то ShowBalloonHint или что там у cooltray.
Zis67 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Javascript - уведомления почтового ящика Foreseen JavaScript, Ajax 3 27.01.2017 07:18
Уведомления из Excel Mel123 Microsoft Office Excel 9 28.08.2014 12:06
Отсылка уведомления Zeraim Фриланс 2 05.07.2009 15:27
Уведомления на мобилу KORT Свободное общение 4 29.08.2007 18:32