Сворачивание дочерних окон в панель задач
Доброго времени суток. Столкнулся с проблемой по сворачиванию окон. Объясните пожалуйста как сделать правильно, что бы не было стыдно.
Есть 3 формы:
1. Форма входа (BorderStyle-bsNone). Кнопка сворачивания и закрытия реализована по нажатию на image (wsMinimized и close). Данная форма является главной. Сворачивается как положено в панель задач. По кнопке зарегистрироваться (форма 2), главная форма (hide, а форма 2 show). После hide исчезает значок из панели задач. Как скрыть эту форму, но оставить значок?
2. Форма регистрации (BorderStyle-bsNone). Сворачивание и закрытие, сделано по аналогии с формой входа. Сворачивание происходит в скрытую форму. И программа теряется
3. Форма программы, отрабатывает как и форма регистрации.
Порывшись в интернете, нашел предложение комментировать строку «Application.MainFormOnTaskbar := True;» . На первый взгляд работает как надо(после скрытия главной формы, программа остается в панели задач), но сворачивание дочерних форм принимает такой вид:
Возможно стоит каждую форму делать главной по мере необходимости?
Минимизация(сворачивание) форм в панель задач
В проекте используется около 20 форм. Что бы форма, не являющаяся главной, при минимизации.
Панель задач и большая часть окон не реагируют ни на мышь, ни на сенсорную панель
Собственно, проблема описана в заголовке. Раньше такого не было, время от времени реагирует кстати.
Сворачивание базы в панель задач
Всем привет. Подскажите как мне сворачивать базу в панель задач. делаю DoCmd.Minimize.
Сворачивание приложения в панель задач (Windows)
Уважаемые знатоки, помогите найти решение проблемы, хочу программно вызвать кнопку свернуть, метод.
Не надо главную форму проекта делать Hide. От слова совсем не надо ! Для создания форм авторизации, которые должны появляться первыми и исчезать после использования, есть нормальные грамотные решения, а не методом «тупо в лоб» — назначить главной а потом сделать Hide.
Источник
Как свернуть прогу в трей?
Свернуть прогу в трей
нашел компонент TextTrayIcon не пойму как с ним работать. А может кто другой способ знает для того.
Как свернуть две формы в трей?
как свернуть две формы в треей при помощи cooltrayicon Добавлено через 2 минуты одна форма.
Свернуть в трей
Использую библиотеку Jedi — JvTrayIcon1 Activate = true; TvRestoreDbClick = True; Иконка после.
Свернуть приложение в трей
Подскажите пожалуйста, как сделать так, чтобы при щелчке на кнопку программа сворачивалась в трей.
Решение
Как добавить значок программы в трей?
Для работы со значками в трее используется функция Shell_NotifyIcon, объявленная в модуле ShellApi.
Объявим следующую процедруру:
Параметры к ней такие: n — номер операции ( 1 — добавить, 2 — удалить, 3 — заменить) и Icon — сама иконка с которой будет делаться эта операция
Теперь, нам нужно отловить минимизацию приложения, для того, чтобы заменить стандартное действие Windows на «свёртывание в трей». Объявляем в секции protected процедуру
Итак, теперь наш обработчик ловит сообщение о минимизации и прячет нашу прогу в трей. Однако ловит не всегда. Попробуем, например, выбрать из системного меню команду Minimize или нажать на кнопку окна в панели задач, и что же? Не срабатывает!
Поэтому, нам нужно ещё переопределить обработчик onMinimize класса TApplication:
и не забудем присвоить эту процедуру:
Теперь поясню как работает. Когда приложение минимизируется, но эта минимизация не перехватывается нашим обработчиком WM_SYSCOMMAND, мы перехватываем минимизацию в процедуре OnMinimizeProc и принудительно передаём сообщение о минимизации нашей форме, где оно и будет успешно отловлено нашим обработчиком сообщения WM_SYSCOMMAND, благодаря которому прога и «сворачивается» успешно в трей и в этом случае.
Теперь нам нужно, чтобы значок в трее мог реагировать на манипуляции с ним. Если Вы внимательно посмотрите процедру Ic(), то Вы увидите там ссылку на сообщение WM_USER+1. Это не что иное, как сообщение, которое приходит нам от этого значка. Обычно для значка в трее делают всплывающее меню и выводят там те или иные действия. Но TPopUpMenu делается обычно для правой кнопки, по левой же просто активируют приложение. На форму кидаем комопонент TPopUpMenu (пусть это будет PopUpMenu1) и заносим в него все пункты меню, которые мы хотим, чтобы онм появилис в меню, которое будет всплывать по нажатию правой кнопки на значке.
После этого описываем обработчик: В вышеназванную секцию protected добавляем ещё одну процедуру IconMouse, которая будет реагировать на сообщение WM_USER+1
Для выполнения пунктов всплывающего меню, пишите стандартные обработчики onClick() для его пунктов.
Данный опус писался только в форме, в IDE не тестировался, но работоспособный на 100%. Всё работает конечно, но не обессудьте, если будут ошибочки мелкие.
Источник
Delphi 7. Как свернуть формы в панель задач?
Доброго времени суток!
У меня такой вопрос: «Как сделать, чтобы форма, не являющаяся главной при минимизации
сворачивалась не в левый нижний угол экрана, а в панель задач?»
Не пойму, что с ним делать. Прошу вас подсказать или объяснить.
Заранее спасибо, если нужна какая-либо информация, пишите.
Как свернуть форму в панель задач?
Есть программа borderstyle= bsnone,сворачиваю кнопкой. нашел такой способ: Сворачивание .
Как свернуть программу в панель задач
Как свернуть программу в панель задач. По моему «панель задач» называется нижняя часть правого.
Как свернуть форму в панель задач
Ребята подскажите как свернуть форму в панель задач. Есть Форма1 у которой formBorderStyle=None.
Как свернуть в панель задач стороннее приложение?
Здравствуйте. Подскажите пожалуйста. Как свернуть стороннюю программу в панель задач? Необходимо.
Massaraksh7, Можете объяснить, что код означает?
И правильно ли я его вставил:
Если не правильно то поправьте меня пожалуйста.
northener, Я хочу сделать чтобы программа сворачивалась не в правый нижний угол, а как любое приложение под одной иконкой.
Massaraksh7, Так сделал в OnResize, при открытии первом этой формы, он сразу сворачивает её.
Разворачиваю, нажимаю свернуть он сворачивает в угол и скрывает, при попытке развернуть из панели задач, он показывает свернутую форму в углу. При попытке развернуть окно из угла, он тоже сворачивает форму и только потом при попытке развернуть его из панели задачи он показывает форму.
Добавлено через 12 минут
Если ставить все на кнопку обычную, то все хорошо работает.
Значит это проблема в OnResize, т.к. меняются размеры формы при сворачивании и создании.
При каждом изменении размеров формы в процессе выполнения приложения возникает событие onResize
поэтому и происходит сворачивание.
Источник
Delphi свернуть окно в панель задач
Доброго дня. В проекте имеется несколько форм. Почему на панель задач сворачивается только главная форма, а все остальные сворачиваются в левый нижний угол экрана?
Почему на панель задач сворачивается только главная форма, а все остальные сворачиваются в левый нижний угол экрана?
Так надо. Так Microsoft и Borland решили.
Встречный вопрос: У твоих «всех остальных» окон есть ассоциированные кнопочки на таскбаре?
Так надо. Так Microsoft и Borland решили.
как-то не по-человечьи решили, пользователям не удобно
А сворачиваются «в левый нижний угол экрана»? Вот беда-то!
Колись, каким образом «кнопочки на таскбаре» появились?
как-то не по-человечьи решили, пользователям не удобно
Думаешь? Думаешь, если каждому окну дать по кнопке на таскбаре, это будет удобно? Полэкрана кнопок.
> Доброго дня. В проекте имеется несколько форм. Почему на
> панель задач сворачивается только главная форма, а все остальные
> сворачиваются в левый нижний угол экрана?
А как по-твоему должно быть?
← →
Anatoly Podgoretsky © ( 2006-11-02 10:26 ) [7]
> Helen (02.11.2006 10:13:02) [2]
Стиль окна неверный и собственник наверно главная форма.
Поведение соответсвует дизайну Виндоус.
Так, насчет кнопочек я погорячилась, их нет.
Так, насчет кнопочек я погорячилась, их нет.
И куда теперь формам сворачиваться? Таскбар-то большой.
И, главное, как их потом обратно развернуть?
Кнопочки-то для контроля окна — нету.
← →
Anatoly Podgoretsky © ( 2006-11-02 10:47 ) [11]
> Helen (02.11.2006 10:31:08) [8]
А они нужны, что бы можно было независимо сворачивать.
> Helen, Anatoly Podgoretsky
Ради эксперимента :
Когда я создаю форму не через Application.CreateForm, а вот так :
unit Unit1;
uses unit2,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
< Private declarations >
public frm:Tform2;
< Public declarations >
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
frm:=TForm2.CreateParented(GetDesktopWindow);
frm.Show;
show;
end;
end.
вторая форма сворачивается в кнопочку, но тогда не очень удобно это окно таскать.
Описываю ситуацию подробно.
Появляется первое окно (главная форма), в нем вводится служебная информация, в том числе и пароли доступа к серверам. На панели задач появляется значок программы. По кнопке ОК окно закрывается, проверяется вся информация и появляется окно второй формы. Это окно является основным для работы с программой. В заголовке окна есть кнопки Минимизировать и Закрыть. Если нажимаешь на кнопку Минимизировать, то мне бы хотелось, чтобы окно сворачивалось на панель задач (причем сворачиваться надо не отдельным значком на панели задач, а в тот же), а не в левый нижний угол экрана.
> причем сворачиваться надо не отдельным значком на панели
> задач, а в тот же
А это как? — типа Правый клик по TaskBar — свойства — Группировать сходные кнопки задач?
> По кнопке ОК окно закрывается, проверяется вся информация
> и появляется окно второй формы. Это окно является основным
> для работы с программой.
Вот это окно и надо делать главным в программе, а Ваше окно для ввода служебной информации сделайте обычным дочерним диалогом.
> Elen © (02.11.06 11:12) [14]
А разве автор вындовс xp упоминала?
> Плохиш
А разве автор вындовс xp упоминала?
Тогда высказывание
причем сворачиваться надо не отдельным значком на панели
задач, а в тот же)
Мне не особо понятно (хотя если реализовать через меню. )
← →
Desdechado © ( 2006-11-02 11:31 ) [18]
Делать окно ввода пароля главным в программе несколько опрометчиво.
Не, резон-то, конечно, есть, типа «без пароля никуда» 🙂
Но лучше не надо.
Лучше главную форму не делать стартовой формой. Главная форма на то и главная, чтобы присутствовать в протяжение работы программы. Но если «так надо», то, как вариант:
type
TForm2 = class(TForm)
private
procedure WMSysCommand(var AMsg: TWMSysCommand); message WM_SYSCOMMAND;
end;
procedure TForm2.WMSysCommand(var AMsg: TWMSysCommand);
begin
if (AMsg.CmdType = SC_MINIMIZE) then
Application.Minimize
else
inherited;
end;
спасибо, попожее попробую разобраться. Сейчас некогда
Форма ввода паролей не должна быть главной.
В mainform.create написать
В mainform.create написать
Интересно, а какие действия предпринимать, если пользователь нажмет «Отмена»? Исключение генерировать? В конструкторе?
Такую кнопку на диалоговом окне не делать )
Запустил прогу — вводи пароль, пока не угадаешь )
Источник