vasilius Опубликовано 6 июня, 2019 Поделиться Опубликовано 6 июня, 2019 Здравствуйте! есть прогресс бар с таким стилем : object TRectangle StyleName = 'htrack' Align = Client Fill.Color = claSteelblue Sides = [] Size.Width = 193.000000000000000000 Size.Height = 17.000000000000000000 Size.PlatformDefault = False Stroke.Color = claNull XRadius = 1.000000000000000000 YRadius = 1.000000000000000000 object TRectangle StyleName = 'hindicator' Align = Left Fill.Kind = Gradient Fill.Gradient.Points = < item Color = xFF24C137 Offset = 0.000000000000000000 end item Color = xFF04E31A Offset = 0.844720482826232900 end item Color = xFF04E31B Offset = 1.000000000000000000 end> Fill.Gradient.StartPosition.Y = 0.500000000000000000 Fill.Gradient.StopPosition.X = 1.000000000000000000 Fill.Gradient.StopPosition.Y = 0.500000000000000000 Sides = [] Size.Width = 138.000000000000000000 Size.Height = 17.000000000000000000 Size.PlatformDefault = False Stroke.Color = claSteelblue end end то есть , это обычный прогрес бар где htrack и hindicator сделаны на базе rectangle у ползунка заполнение цветом делается через градиент и нужно динамически менять этот градиент делаю это так: pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[0].Color"] = TValue::_op_Implicit(0xFF24C137); pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[1].Color"] = TValue::_op_Implicit(0xFF04E31A); pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[2].Color"] = TValue::_op_Implicit(0xFF04E31B); if (inLed > -6.00f) { pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[1].Color"] = TValue::_op_Implicit(claRed); pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[0].Color"] = TValue::_op_Implicit(claBlack); } if (inLed > -1.00f) pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[1].Color"] = TValue::_op_Implicit(claRed); работает странно и вываливается exception raised exception class EPropWriteOnly with message 'Color'. Есть идеи как менять градиент на лету правильно? Цитата Ссылка на комментарий
Вопрос
vasilius
Здравствуйте!
есть прогресс бар с таким стилем :
object TRectangle StyleName = 'htrack' Align = Client Fill.Color = claSteelblue Sides = [] Size.Width = 193.000000000000000000 Size.Height = 17.000000000000000000 Size.PlatformDefault = False Stroke.Color = claNull XRadius = 1.000000000000000000 YRadius = 1.000000000000000000 object TRectangle StyleName = 'hindicator' Align = Left Fill.Kind = Gradient Fill.Gradient.Points = < item Color = xFF24C137 Offset = 0.000000000000000000 end item Color = xFF04E31A Offset = 0.844720482826232900 end item Color = xFF04E31B Offset = 1.000000000000000000 end> Fill.Gradient.StartPosition.Y = 0.500000000000000000 Fill.Gradient.StopPosition.X = 1.000000000000000000 Fill.Gradient.StopPosition.Y = 0.500000000000000000 Sides = [] Size.Width = 138.000000000000000000 Size.Height = 17.000000000000000000 Size.PlatformDefault = False Stroke.Color = claSteelblue end end
то есть , это обычный прогрес бар где htrack и hindicator сделаны на базе rectangle
у ползунка заполнение цветом делается через градиент
и нужно динамически менять этот градиент
делаю это так:
pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[0].Color"] = TValue::_op_Implicit(0xFF24C137); pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[1].Color"] = TValue::_op_Implicit(0xFF04E31A); pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[2].Color"] = TValue::_op_Implicit(0xFF04E31B); if (inLed > -6.00f) { pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[1].Color"] = TValue::_op_Implicit(claRed); pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[0].Color"] = TValue::_op_Implicit(claBlack); } if (inLed > -1.00f) pbInputLevel->StylesData["hindicator.Fill.Gradient.Points[1].Color"] = TValue::_op_Implicit(claRed);
работает странно и вываливается exception
raised exception class EPropWriteOnly with message 'Color'.
Есть идеи как менять градиент на лету правильно?
Ссылка на комментарий
0 ответов на этот вопрос
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.