В Delphi 10.4 в приложении VCL с помощью обработчика событий OnMessage
компонента TApplicationEvents
я увеличиваю размер шрифта элемента управления, щелкнутого правой кнопкой мыши:
procedure TformMain.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
var
ThisControl: TControl;
begin
if (Msg.Message = WM_RBUTTONDOWN) then
begin
ThisControl := FindDragTarget(Mouse.CursorPos, True);
CodeSite.Send('TformMain.ApplicationEvents1Message: RIGHTCLICK!', ThisControl.Name);
if ThisControl is TLabel then
TLabel(ThisControl).Font.Size := TLabel(ThisControl).Font.Size + 1
else if ThisControl is TCheckBox then
TCheckBox(ThisControl).Font.Size := TCheckBox(ThisControl).Font.Size + 1;
// ETC. ETC. ETC.! :-(
end;
end;
Это чрезвычайно НЕЭФФЕКТИВНЫЙ способ заставить это работать для всех типов элементов управления, потому что мне пришлось бы перечислять все существующие типы элементов управления, поскольку TControl
не имеет свойства TFont
.
Лучшим способом было бы получить свойство TFont
элемента управления, не спрашивая ТИП, а затем TYPECAST элемента управления.
Но как?