delphi 删除/隐藏TTrackBar的边框

kmpatx3s  于 2023-03-02  发布在  其他
关注(0)|答案(1)|浏览(245)

我的窗体上有一个TTrackBar,但希望它周围没有边框:

即只有蓝色箭头应该是可见的-边框(和内容,即箭头导航的区域)应该是不可见的(如果需要,可以通过将颜色设置为clBtnFace来解决)。
我尝试了很多方法来隐藏它(在重写的Create CONSTRUCTOR中):

BevelEdges:=[];
BevelInner:=TBevelCut.bvNone;
BevelOuter:=TBevelCut.bvNone;
BevelKind:=TBevelKind.bkNone;
BorderWidth:=0;
Brush.Color:=clBtnFace;
ParentCtl3D:=FALSE;
Ctl3D:=FALSE;

但似乎没什么区别。
有没有办法达到我的目标?

oaxa6hgo

oaxa6hgo1#

我相信您可以覆盖跟踪栏的CNNotify消息方法来处理dwDrawStage = CDDS_ITEMPREPAINTdwItemSpec = TBCD_CHANNEL时的NM_CUSTOMDRAW通知,将结果设置为CDRF_SKIPDEFAULT

procedure TTrackBar.CNNotify(var Message: TWMNotifyTRB);
begin

  if
    (Message.NMHdr.code = NM_CUSTOMDRAW)
      and
    (Message.NMCustomDraw.dwDrawStage = CDDS_ITEMPREPAINT)
      and
    (Message.NMCustomDraw.dwItemSpec = TBCD_CHANNEL)
  then
    Message.Result := CDRF_SKIPDEFAULT
  else
    inherited;

end;

不要忘记设置ShowSelRange = FalseTickStyle = tsNone

相关问题