Форум: "Начинающим";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
ВнизСворачивание вторичных форм приложения в трей Найти похожие ветки
← →
SyS (2009-02-12 08:10) [0]Добрый день, как-то попадался уже вопрос по этой теме, но ничего не нашёл. Каким образом сделать так, чтоб при сворачивании какой-либо формы приложения, основная форма (и все открытые) сворачивались бы в один значок в трее? Т.е. как это принято в Windows, вся программа сворачивалась в один значок, а не каждая форма в отдельный.
← →
Сергей М. © (2009-02-12 08:28) [1]Ни форма ни программа не могут быть "свернуты в трей".
Форма может быть скрыта. При этом программа рисует значок в трее, что создает иллюзию "сворачивания"
← →
SyS (2009-02-12 09:01) [2]>Сергей М. © (12.02.09 08:28) [1]
Совершенно верно. Никто и не против. Ответ на вопрос можно?
← →
SyS (2009-02-12 09:06) [3]Я использую эту процедуру. Но она скрывает только одну форму. А как при этом скрыть все открытые формы, причём в один значок?
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
inherited CreateParams(Params);
Params.ExStyle := Params.ExStyle or WS_EX_APPWINDOW;
Params.WndParent := GetDesktopWindow;
end;
← →
Сергей М. © (2009-02-12 09:10) [4]А в чем проблема-то ?
Назначь, к примеру, главную форму ответственной за "запуздыривание иконки в трей".
Любая форма, которую юзер закрывает, отдает тем или иным образом всем прочим видимым формам команду на закрытие, получив команду главная форма перед тем как исчезнуть со стола выполняет "запуздыривание".
← →
Сергей М. © (2009-02-12 09:12) [5]
> использую эту процедуру ..она скрывает .. форму
Ничего она не скрывает, не выдумывай.
Форму видишь ? Видишь. Ну и как же она скрыта, если ты ее видишь ?
← →
SyS (2009-02-12 09:28) [6]>Сергей М. © (12.02.09 09:10) [4]
но чтобы дойти до главной формы, пользователю надо закрыть открытую второстепенную. А в том-то и дело, что надо, чтобы пользователь (как это все делают) нажал на кнопку минимизации открытой второстепенной формы и при этом скрылась бы вся программа(т.е. и главная форма)
← →
Сергей М. © (2009-02-12 09:41) [7]Ты путаешь "минимизацию" и "скрытие"
"Скрытие" означает переход виз.объекта в состояние invisible (или hidden, если угодно)
"Минимизация" означает переход окна формы в состояние iconic
← →
Anatoly Podgoretsky © (2009-02-12 09:44) [8]Вообще то не подозревая, он ведет речь, про "запуздыривание иконки в трей", туда где часики.
← →
SyS (2009-02-12 09:52) [9]ну если всё-таки вы поняли, о чём я (о сворачивании всей программы при минимизации второстепенного окна), то дайте наконец-таки ответ...
← →
Сергей М. © (2009-02-12 10:03) [10]
> при минимизации второстепенного окна
Так все же при минимизации или при скрытии ?
← →
@!!ex © (2009-02-12 11:04) [11]У всех дочерних окон ловишь событий минимизации.
Н аэто событий вызываешь Minimize главной формы, Скрытие кнопочки с таск бара и зауздыривание иконки туда где часики. и все.
← →
Юрий Зотов © (2009-02-12 12:55) [12]> SyS (12.02.09 09:52) [9]
> ну если всё-таки вы поняли, о чём я (о сворачивании всей
> программы при минимизации второстепенного окна)
Мы-то поняли. Не поняли, извините, Вы.
Еще раз:
Никакого сворачивания окон в трей НЕ СУЩЕСТВУЕТ. Это только внешняя видимость, не более того. На самом же деле "сворачиваемые" окна никуда не сворачиваются, а просто становятся невидимыми. Одновременно в трей помещается значок (поэтому и возникает иллюзия "сворачивания в трей"). При движении и при щелчках мышки над этим значком одному из окон приложения (тому, чей хэндл указан в структуре NOTIFYICONDATA) автоматически посылается соответствующее сообщение, которое это окно может обрабатывать любым способом (например, оно может показать всплывающее меню, сделать видимым одно или несколько окон программы и т.п.).
Поэтому процедура "свернуть в трей" для ОДНОГО окна выглядит всегда одинаково:
1. Заполнить структуру NOTIFYICONDATA.
2. Вызвать функцию Shell_NotifyIcon.
3. Скрыть окно. Для форм Delphi это делается вызовом метода Hide (и никакие CreateParams не нужны), а окно Application скрывается вызовом функции ShowWindow.
Отсюда вытекает ответ на Ваш вопрос - как "свернуть в трей" ВСЕ окна программы: точно так же, как и ОДНО окно, только в п.3 невидимыми надо сделать ВСЕ формы программы, включая и окно Application.
> то дайте наконец-таки ответ...
Он был Вам дан уже неоднократно, я просто попытался его разъяснить. Прочитайте ответы внимательно и постарайтесь их понять. Дополнительную информацию можно найти в справке WinAPI по упомянутым выше функциям, а в Сети полно примеров на эту тему.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.04.05;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.006 c