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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.04.2012, 10:02   #1
Avalon_Albio
Пользователь
 
Регистрация: 02.03.2012
Сообщений: 23
Вопрос Вывод сообщения в трей

Здравствуйте...Необходима помощь при написании всплывающего сообщения во время работы программы в tray, программу свернуть в трей получается, вот мой код:
Цитата:
unit Glavnaya_Forma_s_Menu;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, DateUtils, ComCtrls, ComObj, activex, ShellApi, shlobj, registry;
const
WM_MYICONNOTIFY = WM_USER + 123;

type
TF_Glavnaya_Forma = class(TForm)
Glavnoe_menu_rabot_s_programmoy: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
Metka_otobragenia_zaplanirovann_zad ach: TLabel;
N3: TMenuItem;
Menu_Ikonki_V_Trey: TPopupMenu;
Restore: TMenuItem;
Hide: TMenuItem;
Razdelitel: TMenuItem;
Close: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Metka_otobragenia_zaplanirovann_zad achDblClick(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure RestoreClick(Sender: TObject);
procedure HideClick(Sender: TObject);
procedure CloseClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
ShownOnce: Boolean;
public
{ Public declarations }
procedure WMICON(var msg: TMessage); message WM_MYICONNOTIFY;
procedure WMSYSCOMMAND(var msg: TMessage);message WM_SYSCOMMAND;
procedure RestoreMainForm;
procedure HideMainForm;
procedure CreateTrayIcon(n:Integer);
procedure DeleteTrayIcon(n:Integer);
end;
////////
procedure TF_Glavnaya_Forma.WMICON(var msg: TMessage);
var P : TPoint;
begin
case msg.LParam of
WM_LBUTTONDOWN:
begin
GetCursorPos(p);
SetForegroundWindow(Application.Mai nForm.Handle);
Menu_Ikonki_V_Trey.Popup(P.X, P.Y);
end;
WM_LBUTTONDBLCLK : RestoreClick(Self);
end;
end;

procedure TF_Glavnaya_Forma.WMSYSCOMMAND(var msg: TMessage);
begin
inherited;
if (Msg.wParam=SC_MINIMIZE) then HideClick(Self);
end;

procedure TF_Glavnaya_Forma.HideMainForm;
begin
Application.ShowMainForm := False;
ShowWindow(Application.Handle, SW_HIDE);
ShowWindow(Application.MainForm.Han dle, SW_HIDE);
end;

procedure TF_Glavnaya_Forma.RestoreMainForm;
var i,j : Integer;
begin
Application.ShowMainForm := True;
ShowWindow(Application.Handle, SW_RESTORE);
ShowWindow(Application.MainForm.Han dle, SW_RESTORE);
if not ShownOnce then
begin
for I := 0 to Application.MainForm.ComponentCount -1 do
if Application.MainForm.Components[I] is TWinControl then
with Application.MainForm.Components[I] as TWinControl do
if Visible then
begin
ShowWindow(Handle, SW_SHOWDEFAULT);
for J := 0 to ComponentCount -1 do
if Components[J] is TWinControl then
ShowWindow((Components[J] as TWinControl).Handle, SW_SHOWDEFAULT);
end;
ShownOnce := True;
end;

end;


procedure TF_Glavnaya_Forma.CreateTrayIcon(n: Integer);
var nidata : TNotifyIconData;
begin
with nidata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uID := 1;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_MYICONNOTIFY;
hIcon := Application.Icon.Handle;
StrPCopy(szTip,Application.Title);
end;
Shell_NotifyIcon(NIM_ADD, @nidata);
end;


procedure TF_Glavnaya_Forma.DeleteTrayIcon(n: Integer);
var nidata : TNotifyIconData;
begin
with nidata do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Self.Handle;
uID := 1;
end;
Shell_NotifyIcon(NIM_DELETE, @nidata);
end;

procedure TF_Glavnaya_Forma.CloseClick(Sender : TObject);
begin
Destroy;
end;
procedure TF_Glavnaya_Forma.FormDestroy(Sende r: TObject);
begin
DeleteTrayIcon(1);
end;

procedure TF_Glavnaya_Forma.HideClick(Sender: TObject);
begin
HideMainForm;
CreateTrayIcon(1);
Hide.Enabled := False;
Restore.Enabled := True;
end;



однако задача решена частично, нужно вывести сообщение, когда программа в трее..
Любое знание есть сила
Avalon_Albio вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вывод сообщения по дате WALL Помощь студентам 9 09.11.2010 09:28
Вывод сообщения в отдельном потоке и т.д. Casper-SC Общие вопросы .NET 7 18.05.2010 03:32
Вывод сообщения по времени DimOn4Ik БД в Delphi 12 31.03.2010 23:00
Вывод сообщения об ошибке... Ho-ho Помощь студентам 12 02.11.2009 16:54
Вывод сообщения в PDF Busine2009 Фриланс 2 13.07.2009 09:39