Форум: "Система";
Текущий архив: 2002.12.09;
Скачать: [xml.tar.bz2];
ВнизКак прогу поместить только в 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.012 c