【发布时间】:2019-11-29 23:15:25
【问题描述】:
我的环境:Windows 10 v1903
使用TTrackBar,当我改变上面TTrackBar组件所在的TPanel的颜色时,颜色保持原来的颜色。
例如,当我将TPanel 的颜色从clBtnFace 更改为clWhite 时,TTrackBar 的颜色仍然是clBtnFace
我尝试了以下代码,但没有成功。
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Panel1->ParentBackground = false;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Panel1->Color = clWhite;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
Panel1->Color = clWhite;
Panel1->Repaint();
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
Panel1->Color = clWhite;
Panel1->Invalidate();
}
有解决这个问题的办法吗?
【问题讨论】:
-
我本来希望
TrackBar1->Invalidate(或Repaint或Update)修复它,但不,没有运气。直到我尝试了TrackBar1->SetFocus。去搞清楚!但是,滑块 bg 仍然是浅灰色的。顺便说一句,在带有 XE 7 的 Win 7 上测试 -
所以,这并不特定于 Windows 10。感谢您提供的信息。
-
改变
TrackBar的大小也会强制重绘 -
@KeremD感谢您提供的信息。更改尺寸需要将尺寸更改回原始尺寸。所以我更喜欢使用 SetFocus() 代替。
-
没问题。提示:通过更改大小来触发事件可以这样完成:
trkPtr->Width++; trkPtr->Width--;,以备不时之需。
标签: c++builder c++builder-10.2-tokyo