Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 2 267

/ вопрос открыт /

Приветствую, уважаемые эксперты!

Дело в чем:

В MainForm создается форма Form.
скрываю MainForm.Hide;

скрываю форму
Form.Hide;

через некоторое время вызываю из формы MainForm эту
Form.Show;
но, приложение Form не видно на панели задач возле пуска как отдельно открытое окно, но по Alt+Tab можно его увидеть
(т.е. не понятно запущена программа или нет, и искать ее на рабочем столе тоже оч не хочется)
Как сделать приложение видимым в панеле активных задач

Спасибо

Aндрей Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: Aндрей (статус: 1-ый класс)
Вопрос отправлен: 5 января 2009, 15:51
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: Вадим К

Здравствуйте, Aндрей!
По умолчанию на панели задач отображается только главная форма. Но можно сделать так, что бы и другие формы отображались на панели задач. Для этого надо перекрыть один метод. Вначале подымаемся в определение формы и в private части добавляем новую строку

procedure TMyForm.CreateParams(var Params :TCreateParams); override;
Потом жмем Ctrl+Shift+C. И в появившийся заготовке дописываем пару строк
procedure TMyForm.CreateParams(var Params :TCreateParams);
begin
  inherited CreateParams(Params); {CreateWindowEx}
  Params.ExStyle := Params.ExStyle or WS_Ex_AppWindow;
end;
Теперь форма будет иметь свою персональную кнопку на панели задач. Если надо для других форм - добавляем этот код.

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 5 января 2009, 18:08
Оценка за ответ: 5


Мини-форум вопроса

Всего сообщений: 5; последнее сообщение — 10 июня 2011, 16:48; участников в обсуждении: 4.
Ученый

Ученый (статус: 8-ой класс), 6 января 2009, 08:09 [#1]:

to Вадим К. А как можно сделать наоборот, чтобы главная форма не отображалась на панеле задач?
Вадим К

Вадим К (статус: Академик), 6 января 2009, 10:14 [#2]:

Я уже вроде отвечал на этот вопрос. что бы она не отображалась, не надо её показывать. Вот и весь ответ.
До 2007 кнопка на панели задач и главная форма не были единым целым. Это можно было понять по тому, что заголовок формы и заголовок кнопки на панели задач не совпадал. VCL симулировала поведение главной формы. А окно, которому соответствовала кнопка на панели задач было просто искусно скрыто. При особом умении его можно было разыскать.
Это всё хорошо симулировалось до Windows Vista. А потом начались проблемы - виста не отображала маленький превью, когда наводишь на кнопку в панели задач. Существует код, который позволяет это обходить, но зачем изобретать велосипеды, а потом гнуть их? Надо писать код, который будет одинаково хорошо работать как на старых делфи, так и на новых. И если Ваш код этого не умеет - выбросите его. И не старайтесь писать подобный. Почему? через год большая и страшная МС снова придумает новую "фичу" (надо же чем то удивлять пользователя, что бы он покупал к рождеству своему ребёнку новую виндовс - все хотят кушать) и Ваши программы будут работать не совсем так, как ожидает пользователь. Его то не интересуют все эти подробности.

Конечно, я не запрещаю Вам писать код, который выполнит поставленную задачу "здесь и сейчас", иногда это надо, но если хочеться стать нормальным программистом, надо привыкать писать красиво.
Галочка "подтверждения прочтения" - вселенское зло.
Aндрей

Aндрей (статус: 1-ый класс), 8 января 2009, 10:49 [#3]:

спасибо, оч помогло
strannik23

strannik23 (статус: Посетитель), 10 июня 2011, 15:52 [#4]:

у меня такая же проблема, только когда я добавляю процедуру
procedure TfMain.CreateParams(var Params :TCreateParams); override;
и далее нажимаю Ctrl+Shift+C то выскакивает ошибка,
Expected'='but'('found in class TfMain
в чём у меня ошибка? моё форма называется fMain
Вадим К

Вадим К (статус: Академик), 10 июня 2011, 16:48 [#5]:

А перед тем как добавляете? код компилируется. Очень похоже, что у Вас в коде ошибка, вот оно и не хочет.
Галочка "подтверждения прочтения" - вселенское зло.

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:38
Выполнено за 0.02 сек.