Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как свернуть прогу в трей? [D6, D7, WinXP]


Dimonich ©   (2003-03-17 18:32:00) 

ну типа чтоб по закрытии, форма сворачивалась в трей...


Elected   (2003-03-19 09:29:00) [1]

Удалено модератором
Примечание: Offtopic


vidiv   (2003-03-19 06:03:00) [2]

Удалено модератором
Примечание: Offtopic


Юрий Зотов   (2003-03-17 22:00:00) [3]

unit Unit1;

interface

uses
Windows, Messages, ShellAPI, SysUtils, Classes, Controls, Forms, Menus;

type
TTrayForm = class(TForm)
TrayPopupMenu: TPopupMenu;
MenuItemShow: TMenuItem;
MenuItemExit: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure MenuItemShowClick(Sender: TObject);
procedure MenuItemExitClick(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
FIconData: TNotifyIconData;
procedure WMUser(var Message: TMessage); message WM_USER;
procedure WMSysCommand(var Message: TWMSysCommand); message WM_SYSCOMMAND;
end;

var
TrayForm: TTrayForm;

implementation

{$R *.DFM}

procedure TTrayForm.FormCreate(Sender: TObject);
begin
with Application, FIconData do
begin
ShowMainForm := False;
SetWindowLong(Handle, GWL_EXSTYLE, GetWindowLong(Handle, GWL_EXSTYLE) or WS_EX_TOOLWINDOW);
cbSize := SizeOf(FIconData);
Wnd := Self.Handle;
uID := 100;
uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
uCallbackMessage := WM_USER;
hIcon := Icon.Handle;
StrPCopy(szTip, Title)
end;
Shell_NotifyIcon(NIM_ADD, @FIconData)
end;

procedure TTrayForm.MenuItemShowClick(Sender: TObject);
begin
Show;
MenuItemShow.Enabled := False
end;

procedure TTrayForm.MenuItemExitClick(Sender: TObject);
begin
Close
end;

procedure TTrayForm.WMSysCommand(var Message: TWMSysCommand);
begin
if Message.CmdType and $FFF0 = SC_MINIMIZE then
begin
Hide;
MenuItemShow.Enabled := True
end
else inherited
end;

procedure TTrayForm.WMUser(var Message: TMessage);
var
P: TPoint;
begin
if Message.LParam = WM_RBUTTONDOWN then
begin
GetCursorPos(P);
SetForegroundWindow(Handle);
TrayPopupMenu.Popup(P.X, P.Y);
PostMessage(Handle, WM_NULL, 0, 0)
end
end;

procedure TTrayForm.FormDestroy(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @FIconData)
end;

end.


Intell   (2003-03-17 20:18:00) [4]

Удалено модератором
Примечание: Offtopic


Dona   (2003-03-17 18:43:00) [5]

http://delphi.mastak.ru/cgi-bin/forum.pl?look=1&id=1047915027&n=3


Наверх

Титульная страница Поиск, карта сайта Написать письмо