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

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

Хитрый ;Tray [D5, Win95/98, WinME, NT4, Win2k, WinXP]


Kacnep ©   (2002-09-19 08:47:00) 

Всем привет.
это вопрос наверное всетаки к знатокам.
Просьба не отсылать к RX или поиску в инете -такого не нашел
Требуется создать в трее иконку которая вызывала бы форму (последняя может создавать (именно может, а может и нет) другие формы), НО ПРИ ЭТОМ НЕ БЫЛА ВИДНА НА ПАНЕЛИ ЗАДАЧ!
Дело в том что во всех примерах сначала создается форма а потом спихивается в ТРЕЙ и на какое то время при загрузке появляется на таск баре. И потом при вызове из трея появляется на таск баре если Главная форма создала еще какие то формы (они ДОЛЖНЫ быть на таск баре), а Главная не должна быть на таск баре.
Пример реализации - обычная АСЯ. Вот типа такого и нужно создать.
Спасибо.


Kacnep   (2002-09-26 12:09:00) [1]

всЕМ ОГРОМНОЕ СПАСИБО
Сорри
Особенно МЕГАБАСУ и Ленину.
Помимо Ваших советов Еще в инете нарыл комонент, который расковыриваю - он НАИБОЛЕЕ ПОЛНО (если н сказать больше) описывает как работать с Треем. Если кому надо 70015922.
Еще раз спасибо


KSergey   (2002-09-20 11:56:00) [2]

Предыдущий пост предназначался конечно же для .nuke © (19.09.02 12:20)

Не то скопировал ;)


KSergey   (2002-09-20 11:55:00) [3]


> 2MegaBass
> А можно все это в dpr засунуть?
> т.е. только на вин-апи писать?


А как связаны между собой dpr и WinAPI?! Если нет желания использовать VCL - ну и не надо, но это не значит, что все должно сидеть в dpr. ТОлько тогда уж про слово "форма" забудь. Равно как и про Rx и все остальное...

PS: Что за мода пошла писать на WinAPI?!! А нафиг тогда вообще за дельфи браться? Тогда уж на VC++ проще писать - там это естественнее выглядит... Нет, я что-то все же не понимаю в жизни...


Севостьянов Игорь   (2002-09-19 13:51:00) [4]


> .nuke © (19.09.02 12:20)

Естественно можно - это же пример


Separator   (2002-09-19 12:29:00) [5]

Запаришся, так проще


.nuke   (2002-09-19 12:20:00) [6]

2MegaBass
А можно все это в dpr засунуть?
т.е. только на вин-апи писать?


MegaBass   (2002-09-19 11:52:00) [7]


...
begin
Application.Initialize;
Application.ShowMainForm:=False;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
...
type
TForm1 = class(TForm)
PopupMenu1: TPopupMenu;
Open1: TMenuItem;
Exit1: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure Open1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ private declarations }
procedure WndProc(var Msg : TMessage); override;
public
{ public declarations }
IconData : TNotifyIconData;
IconCount : integer;
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WndProc(var Msg : TMessage);
var
aPoint : TPoint;
begin
case Msg.Msg of
WM_USER + 1:
case Msg.lParam of
WM_RBUTTONDOWN:
begin
SetForegroundWindow(Handle);
GetCursorPos(aPoint);
PopupMenu1.Popup(aPoint.x, aPoint.y);
PostMessage(Handle, WM_NULL, 0, 0);
end
end;
end;
inherited;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
BorderIcons := [biSystemMenu];
IconCount := 0;
IconData.cbSize := sizeof(IconData);
IconData.Wnd := Handle;
IconData.uID := 100;
IconData.uFlags := NIF_MESSAGE + NIF_ICON + NIF_TIP;
IconData.uCallbackMessage := WM_USER + 1;
IconData.hIcon := Application.Icon.Handle;
StrPCopy(IconData.szTip, Application.Title);
Shell_NotifyIcon(NIM_ADD, @IconData);
end;

procedure TForm1.Open1Click(Sender: TObject);
begin
Form1.Show;
ShowWindow(Application.Handle, SW_HIDE);
end;

procedure TForm1.Exit1Click(Sender: TObject);
begin
Shell_NotifyIcon(NIM_DELETE, @IconData);
Application.ProcessMessages;
Application.Terminate;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;
Form1.Hide;
end;

begin
ShowWindow(Application.Handle, SW_HIDE);
end.


lenin   (2002-09-19 09:08:00) [8]

См.
http://delphi.softclub.net/read/trayfaq.html
http://delphi.mastak.ru/cgi-bin/faq.pl?look=1&id=988624981&n=15


Separator   (2002-09-19 08:54:00) [9]

Сделай главную форму и помести на ней TrxTrayIcon и сдела с ним все что надо. В модуле dpr сделай так:
Application.ShowMainForm:= false;
Application.Run
И все твоя главная форма будет просто невидимой, а в трее будет сидеть значек


Наверх

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