Я хотел бы добавить линию с определенным цветом для каждого MenuItem всплывающего меню в приложении Tokyo VCL. Стиль "Аметист Камри".
Я вызываю событие AdvancedDrawItem каждого MenuItem, как показано ниже. Тем не менее, выделенный блок плоский и не имеет такой же трехмерной формы, как внешний вид без Ownerdraw.
Плоский фон (оранжевый): Пока я хотел бы получить его:
Как это лучше реализовать? Делфи 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;
Спасибо, Рерон.