Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.09.11;
Скачать: CL | DM;

Вниз

Прога в трее   Найти похожие ветки 

 
Profik ©   (2005-07-20 18:37) [0]

Как мне свернуть прогу в трей? Помогитееееееее


 
Цымбал   (2005-07-20 18:38) [1]

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


 
Kerk ©   (2005-07-20 18:40) [2]

Компонент добавляет вышу прогу в трэй.
http://kladovka.net.ru/index.cgi?pid=list&rid=44

Один из множества. А лучше факи читай.


 
Digitman ©   (2005-07-20 18:42) [3]

никак

"проги" не "сворачиваются в трей" - это тебе не папирус

в трей "запуздыриваются иконки" - не более того

просмотри "Орешник", там есть ссылки


 
DVM ©   (2005-07-21 10:40) [4]


> в трей "запуздыриваются иконки" - не более того

если быть совсем точным - в трей иконки не запуздыриваются, иконки запуздыриваются в область уведомлений или индикаторов по другому.


 
Trimp ©   (2005-07-21 15:37) [5]

Листинг программы.
При открытии прога не видна, виден лишь её значок в трее. При  клике на значок вылазит PopupMenu и предлагает некоторые операции, которые может сделать прога. Очень полезный пример для обучения. Простой.

unit shellUnit;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, Menus;

const
WM_MYICONNOTIFY = WM_USER + 123;

type
 TForm1 = class(TForm)
   PopupMenu1: TPopupMenu;
   RestoreItem: TMenuItem;
   N1: TMenuItem;
   FileExitItem1: TMenuItem;
   HideItem: TMenuItem;
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure RestoreItemClick(Sender: TObject);
   procedure HideItemClick(Sender: TObject);
   procedure FileExitItem1Click(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;

var
 Form1: TForm1;

implementation

{$R *.DFM}
uses ComObj,  activex, ShellApi, shlobj, registry;

procedure TForm1.WMICON(var msg: TMessage);
var P : TPoint;
begin
case msg.LParam of
WM_LBUTTONDOWN:
 begin
  GetCursorPos(p);
  SetForegroundWindow(Application.MainForm.Handle);
  PopupMenu1.Popup(P.X, P.Y);
 end;
WM_LBUTTONDBLCLK : RestoreItemClick(Self);
end;
end;

procedure TForm1.WMSYSCOMMAND(var msg: TMessage);
begin
inherited;
if (Msg.wParam=SC_MINIMIZE) then HideItemClick(Self);
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 := 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 TForm1.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 TForm1.FormCreate(Sender: TObject);
begin
ShownOnce:= False;
CreateTrayIcon(1);
HideItem.Enabled := False;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
DeleteTrayIcon(1);
end;

procedure TForm1.RestoreItemClick(Sender: TObject);
begin
RestoreMainForm;
DeleteTrayIcon(1);
RestoreItem.Enabled := False;
HideItem.Enabled := True;
end;

procedure TForm1.HideItemClick(Sender: TObject);
begin
HideMainForm;
CreateTrayIcon(1);
HideItem.Enabled := False;
RestoreItem.Enabled := True;
end;

procedure TForm1.FileExitItem1Click(Sender: TObject);
begin
Close;
end;

end.


 
Fay ©   (2005-07-21 16:06) [6]

2 Trimp ©   (21.07.05 15:37) [5]
>> const
>>  WM_MYICONNOTIFY = WM_USER + 123;
Не лучшее решение. Вам очевидно, что Вы можете использовать это соомщение?

>> procedure CreateTrayIcon(n:Integer);
>> procedure DeleteTrayIcon(n:Integer);

Что такое n : Integer ?

Зачем
>> 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);
в public ?

Что будет, если не выбирать ничего из PopupMenu1 ?


 
Trimp ©   (2005-07-21 16:54) [7]

2 Fay
У меня нет времени тебе объяснять, но попробуй посмотреть свой ящик
Возможно там есть статья из которой я взял этот листинг. Там есть все объяснения


 
Trimp ©   (2005-07-21 17:03) [8]

Насчёт n:Intеger действительно косяк автора. n:Intеger будет не бесполезным если все UId в процедурах CreateTrayIcon и  DeleteTrayIcon будут равняться не 1, а n. и с помощью n можно делать несколько иконок в трее. А n это ID  каждой иконки.


 
Fay ©   (2005-07-21 17:09) [9]

2 Trimp ©   (21.07.05 16:54) [7]
Уважаемый Хлюпин Артём Иванович!
Письмо Ваше получил и даже ответил на него.
В статье нет ничего о том, что я спросил (хотя этот n там используется).
>> У меня нет времени тебе объяснять
Думаю, что дело не во времени - сейчас же каникулы!

З.Ы.
Заявление (в статье)
>> Примечание
>> He забывайте уничтожать созданные вами значки на System Tray.
>> Это не делается автоматически даже при закрытии приложения.
>> Значок будет удален только после перезагрузки системы.
достойно отдельной похвалы!


 
Trimp ©   (2005-07-21 17:30) [10]

Уважаемый Fay вы не находите то, что вы пытаетесь идти на конфликт (совершенно никому не нужный). Я пытался вам помочь, но не вижу никакой благодарности. Я специально просмотрел многие ваши посты, ответы. Вы никогда не спрашиваете, вы только отвечаете. И вы редко отвечаете по сути. И меня не в первый раз пытаетесь завести. Но я умней не смотря на то, что я младше вас на 14 лет. Есть в форумах люди, которые пытаются показать своё превосходство, но форумы не для этого. Я уверен, что у вас есть какой то комплекс. Может вас  не так уважают как вы бы хотели. Я думаю, что человеку которому почти 30 стоит заниматься вещами по серьёзнее.
А насчёт почему я занят. Я разрабатываю один проект. Времени как вы не теряю.:)


 
Fay ©   (2005-07-21 17:37) [11]

2 Trimp ©   (21.07.05 17:30) [10]
Я понял.
1) Спасибо за помошь! Я в ней не нуждался, но был очень тронут.
2) Я задал вопросы, которые Вы не удосужились задать себе.
3) Суть вопроса не обязательно присутствует в самом вопросе.



Страницы: 1 вся ветка

Текущий архив: 2005.09.11;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.024 c
11-1106839707
thaddy
2005-01-27 18:28
2005.09.11
mastak unreachable from netherlands and austria


3-1122958157
Kara
2005-08-02 08:49
2005.09.11
Изменяемая ячейка StringGrid


8-1115128652
ArtKil
2005-05-03 17:57
2005.09.11
Мультимедиа


1-1124444871
Maximus86
2005-08-19 13:47
2005.09.11
Delphi 6 и Delphi 7


4-1121968641
Андрей Молчанов
2005-07-21 21:57
2005.09.11
Получить названия специальных папок