![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Вопрос по стандартному компоненту TrayIcon [D2005, XP]
Tempora © (2006-05-25 09:01:00)Есть компонент TrayIcon входящий в последние версии Delphi.
Как сделать так, чтобы:
1. при запуске программы иконки в трее не было
2. при нажатии на главной форме кнопки Minimize иконка в трее появлялась и туда сворачивалась программа
3. при нажатии на иконку в трее иконка пропадала и показывалась главная форма программы
Tempora (2006-05-26 12:49:00) [1]Handle
Спасибо!
Handle (2006-05-25 10:37:00) [2]http://www.raize.com/DevTools/RzComps/DemoTrial.asp
Здесь есть RzTrayIcon, отличный компонент, правда серийники придётся искать.
Tempora (2006-05-25 09:56:00) [3]TUser
Смотрел. Многое из списка я конечно решил, но самого главного - нет.
В общем скачал CoolTrayIcon, но такое ощущение что он 32-битные иконки не понимает
Handle (2006-05-25 09:55:00) [4]У меня нет D2005, поэтому могу предложить следующий вариант.
Может пригодится.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Shellapi;
const
WM_NOTIFYTRAYICON = WM_USER + 1;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
procedure WMTRAYICONNOTIFY(var Msg: TMessage); message WM_NOTIFYTRAYICON;
procedure OnMinimizeProc(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
CursorPos: TPoint;
implementation
{$R *.dfm}
procedure TForm1.WMTRAYICONNOTIFY(var Msg: TMessage);
var
Tray: TNotifyIconData;
begin
case Msg.LParam of
WM_LBUTTONDOWN:
begin
GetCursorPos(CursorPos);
SetForegroundWindow(Application.MainForm.Handle);
Form1.Show;
Application.Restore;
with Tray do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Form1.Handle;
uID := 0;
end;
Shell_NotifyIcon(NIM_DELETE, Addr(Tray));
end;
end;
end;
procedure TForm1.OnMinimizeProc(Sender: TObject);
var
Tray: TNotifyIconData;
begin
with Tray do
begin
cbSize := SizeOf(TNotifyIconData);
Wnd := Form1.Handle;
uID := 0;
uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
uCallBackMessage := WM_NOTIFYTRAYICON;
hIcon := Application.Icon.Handle;
szTip := ('Имя программы');
end;
Shell_NotifyIcon(NIM_ADD, Addr(Tray));
Form1.Hide;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnMinimize:= OnMinimizeProc;
end;
end.
TUser (2006-05-25 09:43:00) [5]Хелп к компоненнты в последние версии Delphi входит? Там есть свойство Active или ShowIcon или что-то вроде того. И список событий посмотри.