我想在 Tokyo VCL 应用程序中为弹出菜单的每个 MenuItem 添加一个具有特定颜色的 Line。风格是“Amethyst Kamri”。
我调用了每个 MenuItem 的 AdvancedDrawItem 事件,如下所示。但是,突出显示的框是扁平的,并且与非所有者绘制外观具有不同的 3d 形状。
平坦的背景(橙色): 虽然我想得到它: 如何更好地实现它?德尔福 10.2,VCL。
procedure TForm1.mnuColorAdvancedDrawItem(Sender: TObject; ACanvas: TCanvas;
ARect: TRect; State: TOwnerDrawState);
var
MenuItem : tMenuItem;
LStyles : TCustomStyleServices;
LDetails : TThemedElementDetails;
begin
MenuItem := (Sender as TMenuItem);
LStyles := StyleServices;
ACanvas.Brush.Style := bsClear;
ACanvas.Font.Color := LStyles.GetStyleFontColor(sfPopupMenuItemTextNormal);
//check the state
if odSelected in State then
begin
ACanvas.Brush.Color := LStyles.GetSystemColor(clHighlight);
ACanvas.Font.Color := LStyles.GetSystemColor(clHighlightText);
end;
ACanvas.FillRect(ARect);
ARect.Left := ARect.Left + 2;
//draw the text
ACanvas.TextOut(ARect.Left + 2, ARect.Top, MenuItem.Caption);
end;
谢谢雷龙