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

Вниз

Как прогу поместить только в system tray ? И как вызвать?   Найти похожие ветки 

 
denick   (2002-10-03 11:32) [0]

Люди помогите ПЛЗ.
1. Как программу поместить только в system tray(в общем где часы)
2. И как её вызвать(напр.,чтобы она выскочила) в назначенное время.


 
Игорь Шевченко ©   (2002-10-03 11:36) [1]

Блин!


 
Юрий Зотов ©   (2002-10-03 11:56) [2]

На первой странице сайта есть правила. Про поиск читали?
Этот вопрос задается каждый день.


 
Song ©   (2002-10-03 13:04) [3]

http://pascal.sources.ru/cgi-bin/forum/YaBB.cgi?board=delphi;action=display;num=1020241631


 
Opuhshii ©   (2002-10-03 13:17) [4]

%) в чате спроси ,.. у ИИ,..


 
opoloXAI   (2002-10-03 14:52) [5]

1. попробуй восползоваться библиотекой RxLib, там есть компоненты по работе с SystemTray (100% - сам пробовал).
2. добавь на форму таймер. по достижению нужного момента, добавь обработчик ситуации ...Restore...(я не помню)
3. если есть твоё мыло могу кинуть примерный код.


 
Юрий Зотов ©   (2002-10-04 01:35) [6]

> 100% - сам пробовал

И popup-меню нормально исчезает?


> добавь на форму таймер. по достижению нужного момента, добавь
> обработчик ситуации ...

То есть, раз, допустим, в час, форма будет выскакивать на экран. Просили ее, или нет - неважно, все равно выскочит.

Отличная программа получится, что и говорить. Неназойливая такая.

А как насчет кликов по иконке?



 
opoloXAI   (2002-10-04 10:18) [7]

я хотел человеку дорогу подсказать, а вы сразу обарывать. Несерьёзно.


 
Kacnep   (2002-10-04 10:42) [8]

Народ не знаю откуда имеется компонент ну просто супер классный для сворачивания ИМЕННО В ТРЕЙ! и только туда и все там норамльно и меню и т.д и т.п.
Но Как блин минимизировать корректно форму :((((
Она Минимизиться сначала на таск бар а потом в трей -т.е. не исто в ТРЕЙ а так вроде все круто и красиво...


 
Song ©   (2002-10-04 13:31) [9]

На ссылке выше написано как это сделать.
Чтобы не было эффекта что сначала форма минимизируется в таскбар, надо сначала её скрыть, добавить в трей значок, а потом только минимизировать. В принципе в этом случае и минимизировать-то необязательно.


 
Юрий Зотов ©   (2002-10-04 16:15) [10]

> opoloXAI (04.10.02 10:18)

Несерьезно - это как раз подсказывать НЕВЕРНУЮ дорогу. Особенно после того, как уже были подсказаны верные.


> Kacnep (04.10.02 10:42)
> Но Как блин минимизировать корректно форму

Такие формы не минимизируются, а просто скрываются. Вот полное решение Вашей задачи, без всяких "суперклассных" компонентов. Если поместить эту форму в репозиторий, получим готовый шаблон для любой Tray-программы.

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); // OnCreate
procedure MenuItemShowClick(Sender: TObject); // OnClick
procedure MenuItemExitClick(Sender: TObject); // OnClick
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
Shell_NotifyIcon(NIM_DELETE, @FIconData);
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;

end.


 
easy ©   (2002-10-05 11:42) [11]

>Юрий Зотов © (04.10.02 16:15)
класс...


 
denick   (2002-10-09 11:51) [12]

Спасибо Юрий Зотов!
Всё работает. Просто СУПЕР.



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

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

Наверх




Память: 0.49 MB
Время: 0.014 c
1-28084
shust
2002-11-28 11:02
2002.12.09
Как загрузить анимированный курсор?


7-28317
vitnt2000
2002-10-09 14:58
2002.12.09
Как узнать запущена ли служба?


4-28370
Serd_hhc
2002-10-25 17:53
2002.12.09
Как заставить чужое приложение по таймеру...


1-28062
skirdov
2002-11-27 23:49
2002.12.09
Редактирование данных в Edit, Combobox, StringGrid и пр.


3-27800
Calm
2002-11-22 11:13
2002.12.09
Как обработать записи, возвращаемые запросом