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

Вниз

Флаг= свернуть, развернуть окно....   Найти похожие ветки 

 
BB2000   (2008-10-02 21:15) [0]

Добрых суток!
Суть проблемы:
Надо присвоить флаг для приложения, свернуто или на экране, какое сообщение надо ловить?
Особенно при нажатии мышью на тасбаре, свернуть - развернуть.

Спасибо.


 
oldman ©   (2008-10-02 21:17) [1]

А зачем, можно узнать?


 
ВВ2000   (2008-10-02 22:57) [2]

Что-бы когда приложение свёрнуто, неотображать разную инфу, которая показывается, когда прога на виду, картинки, текст, и т.д.... для экономии ресурсов.


 
oldman ©   (2008-10-02 23:02) [3]


> ВВ2000   (02.10.08 22:57) [2]


Неправильный подход.

Приложение свернуто - ты текст не отобразил.
Приложение ушло в цикл вычислний, пользователь его развернул.
Текста нет...


 
Германн ©   (2008-10-03 01:10) [4]


> ВВ2000   (02.10.08 22:57) [2]
>
> Что-бы когда приложение свёрнуто, неотображать разную инфу,
>  которая показывается, когда прога на виду, картинки, текст,
>  и т.д.... для экономии ресурсов.

Когда приложение свёрнуто, на его окнах реально ничего не рисуется. Ни картинки, ни текст. Даже когда приложение не свёрнуто его окна могут быть перекрыты окнами других приложений. И тогда тоже на них реально ничего не рисуется. Так что экономь ресурсы где-нибудь в другом месте.


 
{RASkov} ©   (2008-10-03 09:24) [5]

> [0] BB2000   (02.10.08 21:15)

IsIconic - только это не сообщение, а функция....


 
Rouse_ ©   (2008-10-03 09:55) [6]

IsIconic - покажет, свернуто ли или нет, IsZoomed - покажет распахнуто ли на весь экран или нет.


 
Vlad Oshin ©   (2008-10-03 10:20) [7]

да что такое..

> IsIconic - покажет, свернуто ли или нет

1
у меня в таймере никогда не выскакивает сообщение
if IsIconic(form1.handle) then showmessage("");

2
Procedure TForm1.MyWMSize(var Msg: TWMSize);
Begin
If TMessage(Msg).WParam = Size_Minimized Then
 showmessage("");
End;
не срабатывает

3
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;  var Handled: Boolean);

if MSG.wParam=SC_MINIMIZE then showmessage("");
не работает

4
GetWindowPlacement(form1.Handle,@tp);
нет
-------
WM_SYSCOMMAND - иногда , если с панели задач команда свернуть

что за день такой...


 
{RASkov} ©   (2008-10-03 11:28) [8]

> [7] Vlad Oshin ©   (03.10.08 10:20)
> 1
> у меня в таймере никогда не выскакивает сообщение
> if IsIconic(form1.handle) then showmessage("");

Потому как формы в делфи не сворачиваются.... имхо. Кроме окна Application....
Можешь проверить(убедится) в своем таймере if IsIconic(Application.handle) then showmessage("");


 
{RASkov} ©   (2008-10-03 11:31) [9]

> [7] Vlad Oshin ©   (03.10.08 10:20)
> if IsIconic(form1.handle) then showmessage("");

Для форм делфи можно попробывать IsWindowVisible в таком случае....


 
Rouse_ ©   (2008-10-03 11:33) [10]

Что-то в ребята не то говорите :) Все нормально работает:

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if IsIconic(Handle) then
   ListBox1.AddItem(TimeToStr(Now) +  ": Окно свернуто",  nil)
 else
   if IsZoomed(Handle) then
     ListBox1.AddItem(TimeToStr(Now) +  ": Окно развернуто на весь экран",  nil)
   else
     ListBox1.AddItem(TimeToStr(Now) +  ": Окно в нормальном состоянии",  nil);
end;


 
{RASkov} ©   (2008-10-03 11:39) [11]

> [10] Rouse_ ©   (03.10.08 11:33)
> Что-то в ребята не то говорите :)

Хм...
D7 XP Вот это:
procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if IsIconic(Handle) then ShowMessage("Свернулось");
end;

НЕ работает :)


 
Rouse_ ©   (2008-10-03 11:42) [12]


> D7 XP Вот это:
> procedure TForm1.Timer1Timer(Sender: TObject);
> begin
>  if IsIconic(Handle) then ShowMessage("Свернулось");
> end;
> НЕ работает :)

А ты развернуть попробуй ;)


 
{RASkov} ©   (2008-10-03 11:48) [13]

> [12] Rouse_ ©   (03.10.08 11:42)
> А ты развернуть попробуй ;)

Код из [10] показывает(т.е. в листбоксе появляются) при любых сосотояниях окна только два варианта строк. Это:
Окно развернуто на весь экран
Окно в нормальном состоянии
А вот третей нетути... никогда. :)


 
Rouse_ ©   (2008-10-03 11:51) [14]


> А вот третей нетути... никогда. :)

Ну значит вот тебе еще одна из причин о необходимости перехода на BDS 2007 :)
У меня на ней все работает нормально :)
Кстати, проверь а не вызывается ли там какая либо обертка?
Напиши вот так: if Windows.IsIconic(Handle) then


 
{RASkov} ©   (2008-10-03 11:57) [15]

> [14] Rouse_ ©   (03.10.08 11:51)
> if Windows.IsIconic(Handle) then

Да не... вызывается та что надо... Но проверил на всякий случай...
Я обычно проверяю с зажатым Ctrl"ом и клик.... И тут куда "бросит" - то и вызывается, не так ли?

А про IsIconic и формы в делфи я давно уже где-то прочитал... не помню.... Может у М.Кэнту
Книга правда по D4 была, но вот и до D7 актуально)


 
ВВ2000   (2008-10-03 22:21) [16]

Во! Спасибо! Вот это работает!
if Windows.IsWindowVisible(MainForm.Handle) then

if Windows.IsIconic(Handle) then - а это нет.



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

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

Наверх




Память: 0.5 MB
Время: 0.01 c
15-1221728009
Vlad Oshin
2008-09-18 12:53
2008.11.16
редактор IDE, фишка..


2-1222958697
Terasbetoni
2008-10-02 18:44
2008.11.16
Как узнать, уничтожен ли объект.


2-1223296911
voin747
2008-10-06 16:41
2008.11.16
Помогите создать программу "Автопрозвонщик"


4-1200305464
Magedon
2008-01-14 13:11
2008.11.16
Как запустить приложение от имени друго пользователя но...


2-1223533622
Anel
2008-10-09 10:27
2008.11.16
Перемещение папки