Форум: "Начинающим";
Текущий архив: 2008.11.16;
Скачать: [xml.tar.bz2];
ВнизФлаг= свернуть, развернуть окно.... Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c