Отключение анимации индикатора выполнения в Vista Aero - PullRequest
9 голосов
/ 24 ноября 2008

Я использую Delphi 2009 VCL TProgressBar как своего рода «пустой / полный» индикатор.

В Vista, с включенной темой Aero, с ней связана анимация, что раздражает и не подходит для датчика.

Есть ли способ отключить это (НЕ изменяя настройки темы пользователя!), Чтобы предотвратить анимацию на этом элементе управления?

Чтобы уточнить, я хочу что-то в основном идентичное метрам «используемого дискового пространства» в Windows Explorer. Нет анимации, но все же с красивыми границами и эффектами затенения.

Обновление:

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

Ответы [ 5 ]

11 голосов
/ 24 ноября 2008

В соответствии с рекомендациями Vista UI для индикаторов прогресса вам вообще не следует использовать TProgressBar для таких целей, в нем говорится:

Используйте индикаторы прогресса только для прогресса. Используйте метры, чтобы указать проценты, которые не связаны с прогрессом.

Существует множество сторонних компонентов (например, Abakus VCL ), предназначенных для приложений автоматизации процессов и т. П., Может быть, вместо этого вы можете использовать один из этих элементов управления?

10 голосов
/ 25 ноября 2008

Вы можете попробовать отключить темы для этого элемента управления;

SetWindowTheme(ProgressBar.Handle, ' ', ' ');
3 голосов
/ 05 мая 2011

Попробуйте VistaProBar на http://rmklever.com/ NOT имеет анимацию, связанную с ним.

1 голос
/ 05 мая 2011

Я еще не пробовал, но этот вопрос выглядит полезным для winforms.

Как использовать индикатор выполнения в стиле индикатора?

Теперь, чтобы преобразовать его в Delphi ...

0 голосов
/ 25 ноября 2008

Загляните на эту ветку форума . Это единственная многообещающая ссылка, которую я нашел, и в первой публикации упоминаются различные состояния индикатора выполнения, поэтому изменение свойств Smooth, State и Style, вероятно, не поможет.

Если подсказка в последней публикации действительно является единственным способом нарисовать индикатор выполнения в стиле индикатора, то лучше всего создать дочерний класс TProgressBar, переопределить обработчик WM_PAINT, проверить Vista и включенные темы и в этом случае используйте функции из UxTheme для рисования различных частей элемента управления.

...