![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
System tray [D6, Win2k]
Igor_thief © (2001-12-20 12:04:00)Народ, я видел у Вас есть неплохой исходник "по закидыванию проги в трей". Исходник то клёвый, но он кроме как бросания в трей ничего не делает. Как сделать реакцию на нажатие мыши. Чтобы появилась менюшка, итд. Буду рад если получу ответ на мыло.
HazMat (2002-03-04 09:25:00) [1]Попробуй
Application.BringToFront;
Igor_thief (2002-01-15 11:57:00) [2]Короче говоря я наконецто во всём разобрался. Но возникла только одна проблемка. Apllication.Restore. Вот это внатуре проблемка. Ведь без этой вот проблемки нет способа вывести окно поверх осальных окон и сделать его активным. Надобно как-то выкрутиться.
Igor_thief (2002-01-14 19:46:00) [3]Щас проверим кладовочку.
Fellomena (2002-01-14 11:49:00) [4]Если кому надо - в кладовке свой пример выложила (мыло глючит у меня).
Igor_thief (2002-01-13 12:56:00) [5]Нут так киньте мне этот супер пример на мыло please!!! Буду ну очень благодарен. Да, только не забывайте что мне нужен пример в котором прога помещается в трей именно после того как пользователь нажмёт кнопочку минимизации. Хотя у меня возникла и деЯ как это раскрутить немножко в другом варианте. Короче говоря - жду, а там уж посмотрим.
Romul (2002-01-13 09:53:00) [6]Кстати я примером именно от Red Alert воспользовался, немножко переделал и все прекрасно работает.
Red Alert (2002-01-12 04:48:00) [7]Блин... Я пример на API уже 5 раз кидал в форум...
Igor_thief (2002-01-11 12:57:00) [8]>To all of people
Готовые компоненты лучше просто разирать и по ним учиться. Можно также написать свой компонент, для особой практики(чего я делать не умею). Даже если сильно припекло, то всё равно будет полезнее разобраться, написать ручками и запомнить(естественно, что если сам слабо, то спроси у людей и выучи результат).
Igor_thief (2002-01-11 12:55:00) [9]>To all of people
Готовые компоненты лучше просто разирать и по ним учиться. Можно также написать свой компонент, для особой практики(чего я делать не умею).
Bizon (2002-01-11 12:47:00) [10]>Fellomena
Конечно, если время позволяет, можно написать самому (если умеешь, если не умеешь, то хотя бы ради обучения), но ведь иногда надо быстро. Для этого есть готовые компоненты.
Русский (2002-01-11 12:39:00) [11]To Fellomena>
В принципе лучше писать ето на чистом WinAPI, но если код очень большой, то потом фиг разберёшся, где что!
Igor_thief (2002-01-11 12:17:00) [12]Буду очень рад ознакомиться с Вашим примером Fellomena.
Fellomena (2002-01-11 11:35:00) [13]Народ - что вы все на компанентах помешались ?
Такие элементарные вещи как иконка в трэе, которая реагирует на клик и выдаёт хинт и PopUp меню
надо не лениться и делать на API !
Такими темпами уровень абстракции ООП вскоре станет черезчур высоким и тогда не станет программеров 8)
Если кому надо - вышлю пример иконки в трее с меню и хинтом - всё делала на чистом API (в SDK всё это есть)
Igor_thief (2002-01-10 23:44:00) [14]Огромнейшее спасибо Pat!!!!!!!!!!!!!!!!!!!!!! Я попробую твой вариант.
Pat (2002-01-10 18:16:00) [15]>Igor_thief
Может тебе это надо:
N1 - Выход
N3 - Развернуть
N4 - Свернуть
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
shellApi, StdCtrls, AppEvnts, Menus;
type
TForm1 = class(TForm)
ApplicationEvents1: TApplicationEvents;
PopupM: TPopupMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure IconMouse(var Msg : TMessage);message WM_USER + 1;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure ApplicationEvents1Minimize(Sender: TObject);
procedure N1Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.IconMouse(var Msg : TMessage);
var p:tpoint;
begin
getcursorpos(p);
case Msg.LParam of
WM_LBUTTONDBLCLK :
begin
ShowWindow(Application.Handle,SW_SHOW);
Application.Restore;
end;
WM_rbuttonup:
begin
SetForegroundWindow(Handle);
PopupM.Popup(P.X,P.Y);
PostMessage(Handle,WM_NULL,0,0)
end;
end;
end;
Procedure ic(a:boolean);
var nim:tnotifyicondata;
begin
with nim do
begin
cbSize:=sizeof(nim);
wnd:=form1.Handle;
uid:=1;
uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
hicon:=Application.Icon.Handle;
uCallbackMessage:= wm_user+1;
szTip:="Твою мать";
end;
if a then shell_notifyicon(nim_add,@nim) else
shell_notifyicon(nim_delete,@nim);
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
action:=canone;
application.Minimize;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
ic(true);
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
ic(false);
end;
procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
showwindow(application.handle,0);
end;
procedure TForm1.N1Click(Sender: TObject);
begin
application.Terminate;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
ShowWindow(Application.Handle,SW_SHOW);
Application.Restore;
end;
procedure TForm1.N4Click(Sender: TObject);
begin
application.Minimize;
end;
end.
Igor_thief (2002-01-10 17:10:00) [16]А как перехватить тот момент, когда форма минимизируется, чтобы забросить форму в трей?
_SnAke_ (2002-01-10 15:08:00) [17]Посмотри на пятой странице кладовки компонент KreyMedia
Юрий Зотов (2002-01-10 14:33:00) [18]http://www.delphikingdom.com/helloworld/samples_win.htm
Там скачайте пример N 1 (3.6K). В нем все и найдете.
Bizon (2002-01-10 14:30:00) [19]Могу скинуть библиотечку ProLib, где есть компонент System Tray, который имеет и меню и реагирует на клик, и на даблклик и др.