Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #4  
Старый 17.10.2009, 18:21
AlexEr81 AlexEr81 вне форума
Прохожий
 
Регистрация: 17.10.2009
Сообщения: 3
Репутация: 10
По умолчанию

я использую этот код:
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
.....
type
  TForm1 = class(TForm)
......
 public
    procedure CREATETRAYICON(n:integer);
    procedure DELETETRAYICON(n:integer);
    procedure WMICON(var msg:Tmessage); message WM_MYTRAYNOTIFY;
    procedure WMSYSCOMMAND(var msg:Tmessage);message WM_SYSCOMMAND;
    procedure HIDEmainForm;
    procedure RestoreMainForm;
   .....
 
procedure TForm1.WMSYSCOMMAND(var msg:Tmessage);
begin
inherited;
if (msg.WParam=SC_MINIMIZE) then
 begin
  hidemainform;
 // createtrayicon(1); иконку можно создать при запуске а не только при сворачивании
  end;
end;
 
procedure TForm1.HIDEmainForm;
begin
application.ShowMainForm:=false;
ShowWindow(application.Handle, SW_HIDE);
ShowWindow(application.Mainform.Handle, SW_HIDE);
end;
 
procedure TForm1.RestoreMainForm;
var i,j:integer;
begin
 application.ShowMainForm:=true;
ShowWindow(application.Handle, SW_RESTORE);
ShowWindow(application.Mainform.Handle, 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 TForm1.CREATETRAYICON(n:integer);
var nidata:TnotifyIcondata;
begin
with nidata do
begin
  cbSize:=Sizeof(TnotifyIcondata);
  Wnd:=Self.Handle;
  uId:=n;
  uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
  uCallBackMessage:=WM_MYTRAYNOTIFY;
  hIcon:=Application.Icon.Handle;
  szTip:='подсказка';
end;
Shell_notifyIcon(NIM_ADD,@nidata);
////
end;
 
procedure TForm1.WMICON(var msg:Tmessage); 
var p:Tpoint;
begin
case msg.LParam of
WM_RBUTTONDOWN: begin
                 getcursorpos(p);
                 setForegroundWindow(application.MainForm.Handle);
                 sysMenu.Popup(p.X,p.Y);
                end;
end
           
///
end;
 
 procedure TForm1.DELETETRAYICON(n:integer);
var nidata:TnotifyIcondata;
begin
with nidata do
begin
  cbSize:=Sizeof(TnotifyIcondata);
  Wnd:=Self.Handle;
  uId:=n;
end;
Shell_notifyIcon(NIM_DELETE,@nidata);
end;
  
после события формы FormCreate
делаем
form1.CREATETRAYICON(1);
 и
form1.hidemainform;
 
а в событии OnClick одного из пунктов sysMenu
делаем
restoremainform;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:56.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025