Помогите покрасить ProgressBar...

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Ответить
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Помогите покрасить ProgressBar...

Сообщение McLion »

Всем привет,

помогите покрасить ProgressBar. Что только не делаю, не красится и все. Вот что я делаю...

Код: Выделить всё

uses
  CommCtrl;

procedure TForm1.Button1Click(Sender: TObject);
begin
  // Set the Background color to red
  Progressbar1.Brush.Color := clRed;
  // Set bar color to red
  SendMessage(ProgressBar1.Handle, PBM_SETBARCOLOR, 0, clRed);
end;
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

добавь после этого

Код: Выделить всё

Progressbar1.Repaint;


Добавлено спустя 1 минуту 50 секунд:
у меня красится и без SendMessage.
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Хм... не красит, хоть убей! У тебя какая версия Lazarus? У меня 1.4
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

McLion, у меня снапшот (1.5) в предыдущей версии тоже было все нармально (1.3) а не... опять косяк. Надо попробовать форму передернуть.

Добавлено спустя 14 минут 6 секунд:
Все решил вопрос. Замените Repaint на SetFocus.
alex208210
постоялец
Сообщения: 207
Зарегистрирован: 12.05.2010 13:16:51

Сообщение alex208210 »

штатный прогрессбар примитивен и не функционален, в результате такие действия как выбор цвета вызывают проблемы. Используйте tbgraprogressbar или делайте свой. Я сделал свой так как использую его на wince, а готовые долго прорисовываются.

Canvas.Pen.Color
Canvas.Brush.Color
Canvas.Rectangle
Аватара пользователя
Лекс Айрин
долгожитель
Сообщения: 5723
Зарегистрирован: 19.02.2013 16:54:51
Откуда: Волгоград
Контактная информация:

Сообщение Лекс Айрин »

Каюсь, только что заметил, что у меня TrackBar... но, думается, решение должно быть однотипным.
Ism
энтузиаст
Сообщения: 908
Зарегистрирован: 06.04.2007 17:36:08

Сообщение Ism »

Возможно это поможет
http://wiki.lazarus.freepascal.org/BGRA ... rogressBar

Кроссплатформенно в отличие от вашего варианта
Аватара пользователя
McLion
постоялец
Сообщения: 332
Зарегистрирован: 06.02.2015 17:41:00

Сообщение McLion »

Уже нашел как, надо тему выключать...

Код: Выделить всё

uses CommCtrl;

const
  PBM_SETBARCOLOR = WM_USER + 9;   

  UxTheme.SetWindowTheme(ProgressBar.Handle, nil, '');
  ProgressBar.Brush.Color:= clRed;
  SendMessage(ProgressBar.Handle, PBM_SETBARCOLOR, 0, clRed);
Ответить