Difference between revisions of "Win32MenuStyler"
From Lazarus wiki
Jump to navigationJump to search (→Usage) |
(→Usage) |
||
Line 16: | Line 16: | ||
* add win32menustyler to "uses" | * add win32menustyler to "uses" | ||
− | * in form's OnShow, call: MenuStyler.ApplyToForm(Self, False) | + | * in form's OnShow, call: MenuStyler.ApplyToForm(Self, False) and MenuStyler.ApplyToMenu() for all needed PopupMenus |
− | * | + | * when needed to apply different colors later: |
+ | ** change them in global theme var | ||
+ | ** call MenuStyler.ApplyToForm(Self, True): second param should be True here, this forces form's resize to repaint the menu bar | ||
+ | ** not needed to call again MenuStyler.ApplyToMenu() for PopupMenus | ||
+ | * to cancel theming, call MenuStyler.ResetForm() and MenuStyler.ResetMenu() | ||
Unit gives global var to change all theming details: | Unit gives global var to change all theming details: |
Revision as of 22:12, 18 September 2020
This article applies to Windows only.
See also: Multiplatform Programming Guide
About
This is helper unit win32menustyler, which helps to theme TMainMenu for Lazarus Windows apps. Sometimes app has dark theme, so it's needed to make TMainMenu also dark.
About other OS: GitHub repo has cross-platform "lazmenustyler" unit, but it don't give any effect on gtk2 demo app. And it should not work on macOS, macOS has very special theming and menu is located on the screen top.
Author: Alexey Torgashin
License: MPL 2.0 or LGPL
Usage
- add win32menustyler to "uses"
- in form's OnShow, call: MenuStyler.ApplyToForm(Self, False) and MenuStyler.ApplyToMenu() for all needed PopupMenus
- when needed to apply different colors later:
- change them in global theme var
- call MenuStyler.ApplyToForm(Self, True): second param should be True here, this forces form's resize to repaint the menu bar
- not needed to call again MenuStyler.ApplyToMenu() for PopupMenus
- to cancel theming, call MenuStyler.ResetForm() and MenuStyler.ResetMenu()
Unit gives global var to change all theming details:
type
TWin32MenuStylerTheme = record
ColorBk: TColor;
ColorBkSelected: TColor;
ColorFont: TColor;
ColorFontDisabled: TColor;
CharCheckmark: Widechar;
CharRadiomark: Widechar;
FontName: string;
FontSize: integer;
end;
var
MenuStylerTheme: TWin32MenuStylerTheme;