Как найти родителя TMainMenu для TMenuItem?
У меня есть стандарт TMainMenu
который содержит некоторые TMenuItem
элементы. Как я могу динамически найти родительский объект главного меню от одного из них?
Следующий код возвращает ошибку компилятора уже в первой исполняемой строке:
procedure TMenuItemHelper.AlignToRight;
const
P3 = False;
var
info: TMenuItemInfo;
buffer: array[0..78] of WideChar;
mainMenu: TMainMenu;
begin
if Self.Parent is TMainMenu then
mainMenu := (Self.Parent as TMainMenu)
else
raise EMenuItemHelper.Create(strExcMenuItemNotFirstLevel);
info.cbSize := SizeOf(info);
info.fMask := MIIM_TYPE;
info.dwTypeData := buffer;
info.cch := SizeOf(buffer);
GetMenuItemInfo(mainMenu.Handle, Self.Command, P3, info);
info.fType := info.fType or MFT_RIGHTJUSTIFY;
SetMenuItemInfo(mainMenu.Handle, Self.Command, P3, info);
end;
Сообщение об ошибке следующее:
[dcc32 Error] E2010 Incompatible types: 'TMenuItem' and 'TMainMenu'
Я не вижу ни одного связанного вопроса, но решение, вероятно, довольно простое.
1 ответ
Решение
Решение от Victoria:
if Self.GetParentMenu is TMainMenu then
mainMenu := (Self.GetParentMenu as TMainMenu)
else
raise EMenuItemHelper.Create(strExcMenuItemParentIsNotAMainMenu);