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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 07.01.2016, 20:12   #1
niockasd
Пользователь
 
Регистрация: 01.12.2015
Сообщений: 82
По умолчанию Всплывающие сообщения

Подскажите, нужно вывести уведомления средствами windows (в моем случае 10) вывожу так:
Код:
procedure TForm1.SysTrayIconMsgHandler(var Msg: TMessage);
begin
  case Msg.lParam of
    WM_MOUSEMOVE:;
    WM_LBUTTONDOWN:;
    WM_LBUTTONUP:;
    WM_LBUTTONDBLCLK:;
    WM_RBUTTONDOWN:;
    WM_RBUTTONUP:;
    WM_RBUTTONDBLCLK:;

    NIN_BALLOONSHOW:

      exit;
    NIN_BALLOONHIDE:
   
      exit;
    NIN_BALLOONTIMEOUT:
      exit;
    NIN_BALLOONUSERCLICK:
      exit;
  end;
end;

  
procedure TForm1.AddSysTrayIcon;
begin
  IconData.cbSize := SizeOf(IconData);
  IconData.Wnd := AllocateHWnd(SysTrayIconMsgHandler);
  {SysTrayIconMsgHandler is then callback message' handler}
  IconData.uID := 0;
  IconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
  IconData.uCallbackMessage := TRAY_CALLBACK;   
  IconData.hIcon := Application.Icon.Handle;    
  IconData.szTip := 'Уведомление Golf-Strem';
  if not Shell_NotifyIcon(NIM_ADD, @IconData) then
  exit;
end;

{ShowBalloonTips procedure carry out the new feature: Balloon Tips}
procedure ShowBalloonTips(ModEvent, TipInfo, TipTitle: string);  //modevent - info \ error \warning
begin

  form1.IconData.cbSize := SizeOf(form1.IconData);
  form1.IconData.uFlags := NIF_INFO;
  strPLCopy(form1.IconData.szInfo, TipInfo, SizeOf(form1.IconData.szInfo) - 1);
  form1.IconData.DUMMYUNIONNAME.uTimeout := 3000;
  strPLCopy(form1.IconData.szInfoTitle, TipTitle, SizeOf(form1.IconData.szInfoTitle) - 1);

  if ModEvent='info' then form1.IconData.dwInfoFlags := NIIF_INFO;     
  if ModEvent='error' then form1.IconData.dwInfoFlags := NIIF_ERROR;     //NIIF_ERROR;  //NIIF_WARNING;
  if ModEvent='warning' then form1.IconData.dwInfoFlags := NIIF_WARNING;     //NIIF_ERROR;  //NIIF_WARNING;

  Shell_NotifyIcon(NIM_MODIFY, @form1.IconData);

  form1.IconData.DUMMYUNIONNAME.uVersion := NOTIFYICON_VERSION;

end;

{here's the deletion procedure}
procedure TForm1.DeleteSysTrayIcon;
begin
  DeallocateHWnd(IconData.Wnd);
end;
Уведомления работают нормально, но... При открытии формы создается иконка в трее, ладно, но при закрытии программы иконка остается висеть до того как на нее не наведешь мышь. Это косяк ОС? В чем проблема..
niockasd вне форума Ответить с цитированием
Старый 07.01.2016, 20:35   #2
niockasd
Пользователь
 
Регистрация: 01.12.2015
Сообщений: 82
По умолчанию

программа завершается не аварийно (нажатием на Х справо вверху) при запуске из папки (не из delphi ) проблема так же остается

Код:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
         //отправка запроса на предоставление списка дисков



 while nouclose=true do
begin
application.ProcessMessages;
PanelEvent.Visible:=true;
statusbar1.Panels[0].Text:='Ожидание завершения последней операции...';
end;
PanelEvent.Visible:=false;

   CanClose:=true;
   serversocket1.Active:=false;


end;
niockasd вне форума Ответить с цитированием
Старый 07.01.2016, 20:46   #3
niockasd
Пользователь
 
Регистрация: 01.12.2015
Сообщений: 82
По умолчанию

сам с собой в тебе говорю..)
все ровно, забыл
Код:
  Shell_NotifyIcon(NIM_DELETE, @IconData);


Код:
procedure TForm1.DeleteSysTrayIcon;
begin
  DeallocateHWnd(IconData.Wnd);
Shell_NotifyIcon(NIM_DELETE, @IconData);
end;
вот, если кто то тоже затупит...
niockasd вне форума Ответить с цитированием
Старый 07.01.2016, 21:17   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Достаточно было глянуть в исходник одного их овер9000 компонентов TxxxTrayIcon.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Всплывающие списки Пётр 83 Microsoft Office Excel 6 08.12.2013 22:38
Всплывающие сообщение AndreyK JavaScript, Ajax 2 30.01.2012 02:16
Всплывающие окна osbi JavaScript, Ajax 4 28.07.2010 20:35
Всплывающие сообщения mrcsc Общие вопросы Delphi 0 30.07.2009 08:31
Всплывающие подсказки Pinya Общие вопросы Delphi 7 22.07.2008 14:37