Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.035 c
3-1081082712
SergP
2004-04-04 16:45
2004.05.02
integer --> datetime. Как это сделать в запросе?


7-1078560595
DuhcmanSoft
2004-03-06 11:09
2004.05.02
Системный трей


1-1082096797
Litva
2004-04-16 10:26
2004.05.02
помогите новенкой...


14-1081519373
hgd
2004-04-09 18:02
2004.05.02
Что такое Application.Messagebox


1-1082308754
p_sA[11]
2004-04-18 21:19
2004.05.02
Как определить ASCII код символа?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский