Я использую Borland C++ Builder 2009 и когда используется большой шрифт, элементы меню в MainMenu и Popup слишком близки друг к другу, текст обрезается сверху и снизу, даже когда он слишком большой.
Я понимаю, что могу изменить высоту элементов с помощью TMenuItem.OnMeasureItem
но на какой высоте я должен установить его?
Какой лучший способ рассчитать идеальную высоту и как мне получить переменные для нее (например, высота текста)?
Обработчики OnMeasureItem
предлагают значение по умолчанию в параметре Height
var.
Вы можете умножить это значение на соотношение текущего экрана PPI и PPI по умолчанию для размера шрифта 100% (96), например Height := Ceil(Height * Screen.PixelsPerInch/96);
TCanvas.TextHeight()
. Создайте временныйTCanvas
, назначьте ему текущийScreen.MenuFont
, передайтеTMenuItem.Caption
егоTextHeight()
, а затем освободите его. Или, поскольку меню VCL уже обрабатываютWM_MEASUREITEM
внутри,WM_MEASUREITEM
исходный код VCL, чтобы выяснить, почему высоты по умолчанию слишком малы, а затем исправьте его.