Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
ВнизКак определить текущее состояние приложения? Найти похожие ветки
← →
Rusty © (2004-04-13 18:16) [0]Уважаемые, не подскажите, как определить текущее состояние приложения? Мне необходимо по щелчку на значке в панеле задач сворачивать (восстанавливать) приложение в зависимости от его состояния. Заранее благодарен!
← →
Fay © (2004-04-13 18:24) [1]Состояние - это что?!
← →
Rusty © (2004-04-13 18:32) [2]Состояние главного окна приложения (свернутое, развернутое или невидимое)...
← →
Вольный Стрелок (2004-04-13 18:33) [3]ваще-то винда сама его сворачивает-восстанавливает при необходимости
а проверить - у главной формы windowstate
← →
Rusty © (2004-04-13 18:53) [4]Главная форма свернута. Процедура двойного нажатия на иконке в панели задач следующая:
procedure TMainForm.TrayIconDblClick(Sender: TObject);
begin
if WindowState=wsMinimized then
begin
Application.Restore;
Application.BringToFront;
end else Application.Minimize;
end;
При двойном нажатии - ничего не происходит.
← →
Smithson © (2004-04-13 18:56) [5]А двойное нажатие на трэй вообще сложно поймать. Пиши обработчик одиночного, в котором запускай таймер на некоторый интервал времени (400 милисекунд, например). Если за это время произонло еще одно нажатие - это даблклик, если нет - обрабатывай как одиночное.
← →
Paladin © (2004-04-13 18:58) [6]А как свернуть прогу в трей???
← →
Fay © (2004-04-13 19:15) [7]2Smithson © (13.04.04 18:56) [5]
>> в котором запускай таймер
А не легче завести переменную и хранить в ней время полседнего нажатия(для дальнейшего сравнения)?
← →
Семен Сорокин © (2004-04-13 19:19) [8][7] + GetDoubleClickTime
← →
2DSpike (2004-04-13 20:10) [9]Smithson © (13.04.04 18:56) [5]
это еще почему?
← →
Rusty © (2004-04-14 09:11) [10]Последние 5 высказываний немного не в тему.
А может ли кто-нибудь по существу ответить на первоначальный вопрос?
← →
Юрий Зотов © (2004-04-14 10:14) [11]> Rusty © (14.04.04 09:11) [10]
TrayIconDblClick само по себе не вызовется. Вызывать надо из оконной процедуры того окна и при обработке того сообщения, которые были прописано в TNotifyIconData. При двойном клике LParam будет содержать WM_LBUTTONDBLCLICK.
> Smithson
Ничего сложного, и не надо никаких таймеров. Это не тот случай.
← →
metalfan © (2004-04-14 11:07) [12]процедура подготовки NotifyIconData
interface
...
const
WM_NOTIFYICON = WM_APP + 1;
...
TXXXXX = class(TForm)
....
procedure WMNotifyIcon(var Mes: TMessage); message WM_NOTIFYICON;
...
var
HasTrayIcon: boolean;
...
implementation
...
procedure DoPrepareIconData(Var aNID: TNotifyIconData);
begin
ZeroMemory(@aIconData, SizeOf(TNotifyIconData));
aIconData.cbSize := SizeOf(TNotifyIconData);
aIconData.Wnd := handle;
aIconData.uCallbackMessage := WM_NNOTIFYICON;
aIconData.hIcon := Application.Icon.Handle;
aIconData.uID := 666;
aIconData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
StrPCopy(aIconData.szTip, application.title);
end;
procedure DoAddTrayIcon(aNID: TNotifyIconData);
begin
HasTrayIcon:= Shell_NotifyIcon(NIM_ADD , @aNID);
end;
procedure TfmMainDB.DoDeleteTrayIcon(aNID:TNotifyIconData);
begin
Shell_NotifyIcon(NIM_DELETE , @aNID);
HasTrayIcon := false;
end;
procedure TXXXXXX.OnWMNotifyIcon(var Message: TMessage);
begin
if ((Message.LParam = WM_LBUTTONDBLCLK) then
{что нужно делать}
end;
вроде нигде не ошибся...
← →
metalfan © (2004-04-14 11:08) [13]сорри - первая фраза не в кассу
← →
Rusty © (2004-04-14 13:07) [14]-->Юрий Зотов
Мне наверное нужно было раньше уточнить, что я использую готовый компонент RxTrayIcon из библиотеки RxLib, поэтому у меня проблема не в вызове процедуры двойного нажатия. Задача у меня состоит в том, чтобы при клике на значке в трэе приложение либо разворачивалось, либо сварачивалось в зависимости от состояния (свернуто, развернуто) приложения до момента клика.
← →
Amoeba © (2004-04-14 13:14) [15]Посмотри другие аналогичные компоненты (на Torry, например), возможно среди них будет то, что удовлетворяет твоим требованиям. На Rx свет клином не сошелся.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.05.02;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c