![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Флаг= свернуть, развернуть окно.... [D7, XP]
BB2000 © (2008-10-02 21:15:00)Добрых суток!
Суть проблемы:
Надо присвоить флаг для приложения, свернуто или на экране, какое сообщение надо ловить?
Особенно при нажатии мышью на тасбаре, свернуть - развернуть.
Спасибо.
ВВ2000 (2008-10-03 22:21:00) [1]Во! Спасибо! Вот это работает!
if Windows.IsWindowVisible(MainForm.Handle) then
if Windows.IsIconic(Handle) then - а это нет.
{RASkov} (2008-10-03 11:57:00) [2]> [14] Rouse_ © (03.10.08 11:51)
> if Windows.IsIconic(Handle) then
Да не... вызывается та что надо... Но проверил на всякий случай...
Я обычно проверяю с зажатым Ctrl'ом и клик.... И тут куда "бросит" - то и вызывается, не так ли?
А про IsIconic и формы в делфи я давно уже где-то прочитал... не помню.... Может у М.Кэнту
Книга правда по D4 была, но вот и до D7 актуально)
Rouse_ (2008-10-03 11:51:00) [3]
> А вот третей нетути... никогда. :)
Ну значит вот тебе еще одна из причин о необходимости перехода на BDS 2007 :)
У меня на ней все работает нормально :)
Кстати, проверь а не вызывается ли там какая либо обертка?
Напиши вот так:if Windows.IsIconic(Handle) then
{RASkov} (2008-10-03 11:48:00) [4]> [12] Rouse_ © (03.10.08 11:42)
> А ты развернуть попробуй ;)
Код из [10] показывает(т.е. в листбоксе появляются) при любых сосотояниях окна только два варианта строк. Это:
Окно развернуто на весь экран
Окно в нормальном состоянии
А вот третей нетути... никогда. :)
Rouse_ (2008-10-03 11:42:00) [5]
> D7 XP Вот это:
> procedure TForm1.Timer1Timer(Sender: TObject);
> begin
> if IsIconic(Handle) then ShowMessage('Свернулось');
> end;
> НЕ работает :)
А ты развернуть попробуй ;)
{RASkov} (2008-10-03 11:39:00) [6]> [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:33:00) [7]Что-то в ребята не то говорите :) Все нормально работает:
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:31:00) [8]> [7] Vlad Oshin © (03.10.08 10:20)
> if IsIconic(form1.handle) then showmessage('');
Для форм делфи можно попробыватьIsWindowVisibleв таком случае....
{RASkov} (2008-10-03 11:28:00) [9]> [7] Vlad Oshin © (03.10.08 10:20)
> 1
> у меня в таймере никогда не выскакивает сообщение
> if IsIconic(form1.handle) then showmessage('');
Потому как формы в делфи не сворачиваются.... имхо. Кроме окна Application....
Можешь проверить(убедится) в своем таймере if IsIconic(Application.handle) then showmessage('');
Vlad Oshin (2008-10-03 10:20:00) [10]да что такое..
> 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 - иногда , если с панели задач команда свернуть
что за день такой...
Rouse_ (2008-10-03 09:55:00) [11]IsIconic - покажет, свернуто ли или нет, IsZoomed - покажет распахнуто ли на весь экран или нет.
{RASkov} (2008-10-03 09:24:00) [12]> [0] BB2000 (02.10.08 21:15)
IsIconic - только это не сообщение, а функция....
Германн (2008-10-03 01:10:00) [13]
> ВВ2000 (02.10.08 22:57) [2]
>
> Что-бы когда приложение свёрнуто, неотображать разную инфу,
> которая показывается, когда прога на виду, картинки, текст,
> и т.д.... для экономии ресурсов.
Когда приложение свёрнуто, на его окнах реально ничего не рисуется. Ни картинки, ни текст. Даже когда приложение не свёрнуто его окна могут быть перекрыты окнами других приложений. И тогда тоже на них реально ничего не рисуется. Так что экономь ресурсы где-нибудь в другом месте.
oldman (2008-10-02 23:02:00) [14]
> ВВ2000 (02.10.08 22:57) [2]
Неправильный подход.
Приложение свернуто - ты текст не отобразил.
Приложение ушло в цикл вычислний, пользователь его развернул.
Текста нет...
ВВ2000 (2008-10-02 22:57:00) [15]Что-бы когда приложение свёрнуто, неотображать разную инфу, которая показывается, когда прога на виду, картинки, текст, и т.д.... для экономии ресурсов.
oldman (2008-10-02 21:17:00) [16]А зачем, можно узнать?