20 августа 2010 г.

Кнопки в панели задач: доводим до крайности - решение в виде компонента

Мне было просто скучно, поэтому решил сделать компонентик для предыдущего решения ;)

Скачать компонент. В архиве исходники (один тривиальный модуль) и готовые пакеты для Delphi 5, 6, 7, 2006, 2007, 2009 и 2010, а также скрипт FinalBuilder для сборки (просто как пример).

Как ставить (краткий ответ):
  • Установить BPL-пакет (не нужно компилировать).
  • Прописать нужную подпапку Lib и (опционально) Lib\Debug в путях поиска.

Как ставить (подробный ответ):
  1. Распаковываем в любую папку на диске. Лучше выделить отдельную папку для компонент (если вы этого ещё не сделали) и создать в ней подпапку.
  2. Запустить Delphi и выбрать пункт меню Component/Install packages.
  3. В открывшемся окне добавления пакета жмём кнопку Add и выбираем BPL-файл (пакет) из папки Куда-вы-распаковали-архив\Packages\Ваша-версия-Delphi. Например, если у вас Delphi 2010, то добавляйте пакет Packages\D2010\TaskbarShowHidePackage.bpl. Закройте все окна по Ok.
  4. Теперь зайдите в Tools/Options (в некоторых версиях Delphi этот пункт называется Environment options).
  5. В разных Delphi эта опция называется по-разному: в общем, ищите вкладку "Library", "Library - Win32". На вкладке найдите поле Library или Library path и отредактируйте его (кнопкой сборку), чтобы добавить путь Куда-вы-распаковали-архив\Lib\Ваша-версия-Delphi.

Всё. Компоненты вы можете найти на вкладке Samples (иконки стандартные).

Хотите убрать кнопку формы с Панели задач? Просто бросьте на неё компонент TTaskbarHide. Хотите наоборот, показать её? Кидайте TTaskbarShow.

5 комментариев :

  1. Замечу только, что компонент работает для окна. По этой причине он не слишком полезен в старых версиях Delphi, где кнопка на панели задач - вовсе не от окна, а от объекта Application.

    ОтветитьУдалить
  2. У меня D7. Попробовал компонент TTaskbarShow. В общем то он работает.

    Хотя вариант с перекрытием обработчика
    CreateParams, по крайней мере для D7, работает вроде бы не хуже.

    procedure TForm.CreateParams(var Params: TCreateParams);
    begin

    inherited;

    with Params do ExStyle := ExStyle OR WS_EX_APPWINDOW;

    end;

    ОтветитьУдалить
  3. Здравствуйте, Александр.

    Случайно наткнулся на этот пост и решил задать Вам свой вопрос: в моем приложении иногда при большой загрузке процессора возникает дополнительная кнопка на панели задач. Кнопка принадлежит активной на момент ошибки форме. Как Вы думаете, с чем это может быть связано? Прочитал кучу всего в инете (в том числе и Вашу статью о появлении кнопок на таскбаре), но решения этой проблемы не нашел. В моем приложении нет кода, меняющего стиль окон.

    Недавно обнаружил еще более интересную штуку - подобным образом стала вести себя IDE Delphi 7! На таскбаре появилась кнопка с надписью "Delphi 7 - MyProject" - т.е. Caption главной формы Delphi! Если необходимо - могу выслать скрин.

    Прошу любой помощи по решению данной проблемы.

    Александр.

    ОтветитьУдалить
  4. Помнится, я общался с вами по этому вопросу на каком-то форуме (мой ник GunSmoker или CodeMonkey). Только я уже не помню, чем всё закончилось...

    Предварительно, я бы проверил систему на наличие всяких программ расширителей оболочки или что-то такое, что может лапать панель задач.

    ОтветитьУдалить
  5. Просто просматриваю блог, компонент не смотрел как и ссылки на предыдущие посты по теме (эта проблема, как таковая, мне не интересна). Желаю выразить несогласие с такой формулировкой заголовка. Я одно время над эти вопросом не задумывался, но после того, как прочитал труд Рея Конопки, считаю, что компоненты - это профессиональный подход, никакая это не крайность. В этом есть суть Delphi с самого ее (Дельфя - она моя - женский род) рождения...

    ОтветитьУдалить

Можно использовать некоторые HTML-теги, например:

<b>Жирный</b>
<i>Курсив</i>
<a href="http://www.example.com/">Ссылка</a>

Вам необязательно регистрироваться для комментирования - для этого просто выберите из списка "Анонимный" (для анонимного комментария) или "Имя/URL" (для указания вашего имени и (опционально) ссылки на сайт). Все прочие варианты потребуют от вас входа в вашу учётку (поддерживается OpenID).

Пожалуйста, по возможности используйте "Имя/URL" вместо "Анонимный". URL можно просто не указывать.

Ваше сообщение может быть помечено как спам спам-фильтром - не волнуйтесь, оно появится после проверки администратором.