|
Вопрос # 2 267/ вопрос открыт / |
|
Приветствую, уважаемые эксперты!
Дело в чем:
В MainForm создается форма Form.
скрываю MainForm.Hide;
скрываю форму
Form.Hide;
через некоторое время вызываю из формы MainForm эту
Form.Show;
но, приложение Form не видно на панели задач возле пуска как отдельно открытое окно, но по Alt+Tab можно его увидеть
(т.е. не понятно запущена программа или нет, и искать ее на рабочем столе тоже оч не хочется)
Как сделать приложение видимым в панеле активных задач
Спасибо
 |
Вопрос задал: 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ндрей (статус: 1-ый класс), 8 января 2009, 10:49 [#3]:
спасибо, оч помогло
|
|
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]:
А перед тем как добавляете? код компилируется. Очень похоже, что у Вас в коде ошибка, вот оно и не хочет.
Галочка "подтверждения прочтения" - вселенское зло.
|
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|