├── .gitattributes ├── .gitignore ├── DelphiWindowStyle.Core.Win.pas ├── DelphiWindowStyle.FMX.pas ├── DelphiWindowStyle.Types.pas ├── DelphiWindowStyle.VCL.pas ├── Demo ├── Project51.dpr ├── Project51.dproj ├── Project51.res ├── Unit5.fmx └── Unit5.pas ├── DemoVCL ├── Project52.dpr ├── Project52.dproj ├── Project52.res ├── Unit6.dfm └── Unit6.pas ├── Demos.groupproj ├── LICENSE ├── Media ├── 2024-06-12 (1).png ├── 2024-06-12 (3).png ├── 2024-06-12 (4).png ├── 2024-06-12 (5).png ├── 2024-06-12 (6).png ├── 2024-06-12 (7).png ├── 2024-06-12 (8).png └── 2024-06-12 (9).png └── README.md /.gitattributes: -------------------------------------------------------------------------------- 1 | # Auto detect text files and perform LF normalization 2 | * text=auto 3 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Uncomment these types if you want even more clean repository. But be careful. 2 | # It can make harm to an existing project source. Read explanations below. 3 | # 4 | # Resource files are binaries containing manifest, project icon and version info. 5 | # They can not be viewed as text or compared by diff-tools. Consider replacing them with .rc files. 6 | #*.res 7 | # 8 | # Type library file (binary). In old Delphi versions it should be stored. 9 | # Since Delphi 2009 it is produced from .ridl file and can safely be ignored. 10 | #*.tlb 11 | # 12 | # Diagram Portfolio file. Used by the diagram editor up to Delphi 7. 13 | # Uncomment this if you are not using diagrams or use newer Delphi version. 14 | #*.ddp 15 | # 16 | # Visual LiveBindings file. Added in Delphi XE2. 17 | # Uncomment this if you are not using LiveBindings Designer. 18 | #*.vlb 19 | # 20 | # Deployment Manager configuration file for your project. Added in Delphi XE2. 21 | # Uncomment this if it is not mobile development and you do not use remote debug feature. 22 | #*.deployproj 23 | # 24 | # C++ object files produced when C/C++ Output file generation is configured. 25 | # Uncomment this if you are not using external objects (zlib library for example). 26 | #*.obj 27 | # 28 | 29 | # Delphi compiler-generated binaries (safe to delete) 30 | *.exe 31 | *.dll 32 | *.bpl 33 | *.bpi 34 | *.dcp 35 | *.so 36 | *.apk 37 | *.drc 38 | *.map 39 | *.dres 40 | *.rsm 41 | *.tds 42 | *.dcu 43 | *.lib 44 | *.a 45 | *.o 46 | *.ocx 47 | 48 | # Delphi autogenerated files (duplicated info) 49 | *.cfg 50 | *.hpp 51 | *Resource.rc 52 | 53 | # Delphi local files (user-specific info) 54 | *.local 55 | *.identcache 56 | *.projdata 57 | *.tvsconfig 58 | *.dsk 59 | 60 | # Delphi history and backups 61 | __history/ 62 | __recovery/ 63 | *.~* 64 | 65 | # Castalia statistics file (since XE7 Castalia is distributed with Delphi) 66 | *.stat 67 | 68 | # Boss dependency manager vendor folder https://github.com/HashLoad/boss 69 | modules/ 70 | -------------------------------------------------------------------------------- /DelphiWindowStyle.Core.Win.pas: -------------------------------------------------------------------------------- 1 | unit DelphiWindowStyle.Core.Win; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.DwmApi, Winapi.UxTheme, System.UITypes, 7 | DelphiWindowStyle.Types, WinApi.UI.Composition; 8 | 9 | {$SCOPEDENUMS ON} 10 | {$ALIGN ON} 11 | {$MINENUMSIZE 4} 12 | {$WEAKPACKAGEUNIT} 13 | {$WARN SYMBOL_PLATFORM OFF} 14 | 15 | function SetSystemBackdropType(Handle: THandle; const Value: TSystemBackdropType): Boolean; 16 | 17 | function SetExtendFrameIntoClientArea(Handle: THandle; const Value: TRect): Boolean; 18 | 19 | function SetWindowCaptionColor(Handle: THandle; const Value: TColor): Boolean; 20 | 21 | function SetWindowTextColor(Handle: THandle; const Value: TColor): Boolean; 22 | 23 | function SetWindowBorderColor(Handle: THandle; const Value: TColor): Boolean; 24 | 25 | function SetWindowCorner(Handle: THandle; const Value: TWindowCornerPreference): Boolean; 26 | 27 | function SetWindowColorModeAsSystem(Handle: THandle): Boolean; 28 | 29 | function SetWindowColorMode(Handle: THandle; const IsDark: Boolean): Boolean; 30 | 31 | procedure TestFuncs(Handle: THandle); 32 | 33 | procedure AnimateWindow(Handle: THandle; Time: Cardinal; Animate: Cardinal); 34 | 35 | // 36 | 37 | procedure RefreshTitleBarThemeColor(Handle: THandle); 38 | 39 | function IsHighContrast: Boolean; 40 | 41 | function SystemIsDarkMode: Boolean; 42 | 43 | function IsDarkModeAllowedForWindow(Handle: THandle): Boolean; 44 | 45 | function GetIsImmersiveColorUsingHighContrast(Mode: TImmersiveHCCacheMode): Boolean; 46 | 47 | function ShouldAppsUseDarkMode: Boolean; 48 | 49 | function SetAccentPolicy(Handle: THandle; GradientColor: TColor): Boolean; 50 | 51 | // 52 | 53 | function ImmersiveDarkMode: TDwmWindowAttribute; 54 | 55 | function AllowDarkModeForWindow(Handle: THandle; Allow: Boolean): Boolean; 56 | 57 | procedure AllowDarkModeForApp(Allow: Boolean); 58 | 59 | function GetAdjustWindowRect(Handle: THandle): TRect; 60 | 61 | function GetAeroColor: TAlphaColor; 62 | 63 | implementation 64 | 65 | uses 66 | System.Types, System.Math, System.Classes, Winapi.CommCtrl, Winapi.Messages, 67 | System.SysUtils, System.Win.Registry; 68 | 69 | function GetAeroColor: TAlphaColor; 70 | var 71 | OpaqueBlend: Bool; 72 | AColor: DWord; 73 | //A, R, G, B: Integer; 74 | OSInfo: TOSVersionInfo; 75 | begin 76 | ZeroMemory(@OSInfo, SizeOf(OSInfo)); 77 | OSInfo.dwOSVersionInfoSize := SizeOf(TOSVERSIONINFO); 78 | if (((not GetVersionEx(OSInfo)) and (OSInfo.dwPlatformId <> VER_PLATFORM_WIN32_NT) and (OSInfo.dwMajorVersion < 5))) or (Winapi.Dwmapi.DwmGetColorizationColor(AColor, OpaqueBlend) = S_FALSE) then 79 | begin 80 | Result := TColors.SysNone; 81 | Exit; 82 | end; { 83 | A := (AColor and $FF000000) shr 24; 84 | R := (AColor and $00FF0000) shr 16; 85 | G := (AColor and $0000FF00) shr 8; 86 | B := (AColor and $000000FF); } 87 | 88 | Result := AColor; 89 | end; 90 | 91 | function CheckPerMonitorV2SupportForWindow(AHandle: HWnd): Boolean; 92 | begin 93 | Result := (AHandle <> 0) and (TOSVersion.Major >= 10) and (TOSVersion.Build >= 14393) and 94 | AreDpiAwarenessContextsEqual(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2, GetWindowDpiAwarenessContext(AHandle)); 95 | end; 96 | 97 | function AdjustWindowRectExForWindow(var lpRect: TRect; dwStyle: DWORD; bMenu: BOOL; dwExStyle: DWORD; AHandle: HWnd): Boolean; 98 | begin 99 | if CheckPerMonitorV2SupportForWindow(AHandle) then 100 | Result := AdjustWindowRectExForDpi(lpRect, dwStyle, bMenu, dwExStyle, GetDPIForWindow(AHandle)) 101 | else 102 | Result := AdjustWindowRectEx(lpRect, dwStyle, bMenu, dwExStyle); 103 | end; 104 | 105 | function GetAdjustWindowRect(Handle: THandle): TRect; 106 | var 107 | dwStyle, dwExStyle: DWORD; 108 | begin 109 | Result := TRect.Empty; 110 | dwStyle := GetWindowLong(Handle, GWL_STYLE); 111 | dwExStyle := GetWindowLong(Handle, GWL_EXSTYLE); 112 | {$IF CompilerVersion < 34} 113 | AdjustWindowRectEx(Result, dwStyle, False, dwExStyle); 114 | {$ELSE} 115 | AdjustWindowRectExForWindow(Result, dwStyle, False, dwExStyle, Handle); 116 | {$ENDIF} 117 | end; 118 | 119 | procedure AnimateWindow(Handle: THandle; Time: Cardinal; Animate: Cardinal); 120 | begin 121 | Winapi.Windows.AnimateWindow(Handle, Time, Animate); 122 | end; 123 | 124 | function SetAccentPolicy(Handle: THandle; GradientColor: TColor): Boolean; 125 | type 126 | TAccentPolicy = packed record 127 | AccentState: DWORD; 128 | AccentFlags: DWORD; 129 | GradientColor: DWORD; 130 | AnimationId: DWORD; 131 | end; 132 | 133 | TWinCompAttrData = packed record 134 | Attribute: THandle; 135 | Data: Pointer; 136 | DataSize: ULONG; 137 | end; 138 | const 139 | WCA_ACCENT_POLICY = 19; 140 | // 141 | ACCENT_DISABLED = 0; 142 | ACCENT_ENABLE_GRADIENT = 1; 143 | ACCENT_ENABLE_TRANSPARENTGRADIENT = 2; 144 | ACCENT_ENABLE_BLURBEHIND = 3; 145 | ACCENT_ENABLE_ACRYLICBLURBEHIND = 4; // RS4 1803 146 | ACCENT_ENABLE_HOSTBACKDROP = 5; // RS5 1809 147 | ACCENT_INVALID_STATE = 6; 148 | // 149 | DrawLeftBorder = $20; 150 | DrawTopBorder = $40; 151 | DrawRightBorder = $80; 152 | DrawBottomBorder = $100; 153 | var 154 | DWM: THandle; 155 | CompAttrData: TWinCompAttrData; 156 | Accent: TAccentPolicy; 157 | var 158 | SetWindowCompositionAttribute: function(Wnd: hWnd; const AttrData: TWinCompAttrData): BOOL; stdcall; 159 | begin 160 | Result := False; 161 | 162 | DWM := LoadLibrary('user32.dll'); 163 | try 164 | @SetWindowCompositionAttribute := GetProcAddress(DWM, 'SetWindowCompositionAttribute'); 165 | if @SetWindowCompositionAttribute <> nil then 166 | begin 167 | if GradientColor <> TColorRec.Null then 168 | begin 169 | Accent.GradientColor := GradientColor; 170 | Accent.AccentState := ACCENT_ENABLE_ACRYLICBLURBEHIND; 171 | end 172 | else 173 | begin 174 | Accent.AccentState := ACCENT_ENABLE_BLURBEHIND; 175 | end; 176 | 177 | Accent.AccentFlags := DrawLeftBorder or DrawTopBorder or DrawRightBorder or DrawBottomBorder; 178 | CompAttrData.Attribute := WCA_ACCENT_POLICY; 179 | CompAttrData.DataSize := SizeOf(Accent); 180 | CompAttrData.Data := @Accent; 181 | Result := SetWindowCompositionAttribute(Handle, CompAttrData); 182 | end; 183 | finally 184 | FreeLibrary(DWM); 185 | end; 186 | if Result then 187 | SetWindowCorner(Handle, TWindowCornerPreference.DWMWCP_ROUND); 188 | end; 189 | 190 | procedure TestFuncs(Handle: THandle); 191 | begin 192 | // EnableBlur(Handle); 193 | // COLORREF dwColorBorder = MenuManager::g_bIsDarkMode ? WIN11_POPUP_BORDER_DARK : WIN11_POPUP_BORDER_LIGHT; 194 | // DwmSetWindowAttribute(hWnd, DWMWA_BORDER_COLOR, &dwColorBorder, sizeof(COLORREF)); 195 | end; 196 | 197 | function SetSystemBackdropType(Handle: THandle; const Value: TSystemBackdropType): Boolean; 198 | begin 199 | Result := Succeeded(DwmSetWindowAttribute(Handle, Ord(TDwmWindowAttribute.DWMWA_SYSTEMBACKDROP_TYPE), @Value, SizeOf(Integer))); 200 | end; 201 | 202 | function SetExtendFrameIntoClientArea(Handle: THandle; const Value: TRect): Boolean; 203 | begin 204 | var Margins: TMargins; 205 | Margins.cxLeftWidth := Value.Left; 206 | Margins.cxRightWidth := Value.Right; 207 | Margins.cyTopHeight := Value.Top; 208 | Margins.cyBottomHeight := Value.Bottom; 209 | Result := Succeeded(DwmExtendFrameIntoClientArea(Handle, Margins)); 210 | end; 211 | 212 | function SetWindowCaptionColor(Handle: THandle; const Value: TColor): Boolean; 213 | begin 214 | if Value = TColors.Null then 215 | begin 216 | var 217 | DefVal := DWMWA_COLOR_DEFAULT; 218 | Result := Succeeded(DwmSetWindowAttribute(Handle, Ord(TDwmWindowAttribute.DWMWA_CAPTION_COLOR), @DefVal, SizeOf(DWMWA_COLOR_DEFAULT))) 219 | end 220 | else 221 | Result := Succeeded(DwmSetWindowAttribute(Handle, Ord(TDwmWindowAttribute.DWMWA_CAPTION_COLOR), @Value, SizeOf(TColorRef))); 222 | end; 223 | 224 | function SetWindowTextColor(Handle: THandle; const Value: TColor): Boolean; 225 | begin 226 | Result := Succeeded(DwmSetWindowAttribute(Handle, Ord(TDwmWindowAttribute.DWMWA_TEXT_COLOR), @Value, SizeOf(TColorRef))); 227 | end; 228 | 229 | function SetWindowBorderColor(Handle: THandle; const Value: TColor): Boolean; 230 | begin 231 | Result := Succeeded(DwmSetWindowAttribute(Handle, Ord(TDwmWindowAttribute.DWMWA_BORDER_COLOR), @Value, SizeOf(TColorRef))); 232 | end; 233 | 234 | function SetWindowCorner(Handle: THandle; const Value: TWindowCornerPreference): Boolean; 235 | begin 236 | Result := Succeeded(DwmSetWindowAttribute(Handle, Ord(TDwmWindowAttribute.DWMWA_WINDOW_CORNER_PREFERENCE), @Value, SizeOf(Integer))); 237 | end; 238 | 239 | function SetWindowColorModeAsSystem(Handle: THandle): Boolean; 240 | begin 241 | Result := SetWindowColorMode(Handle, SystemIsDarkMode); 242 | end; 243 | 244 | function SetWindowColorMode(Handle: THandle; const IsDark: Boolean): Boolean; 245 | begin 246 | var Value: LongBool := IsDark; 247 | Result := Succeeded(DwmSetWindowAttribute(Handle, Ord(ImmersiveDarkMode), @Value, SizeOf(Value))); 248 | if Result then 249 | begin 250 | AllowDarkModeForWindow(Handle, IsDark); 251 | AllowDarkModeForApp(IsDark); 252 | end; 253 | end; 254 | 255 | function SystemIsDarkMode: Boolean; 256 | var 257 | LRegistry: TRegistry; 258 | begin 259 | Result := False; 260 | try 261 | LRegistry := TRegistry.Create; 262 | try 263 | LRegistry.RootKey := HKEY_CURRENT_USER; 264 | if LRegistry.OpenKeyReadOnly('\SOFTWARE\Microsoft\Windows\CurrentVersion\Themes\Personalize') then 265 | Result := not LRegistry.ReadBool('AppsUseLightTheme'); 266 | finally 267 | LRegistry.Free; 268 | end; 269 | except 270 | Result := False; 271 | end; 272 | end; 273 | 274 | function IsHighContrast: Boolean; 275 | var 276 | Info: HIGHCONTRASTW; 277 | begin 278 | Info.cbSize := SizeOf(Info); 279 | if SystemParametersInfo(SPI_GETHIGHCONTRAST, SizeOf(Info), @Info, Ord(False)) then 280 | Result := Info.dwFlags and HCF_HIGHCONTRASTON <> 0 281 | else 282 | Result := False; 283 | end; 284 | 285 | // 286 | 287 | var 288 | WinAllowDarkModeForApp: function(Allow: BOOL): BOOL; stdcall; 289 | WinAllowDarkModeForWindow: function(hWnd: hWnd; Allow: BOOL): BOOL; stdcall; 290 | WinGetIsImmersiveColorUsingHighContrast: function(Mode: TImmersiveHCCacheMode): BOOL; stdcall; 291 | WinIsDarkModeAllowedForWindow: function(hWnd: hWnd): BOOL; stdcall; 292 | WinRefreshImmersiveColorPolicyState: procedure; stdcall; 293 | WinSetPreferredAppMode: function(appMode: TPreferredAppMode): TPreferredAppMode; stdcall; 294 | SetWindowCompositionAttribute: function(hWnd: hWnd; pData: PWindowCompositionAttribData): BOOL; stdcall; 295 | WinShouldAppsUseDarkMode: function: BOOL; stdcall; 296 | GDarkModeSupported: BOOL = False; // changed type to BOOL 297 | GDarkModeEnabled: BOOL = False; 298 | GUxTheme: HMODULE = 0; 299 | 300 | const 301 | LOAD_LIBRARY_SEARCH_SYSTEM32 = $00000800; 302 | 303 | const 304 | themelib = 'uxtheme.dll'; 305 | 306 | procedure RefreshTitleBarThemeColor(Handle: THandle); 307 | var 308 | LUseDark: BOOL; 309 | LData: TWindowCompositionAttribData; 310 | begin 311 | if not Assigned(WinIsDarkModeAllowedForWindow) then 312 | Exit; 313 | if not Assigned(WinShouldAppsUseDarkMode) then 314 | Exit; 315 | LUseDark := WinIsDarkModeAllowedForWindow(Handle) and WinShouldAppsUseDarkMode and not IsHighContrast; 316 | if TOSVersion.Build < 18362 then 317 | SetProp(Handle, 'UseImmersiveDarkModeColors', THandle(LUseDark)) 318 | else if Assigned(SetWindowCompositionAttribute) then 319 | begin 320 | LData.Attrib := TWindowCompositionAttribute.WCA_USEDARKMODECOLORS; 321 | LData.pvData := @LUseDark; 322 | LData.cbData := SizeOf(LUseDark); 323 | SetWindowCompositionAttribute(Handle, @LData); 324 | end; 325 | end; 326 | 327 | function AllowDarkModeForWindow(Handle: THandle; Allow: Boolean): Boolean; 328 | begin 329 | Result := GDarkModeSupported and WinAllowDarkModeForWindow(Handle, Allow); 330 | end; 331 | 332 | function IsDarkModeAllowedForWindow(Handle: THandle): Boolean; 333 | begin 334 | Result := Assigned(WinIsDarkModeAllowedForWindow) and WinIsDarkModeAllowedForWindow(Handle); 335 | end; 336 | 337 | function GetIsImmersiveColorUsingHighContrast(Mode: TImmersiveHCCacheMode): Boolean; 338 | begin 339 | Result := Assigned(WinGetIsImmersiveColorUsingHighContrast) and WinGetIsImmersiveColorUsingHighContrast(Mode); 340 | end; 341 | 342 | // 343 | 344 | procedure AllowDarkModeForApp(Allow: Boolean); 345 | begin 346 | if Assigned(WinAllowDarkModeForApp) then 347 | WinAllowDarkModeForApp(Allow) 348 | else if Assigned(WinSetPreferredAppMode) then 349 | begin 350 | if Allow then 351 | WinSetPreferredAppMode(TPreferredAppMode.AllowDarkMode) 352 | else 353 | WinSetPreferredAppMode(TPreferredAppMode.DefaultMode); 354 | end; 355 | end; 356 | 357 | function ShouldAppsUseDarkMode: Boolean; 358 | begin 359 | Result := Assigned(WinShouldAppsUseDarkMode) and WinShouldAppsUseDarkMode; 360 | end; 361 | 362 | function IsWindows10OrGreater(buildNumber: DWORD): Boolean; 363 | begin 364 | Result := (TOSVersion.Major > 10) or 365 | ((TOSVersion.Major = 10) and (TOSVersion.Minor = 0) and (DWORD(TOSVersion.Build) >= buildNumber)); 366 | end; 367 | 368 | function IsWindows11OrGreater(buildNumber: DWORD): Boolean; 369 | begin 370 | Result := IsWindows10OrGreater(22000) or IsWindows10OrGreater(buildNumber); 371 | end; 372 | 373 | function CheckBuildNumber(buildNumber: DWORD): Boolean; 374 | begin 375 | Result := // 376 | IsWindows10OrGreater(20348) or // 377 | IsWindows10OrGreater(19045) or // 378 | IsWindows10OrGreater(19044) or // 379 | IsWindows10OrGreater(19043) or // 380 | IsWindows10OrGreater(19042) or // 381 | IsWindows10OrGreater(19041) or // 2004 382 | IsWindows10OrGreater(18363) or // 1909 383 | IsWindows10OrGreater(18362) or // 1903 384 | IsWindows10OrGreater(17763); // 1809 385 | end; 386 | 387 | function ImmersiveDarkMode: TDwmWindowAttribute; 388 | begin 389 | if IsWindows10OrGreater(18985) then 390 | Result := TDwmWindowAttribute.DWMWA_USE_IMMERSIVE_DARK_MODE 391 | else 392 | Result := TDwmWindowAttribute.DWMWA_USE_IMMERSIVE_DARK_MODE_BEFORE_20H1; 393 | end; 394 | 395 | procedure InitDarkMode; 396 | begin 397 | if (TOSVersion.Major = 10) and (TOSVersion.Minor = 0) and CheckBuildNumber(TOSVersion.Build) then 398 | begin 399 | GUxTheme := LoadLibraryEx(themelib, 0, LOAD_LIBRARY_SEARCH_SYSTEM32); 400 | if GUxTheme <> 0 then 401 | begin 402 | @WinAllowDarkModeForWindow := GetProcAddress(GUxTheme, MAKEINTRESOURCEA(133)); 403 | @WinGetIsImmersiveColorUsingHighContrast := GetProcAddress(GUxTheme, MAKEINTRESOURCEA(106)); 404 | @WinIsDarkModeAllowedForWindow := GetProcAddress(GUxTheme, MAKEINTRESOURCEA(137)); 405 | @WinRefreshImmersiveColorPolicyState := GetProcAddress(GUxTheme, MAKEINTRESOURCEA(104)); 406 | @SetWindowCompositionAttribute := GetProcAddress(GetModuleHandle(user32), 'SetWindowCompositionAttribute'); 407 | @WinShouldAppsUseDarkMode := GetProcAddress(GUxTheme, MAKEINTRESOURCEA(132)); 408 | 409 | if TOSVersion.Build < 18362 then 410 | @WinAllowDarkModeForApp := GetProcAddress(GUxTheme, MAKEINTRESOURCEA(135)) 411 | else 412 | @WinSetPreferredAppMode := GetProcAddress(GUxTheme, MAKEINTRESOURCEA(135)); 413 | 414 | if Assigned(WinRefreshImmersiveColorPolicyState) and 415 | Assigned(WinShouldAppsUseDarkMode) and 416 | Assigned(WinAllowDarkModeForWindow) and 417 | (Assigned(WinAllowDarkModeForApp) or Assigned(WinSetPreferredAppMode)) and 418 | Assigned(WinIsDarkModeAllowedForWindow) 419 | then 420 | begin 421 | GDarkModeSupported := True; 422 | AllowDarkModeForApp(True); 423 | WinRefreshImmersiveColorPolicyState; 424 | GDarkModeEnabled := ShouldAppsUseDarkMode and not IsHighContrast; 425 | end; 426 | end; 427 | end; 428 | end; 429 | 430 | procedure DoneDarkMode; 431 | begin 432 | if GUxTheme <> 0 then 433 | FreeLibrary(GUxTheme); 434 | end; 435 | 436 | initialization 437 | InitDarkMode; 438 | 439 | finalization 440 | DoneDarkMode; 441 | 442 | end. 443 | 444 | -------------------------------------------------------------------------------- /DelphiWindowStyle.FMX.pas: -------------------------------------------------------------------------------- 1 | unit DelphiWindowStyle.FMX; 2 | 3 | interface 4 | 5 | uses 6 | System.Types, FMX.Forms, System.UITypes, DelphiWindowStyle.Types, FMX.Types; 7 | 8 | const 9 | AW_HOR_POSITIVE = $00000001; // Анимирует окно слева направо. Этот флаг можно использовать с анимацией наката или слайда. Он игнорируется при использовании с AW_CENTER или AW_BLEND. 10 | AW_HOR_NEGATIVE = $00000002; // Анимирует окно справа налево. Этот флаг можно использовать с анимацией наката или слайда. Он игнорируется при использовании с AW_CENTER или AW_BLEND. 11 | AW_VER_POSITIVE = $00000004; // Анимирует окно сверху вниз. Этот флаг можно использовать с анимацией наката или слайда. Он игнорируется при использовании с AW_CENTER или AW_BLEND. 12 | AW_VER_NEGATIVE = $00000008; // Анимирует окно снизу вверх. Этот флаг можно использовать с анимацией наката или слайда. Он игнорируется при использовании с AW_CENTER или AW_BLEND. 13 | AW_CENTER = $00000010; // Делает окно сворачиваться вовнутрь, если используется AW_HIDE , или разворачиваться наружу, если AW_HIDE не используется. Различные флаги направления не оказывают никакого влияния. 14 | AW_HIDE = $00010000; // Скрывает окно. По умолчанию отображается окно . 15 | AW_ACTIVATE = $00020000; // Активирует окно. Не используйте это значение с AW_HIDE. 16 | AW_SLIDE = $00040000; // Использует анимацию слайдов. По умолчанию используется анимация наката. Этот флаг игнорируется при использовании с AW_CENTER. 17 | AW_BLEND = $00080000; // Использует эффект исчезания. Этот флаг можно использовать только в том случае, если hwnd является окном верхнего уровня. 18 | 19 | type 20 | TSystemBackdropType = DelphiWindowStyle.Types.TSystemBackdropType; 21 | 22 | TWindowCornerPreference = DelphiWindowStyle.Types.TWindowCornerPreference; 23 | 24 | TImmersiveHCCacheMode = DelphiWindowStyle.Types.TImmersiveHCCacheMode; 25 | 26 | TFormHelper = class helper for TCommonCustomForm 27 | function SetSystemBackdropType(const Value: TSystemBackdropType): Boolean; 28 | function SetExtendFrameIntoClientArea(const Value: TRect): Boolean; 29 | function SetWindowCaptionColor(const Value: TColor): Boolean; 30 | function SetWindowTextColor(const Value: TColor): Boolean; 31 | function SetWindowBorderColor(const Value: TColor): Boolean; 32 | function SetWindowCorner(const Value: TWindowCornerPreference): Boolean; 33 | function SetWindowColorModeAsSystem: Boolean; 34 | function SetWindowColorMode(const IsDark: Boolean): Boolean; 35 | // 36 | function SetAccentPolicy(GradientColor: TColor): Boolean; 37 | procedure AnimateWindow(Time: Cardinal; Animate: Cardinal); 38 | // 39 | procedure WindowStyleExAdd(Value: NativeInt); 40 | procedure WindowStyleExRemove(Value: NativeInt); 41 | procedure WindowStyleAdd(Value: NativeInt); 42 | procedure WindowStyleRemove(Value: NativeInt); 43 | // 44 | procedure RefreshTitleBarThemeColor; 45 | function IsHighContrast: Boolean; 46 | function SystemIsDarkMode: Boolean; 47 | function IsDarkModeAllowedForWindow: Boolean; 48 | function GetIsImmersiveColorUsingHighContrast(Mode: TImmersiveHCCacheMode): Boolean; 49 | function ShouldAppsUseDarkMode: Boolean; 50 | function GetAdjustWindowRect: TRect; 51 | 52 | function GetAeroColor: TAlphaColor; 53 | public 54 | procedure TestFuncs; 55 | end; 56 | 57 | implementation 58 | 59 | uses 60 | {$IFDEF MSWINDOWS} 61 | FMX.Platform.Win, DelphiWindowStyle.Core.Win, Winapi.Windows, 62 | {$ENDIF} 63 | FMX.Platform; 64 | 65 | { TFormHelper } 66 | 67 | procedure TFormHelper.AnimateWindow(Time: Cardinal; Animate: Cardinal); 68 | begin 69 | {$IFDEF MSWINDOWS} 70 | DelphiWindowStyle.Core.Win.AnimateWindow(FormToHWND(Self), Time, Animate); 71 | {$ELSE} 72 | 73 | {$ENDIF} 74 | end; 75 | 76 | function TFormHelper.GetAdjustWindowRect: TRect; 77 | begin 78 | {$IFDEF MSWINDOWS} 79 | Result := DelphiWindowStyle.Core.Win.GetAdjustWindowRect(FormToHWND(Self)); 80 | {$ELSE} 81 | 82 | {$ENDIF} 83 | end; 84 | 85 | function TFormHelper.GetAeroColor: TAlphaColor; 86 | begin 87 | {$IFDEF MSWINDOWS} 88 | Result := DelphiWindowStyle.Core.Win.GetAeroColor; 89 | {$ELSE} 90 | Result := 0; 91 | {$ENDIF} 92 | end; 93 | 94 | function TFormHelper.GetIsImmersiveColorUsingHighContrast(Mode: TImmersiveHCCacheMode): Boolean; 95 | begin 96 | {$IFDEF MSWINDOWS} 97 | Result := DelphiWindowStyle.Core.Win.GetIsImmersiveColorUsingHighContrast(Mode); 98 | {$ELSE} 99 | Result := False; 100 | {$ENDIF} 101 | end; 102 | 103 | function TFormHelper.IsDarkModeAllowedForWindow: Boolean; 104 | begin 105 | {$IFDEF MSWINDOWS} 106 | Result := DelphiWindowStyle.Core.Win.IsDarkModeAllowedForWindow(FormToHWND(Self)); 107 | {$ELSE} 108 | Result := False; 109 | {$ENDIF} 110 | end; 111 | 112 | function TFormHelper.IsHighContrast: Boolean; 113 | begin 114 | {$IFDEF MSWINDOWS} 115 | Result := DelphiWindowStyle.Core.Win.IsHighContrast; 116 | {$ELSE} 117 | Result := False; 118 | {$ENDIF} 119 | end; 120 | 121 | procedure TFormHelper.RefreshTitleBarThemeColor; 122 | begin 123 | {$IFDEF MSWINDOWS} 124 | DelphiWindowStyle.Core.Win.RefreshTitleBarThemeColor(FormToHWND(Self)); 125 | {$ELSE} 126 | // 127 | {$ENDIF} 128 | end; 129 | 130 | function TFormHelper.SetAccentPolicy(GradientColor: TColor): Boolean; 131 | begin 132 | {$IFDEF MSWINDOWS} 133 | Result := DelphiWindowStyle.Core.Win.SetAccentPolicy(FormToHWND(Self), GradientColor); 134 | {$ELSE} 135 | Result := False; 136 | {$ENDIF} 137 | end; 138 | 139 | function TFormHelper.SetExtendFrameIntoClientArea(const Value: TRect): Boolean; 140 | begin 141 | {$IFDEF MSWINDOWS} 142 | Result := DelphiWindowStyle.Core.Win.SetExtendFrameIntoClientArea(FormToHWND(Self), Value); 143 | {$ELSE} 144 | Result := False; 145 | {$ENDIF} 146 | end; 147 | 148 | function TFormHelper.SetSystemBackdropType(const Value: TSystemBackdropType): Boolean; 149 | begin 150 | {$IFDEF MSWINDOWS} 151 | Result := DelphiWindowStyle.Core.Win.SetSystemBackdropType(FormToHWND(Self), Value); 152 | {$ELSE} 153 | Result := False; 154 | {$ENDIF} 155 | end; 156 | 157 | function TFormHelper.SetWindowBorderColor(const Value: TColor): Boolean; 158 | begin 159 | {$IFDEF MSWINDOWS} 160 | Result := DelphiWindowStyle.Core.Win.SetWindowBorderColor(FormToHWND(Self), Value); 161 | {$ELSE} 162 | Result := False; 163 | {$ENDIF} 164 | end; 165 | 166 | function TFormHelper.SetWindowCaptionColor(const Value: TColor): Boolean; 167 | begin 168 | {$IFDEF MSWINDOWS} 169 | Result := DelphiWindowStyle.Core.Win.SetWindowCaptionColor(FormToHWND(Self), Value); 170 | {$ELSE} 171 | Result := False; 172 | {$ENDIF} 173 | end; 174 | 175 | function TFormHelper.SetWindowColorMode(const IsDark: Boolean): Boolean; 176 | begin 177 | {$IFDEF MSWINDOWS} 178 | Result := DelphiWindowStyle.Core.Win.SetWindowColorMode(FormToHWND(Self), IsDark); 179 | {$ELSE} 180 | Result := False; 181 | {$ENDIF} 182 | end; 183 | 184 | function TFormHelper.SetWindowColorModeAsSystem: Boolean; 185 | begin 186 | {$IFDEF MSWINDOWS} 187 | Result := DelphiWindowStyle.Core.Win.SetWindowColorModeAsSystem(FormToHWND(Self)); 188 | {$ELSE} 189 | Result := False; 190 | {$ENDIF} 191 | end; 192 | 193 | function TFormHelper.SetWindowCorner(const Value: TWindowCornerPreference): Boolean; 194 | begin 195 | {$IFDEF MSWINDOWS} 196 | Result := DelphiWindowStyle.Core.Win.SetWindowCorner(FormToHWND(Self), Value); 197 | {$ELSE} 198 | Result := False; 199 | {$ENDIF} 200 | end; 201 | 202 | function TFormHelper.SetWindowTextColor(const Value: TColor): Boolean; 203 | begin 204 | {$IFDEF MSWINDOWS} 205 | Result := DelphiWindowStyle.Core.Win.SetWindowTextColor(FormToHWND(Self), Value); 206 | {$ELSE} 207 | Result := False; 208 | {$ENDIF} 209 | end; 210 | 211 | function TFormHelper.ShouldAppsUseDarkMode: Boolean; 212 | begin 213 | {$IFDEF MSWINDOWS} 214 | Result := DelphiWindowStyle.Core.Win.ShouldAppsUseDarkMode; 215 | {$ELSE} 216 | Result := False; 217 | {$ENDIF} 218 | end; 219 | 220 | function TFormHelper.SystemIsDarkMode: Boolean; 221 | begin 222 | {$IFDEF MSWINDOWS} 223 | Result := DelphiWindowStyle.Core.Win.SystemIsDarkMode; 224 | {$ELSE} 225 | Result := False; 226 | {$ENDIF} 227 | end; 228 | 229 | procedure TFormHelper.TestFuncs; 230 | begin 231 | {$IFDEF MSWINDOWS} 232 | DelphiWindowStyle.Core.Win.TestFuncs(FormToHWND(Self)); 233 | {$ELSE} 234 | //Result := False; 235 | {$ENDIF} 236 | end; 237 | 238 | procedure TFormHelper.WindowStyleExAdd(Value: NativeInt); 239 | begin 240 | {$IFDEF MSWINDOWS} 241 | var Handle := FormToHWND(Self); 242 | SetWindowLongPtr(Handle, GWL_EXSTYLE, GetWindowLongPtr(Handle, GWL_EXSTYLE) or Value); 243 | {$ELSE} 244 | // 245 | {$ENDIF} 246 | end; 247 | 248 | procedure TFormHelper.WindowStyleExRemove(Value: NativeInt); 249 | begin 250 | {$IFDEF MSWINDOWS} 251 | var Handle := FormToHWND(Self); 252 | SetWindowLongPtr(Handle, GWL_EXSTYLE, GetWindowLongPtr(Handle, GWL_EXSTYLE) and not Value); 253 | {$ELSE} 254 | // 255 | {$ENDIF} 256 | end; 257 | 258 | procedure TFormHelper.WindowStyleAdd(Value: NativeInt); 259 | begin 260 | {$IFDEF MSWINDOWS} 261 | var Handle := FormToHWND(Self); 262 | SetWindowLongPtr(Handle, GWL_STYLE, GetWindowLongPtr(Handle, GWL_STYLE) or Value); 263 | {$ELSE} 264 | // 265 | {$ENDIF} 266 | end; 267 | 268 | procedure TFormHelper.WindowStyleRemove(Value: NativeInt); 269 | begin 270 | {$IFDEF MSWINDOWS} 271 | var Handle := FormToHWND(Self); 272 | SetWindowLongPtr(Handle, GWL_STYLE, GetWindowLongPtr(Handle, GWL_STYLE) and not Value); 273 | {$ELSE} 274 | // 275 | {$ENDIF} 276 | end; 277 | 278 | end. 279 | 280 | -------------------------------------------------------------------------------- /DelphiWindowStyle.Types.pas: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/DelphiWindowStyle.Types.pas -------------------------------------------------------------------------------- /DelphiWindowStyle.VCL.pas: -------------------------------------------------------------------------------- 1 | unit DelphiWindowStyle.VCL; 2 | 3 | interface 4 | 5 | uses 6 | System.Types, Vcl.Forms, System.UITypes, DelphiWindowStyle.Types; 7 | 8 | type 9 | TSystemBackdropType = DelphiWindowStyle.Types.TSystemBackdropType; 10 | 11 | TWindowCornerPreference = DelphiWindowStyle.Types.TWindowCornerPreference; 12 | 13 | TImmersiveHCCacheMode = DelphiWindowStyle.Types.TImmersiveHCCacheMode; 14 | 15 | TFormHelper = class helper for TForm 16 | function SetSystemBackdropType(const Value: TSystemBackdropType): Boolean; 17 | function SetExtendFrameIntoClientArea(const Value: TRect): Boolean; 18 | function SetWindowCaptionColor(const Value: TColor): Boolean; 19 | function SetWindowTextColor(const Value: TColor): Boolean; 20 | function SetWindowBorderColor(const Value: TColor): Boolean; 21 | function SetWindowCorner(const Value: TWindowCornerPreference): Boolean; 22 | function SetWindowColorModeAsSystem: Boolean; 23 | function SetWindowColorMode(const IsDark: Boolean): Boolean; 24 | // 25 | procedure RefreshTitleBarThemeColor; 26 | function IsHighContrast: Boolean; 27 | function SystemIsDarkMode: Boolean; 28 | function IsDarkModeAllowedForWindow: Boolean; 29 | function GetIsImmersiveColorUsingHighContrast(Mode: TImmersiveHCCacheMode): Boolean; 30 | function ShouldAppsUseDarkMode: Boolean; 31 | end; 32 | 33 | implementation 34 | 35 | uses 36 | DelphiWindowStyle.Core.Win; 37 | 38 | { TFormHelper } 39 | 40 | function TFormHelper.GetIsImmersiveColorUsingHighContrast(Mode: TImmersiveHCCacheMode): Boolean; 41 | begin 42 | Result := DelphiWindowStyle.Core.Win.GetIsImmersiveColorUsingHighContrast(Mode); 43 | end; 44 | 45 | function TFormHelper.IsDarkModeAllowedForWindow: Boolean; 46 | begin 47 | Result := DelphiWindowStyle.Core.Win.IsDarkModeAllowedForWindow(Handle); 48 | end; 49 | 50 | function TFormHelper.IsHighContrast: Boolean; 51 | begin 52 | Result := DelphiWindowStyle.Core.Win.IsHighContrast; 53 | end; 54 | 55 | procedure TFormHelper.RefreshTitleBarThemeColor; 56 | begin 57 | DelphiWindowStyle.Core.Win.RefreshTitleBarThemeColor(Handle); 58 | end; 59 | 60 | function TFormHelper.SetExtendFrameIntoClientArea(const Value: TRect): Boolean; 61 | begin 62 | Result := DelphiWindowStyle.Core.Win.SetExtendFrameIntoClientArea(Handle, Value); 63 | end; 64 | 65 | function TFormHelper.SetSystemBackdropType(const Value: TSystemBackdropType): Boolean; 66 | begin 67 | Result := DelphiWindowStyle.Core.Win.SetSystemBackdropType(Handle, Value); 68 | end; 69 | 70 | function TFormHelper.SetWindowBorderColor(const Value: TColor): Boolean; 71 | begin 72 | Result := DelphiWindowStyle.Core.Win.SetWindowBorderColor(Handle, Value); 73 | end; 74 | 75 | function TFormHelper.SetWindowCaptionColor(const Value: TColor): Boolean; 76 | begin 77 | Result := DelphiWindowStyle.Core.Win.SetWindowCaptionColor(Handle, Value); 78 | end; 79 | 80 | function TFormHelper.SetWindowColorMode(const IsDark: Boolean): Boolean; 81 | begin 82 | Result := DelphiWindowStyle.Core.Win.SetWindowColorMode(Handle, IsDark); 83 | end; 84 | 85 | function TFormHelper.SetWindowColorModeAsSystem: Boolean; 86 | begin 87 | Result := DelphiWindowStyle.Core.Win.SetWindowColorModeAsSystem(Handle); 88 | end; 89 | 90 | function TFormHelper.SetWindowCorner(const Value: TWindowCornerPreference): Boolean; 91 | begin 92 | Result := DelphiWindowStyle.Core.Win.SetWindowCorner(Handle, Value); 93 | end; 94 | 95 | function TFormHelper.SetWindowTextColor(const Value: TColor): Boolean; 96 | begin 97 | Result := DelphiWindowStyle.Core.Win.SetWindowTextColor(Handle, Value); 98 | end; 99 | 100 | function TFormHelper.ShouldAppsUseDarkMode: Boolean; 101 | begin 102 | Result := DelphiWindowStyle.Core.Win.ShouldAppsUseDarkMode; 103 | end; 104 | 105 | function TFormHelper.SystemIsDarkMode: Boolean; 106 | begin 107 | Result := DelphiWindowStyle.Core.Win.SystemIsDarkMode; 108 | end; 109 | 110 | end. 111 | 112 | -------------------------------------------------------------------------------- /Demo/Project51.dpr: -------------------------------------------------------------------------------- 1 | program Project51; 2 | 3 | uses 4 | System.StartUpCopy, 5 | FMX.Forms, 6 | Unit5 in 'Unit5.pas' {FormMain}, 7 | DelphiWindowStyle.Core.Win in '..\DelphiWindowStyle.Core.Win.pas', 8 | DelphiWindowStyle.FMX in '..\DelphiWindowStyle.FMX.pas', 9 | DelphiWindowStyle.Types in '..\DelphiWindowStyle.Types.pas'; 10 | 11 | {$R *.res} 12 | 13 | begin 14 | Application.Initialize; 15 | Application.CreateForm(TFormMain, FormMain); 16 | Application.Run; 17 | end. 18 | -------------------------------------------------------------------------------- /Demo/Project51.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {B9D3342A-2464-4B27-B349-920CE487A5A1} 4 | 20.1 5 | FMX 6 | True 7 | Debug 8 | Win32 9 | Project51 10 | 693395 11 | Application 12 | Project51.dpr 13 | 14 | 15 | true 16 | 17 | 18 | true 19 | Base 20 | true 21 | 22 | 23 | true 24 | Base 25 | true 26 | 27 | 28 | true 29 | Base 30 | true 31 | 32 | 33 | true 34 | Base 35 | true 36 | 37 | 38 | true 39 | Base 40 | true 41 | 42 | 43 | true 44 | Base 45 | true 46 | 47 | 48 | true 49 | Base 50 | true 51 | 52 | 53 | true 54 | Base 55 | true 56 | 57 | 58 | true 59 | Base 60 | true 61 | 62 | 63 | true 64 | Base 65 | true 66 | 67 | 68 | true 69 | Cfg_1 70 | true 71 | true 72 | 73 | 74 | true 75 | Cfg_1 76 | true 77 | true 78 | 79 | 80 | true 81 | Base 82 | true 83 | 84 | 85 | true 86 | Cfg_2 87 | true 88 | true 89 | 90 | 91 | true 92 | Cfg_2 93 | true 94 | true 95 | 96 | 97 | .\$(Platform)\$(Config) 98 | .\$(Platform)\$(Config) 99 | false 100 | false 101 | false 102 | false 103 | false 104 | System;Xml;Data;Datasnap;Web;Soap;$(DCC_Namespace) 105 | true 106 | true 107 | true 108 | true 109 | true 110 | true 111 | true 112 | true 113 | $(BDS)\bin\delphi_PROJECTICON.ico 114 | $(BDS)\bin\delphi_PROJECTICNS.icns 115 | Project51 116 | 117 | 118 | fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;Gorilla3D_Delphi_12_1_0_Athens;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 119 | package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= 120 | Debug 121 | true 122 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png 123 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png 124 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png 125 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png 126 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png 127 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png 128 | $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png 129 | $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png 130 | $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png 131 | $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png 132 | true 133 | true 134 | $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml 135 | $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml 136 | $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml 137 | $(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml 138 | $(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml 139 | $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml 140 | $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml 141 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png 142 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png 143 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png 144 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png 145 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png 146 | false 147 | true 148 | $(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml 149 | activity-1.7.2.dex.jar;annotation-experimental-1.3.0.dex.jar;annotation-jvm-1.6.0.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-6.0.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.10.1.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.10.1.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.1.dex.jar;lifecycle-livedata-2.6.1.dex.jar;lifecycle-livedata-core-2.6.1.dex.jar;lifecycle-runtime-2.6.1.dex.jar;lifecycle-service-2.6.1.dex.jar;lifecycle-viewmodel-2.6.1.dex.jar;lifecycle-viewmodel-savedstate-2.6.1.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.1.0.dex.jar;play-services-basement-18.1.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.0.2.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar 150 | 151 | 152 | fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;Gorilla3D_Delphi_12_1_0_Athens;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 153 | package=com.embarcadero.$(MSBuildProjectName);label=$(MSBuildProjectName);versionCode=1;versionName=1.0.0;persistent=False;restoreAnyVersion=False;installLocation=auto;largeHeap=False;theme=TitleBar;hardwareAccelerated=true;apiKey= 154 | Debug 155 | true 156 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_36x36.png 157 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_48x48.png 158 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_72x72.png 159 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_96x96.png 160 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_144x144.png 161 | $(BDS)\bin\Artwork\Android\FM_LauncherIcon_192x192.png 162 | $(BDS)\bin\Artwork\Android\FM_SplashImage_426x320.png 163 | $(BDS)\bin\Artwork\Android\FM_SplashImage_470x320.png 164 | $(BDS)\bin\Artwork\Android\FM_SplashImage_640x480.png 165 | $(BDS)\bin\Artwork\Android\FM_SplashImage_960x720.png 166 | true 167 | true 168 | $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Monochrome.xml 169 | $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Foreground.xml 170 | $(BDS)\bin\Artwork\Android\FM_AdaptiveIcon_Background.xml 171 | $(BDS)\bin\Artwork\Android\FM_VectorizedSplash.xml 172 | $(BDS)\bin\Artwork\Android\FM_VectorizedSplashDark.xml 173 | $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31.xml 174 | $(BDS)\bin\Artwork\Android\FM_VectorizedSplashV31Dark.xml 175 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_24x24.png 176 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_36x36.png 177 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_48x48.png 178 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_72x72.png 179 | $(BDS)\bin\Artwork\Android\FM_NotificationIcon_96x96.png 180 | false 181 | true 182 | $(BDS)\bin\Artwork\Android\FM_VectorizedNotificationIcon.xml 183 | activity-1.7.2.dex.jar;annotation-experimental-1.3.0.dex.jar;annotation-jvm-1.6.0.dex.jar;annotations-13.0.dex.jar;appcompat-1.2.0.dex.jar;appcompat-resources-1.2.0.dex.jar;billing-6.0.1.dex.jar;biometric-1.1.0.dex.jar;browser-1.4.0.dex.jar;cloud-messaging.dex.jar;collection-1.1.0.dex.jar;concurrent-futures-1.1.0.dex.jar;core-1.10.1.dex.jar;core-common-2.2.0.dex.jar;core-ktx-1.10.1.dex.jar;core-runtime-2.2.0.dex.jar;cursoradapter-1.0.0.dex.jar;customview-1.0.0.dex.jar;documentfile-1.0.0.dex.jar;drawerlayout-1.0.0.dex.jar;error_prone_annotations-2.9.0.dex.jar;exifinterface-1.3.6.dex.jar;firebase-annotations-16.2.0.dex.jar;firebase-common-20.3.1.dex.jar;firebase-components-17.1.0.dex.jar;firebase-datatransport-18.1.7.dex.jar;firebase-encoders-17.0.0.dex.jar;firebase-encoders-json-18.0.0.dex.jar;firebase-encoders-proto-16.0.0.dex.jar;firebase-iid-interop-17.1.0.dex.jar;firebase-installations-17.1.3.dex.jar;firebase-installations-interop-17.1.0.dex.jar;firebase-measurement-connector-19.0.0.dex.jar;firebase-messaging-23.1.2.dex.jar;fmx.dex.jar;fragment-1.2.5.dex.jar;google-play-licensing.dex.jar;interpolator-1.0.0.dex.jar;javax.inject-1.dex.jar;kotlin-stdlib-1.8.22.dex.jar;kotlin-stdlib-common-1.8.22.dex.jar;kotlin-stdlib-jdk7-1.8.22.dex.jar;kotlin-stdlib-jdk8-1.8.22.dex.jar;kotlinx-coroutines-android-1.6.4.dex.jar;kotlinx-coroutines-core-jvm-1.6.4.dex.jar;legacy-support-core-utils-1.0.0.dex.jar;lifecycle-common-2.6.1.dex.jar;lifecycle-livedata-2.6.1.dex.jar;lifecycle-livedata-core-2.6.1.dex.jar;lifecycle-runtime-2.6.1.dex.jar;lifecycle-service-2.6.1.dex.jar;lifecycle-viewmodel-2.6.1.dex.jar;lifecycle-viewmodel-savedstate-2.6.1.dex.jar;listenablefuture-1.0.dex.jar;loader-1.0.0.dex.jar;localbroadcastmanager-1.0.0.dex.jar;okio-jvm-3.4.0.dex.jar;play-services-ads-22.2.0.dex.jar;play-services-ads-base-22.2.0.dex.jar;play-services-ads-identifier-18.0.0.dex.jar;play-services-ads-lite-22.2.0.dex.jar;play-services-appset-16.0.1.dex.jar;play-services-base-18.1.0.dex.jar;play-services-basement-18.1.0.dex.jar;play-services-cloud-messaging-17.0.1.dex.jar;play-services-location-21.0.1.dex.jar;play-services-maps-18.1.0.dex.jar;play-services-measurement-base-20.1.2.dex.jar;play-services-measurement-sdk-api-20.1.2.dex.jar;play-services-stats-17.0.2.dex.jar;play-services-tasks-18.0.2.dex.jar;print-1.0.0.dex.jar;profileinstaller-1.3.0.dex.jar;room-common-2.2.5.dex.jar;room-runtime-2.2.5.dex.jar;savedstate-1.2.1.dex.jar;sqlite-2.1.0.dex.jar;sqlite-framework-2.1.0.dex.jar;startup-runtime-1.1.1.dex.jar;tracing-1.0.0.dex.jar;transport-api-3.0.0.dex.jar;transport-backend-cct-3.1.8.dex.jar;transport-runtime-3.1.8.dex.jar;user-messaging-platform-2.0.0.dex.jar;vectordrawable-1.1.0.dex.jar;vectordrawable-animated-1.1.0.dex.jar;versionedparcelable-1.1.1.dex.jar;viewpager-1.0.0.dex.jar;work-runtime-2.7.0.dex.jar 184 | 185 | 186 | fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 187 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers 188 | iPhoneAndiPad 189 | true 190 | Debug 191 | $(MSBuildProjectName) 192 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png 193 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png 194 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png 195 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png 196 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png 197 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png 198 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png 199 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png 200 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png 201 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png 202 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png 203 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png 204 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png 205 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png 206 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png 207 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png 208 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png 209 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png 210 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png 211 | $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png 212 | 213 | 214 | fmx;DbxCommonDriver;bindengine;IndyIPCommon;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;FireDACSqliteDriver;DbxClientDriver;soapmidas;fmxFireDAC;dbexpress;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;CustomIPTransport;DBXInterBaseDriver;IndySystem;bindcomp;FireDACCommon;IndyCore;RESTBackendComponents;bindcompdbx;rtl;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDAC;FireDACDSDriver;xmlrtl;tethering;dsnap;CloudService;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 215 | CFBundleName=$(MSBuildProjectName);CFBundleDevelopmentRegion=en;CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleInfoDictionaryVersion=7.1;CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;LSRequiresIPhoneOS=true;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);UIDeviceFamily=iPhone & iPad;NSLocationAlwaysUsageDescription=The reason for accessing the location information of the user;NSLocationWhenInUseUsageDescription=The reason for accessing the location information of the user;NSLocationAlwaysAndWhenInUseUsageDescription=The reason for accessing the location information of the user;UIBackgroundModes=;NSContactsUsageDescription=The reason for accessing the contacts;NSPhotoLibraryUsageDescription=The reason for accessing the photo library;NSPhotoLibraryAddUsageDescription=The reason for adding to the photo library;NSCameraUsageDescription=The reason for accessing the camera;NSFaceIDUsageDescription=The reason for accessing the face id;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSSiriUsageDescription=The reason for accessing Siri;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing bluetooth;NSBluetoothPeripheralUsageDescription=The reason for accessing bluetooth peripherals;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSMotionUsageDescription=The reason for accessing the accelerometer;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers 216 | iPhoneAndiPad 217 | true 218 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_1024x1024.png 219 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_120x120.png 220 | $(BDS)\bin\Artwork\iOS\iPhone\FM_ApplicationIcon_180x180.png 221 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_2x.png 222 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_2x.png 223 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImage_3x.png 224 | $(BDS)\bin\Artwork\iOS\iPhone\FM_LaunchImageDark_3x.png 225 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_80x80.png 226 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SpotlightSearchIcon_120x120.png 227 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_58x58.png 228 | $(BDS)\bin\Artwork\iOS\iPhone\FM_SettingIcon_87x87.png 229 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_40x40.png 230 | $(BDS)\bin\Artwork\iOS\iPhone\FM_NotificationIcon_60x60.png 231 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_152x152.png 232 | $(BDS)\bin\Artwork\iOS\iPad\FM_ApplicationIcon_167x167.png 233 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImage_2x.png 234 | $(BDS)\bin\Artwork\iOS\iPad\FM_LaunchImageDark_2x.png 235 | $(BDS)\bin\Artwork\iOS\iPad\FM_SpotlightSearchIcon_80x80.png 236 | $(BDS)\bin\Artwork\iOS\iPad\FM_SettingIcon_58x58.png 237 | $(BDS)\bin\Artwork\iOS\iPad\FM_NotificationIcon_40x40.png 238 | 239 | 240 | DataSnapServer;fmx;emshosting;DbxCommonDriver;bindengine;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;dbxcds;emsedge;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;dbexpress;FireDACInfxDriver;inet;DataSnapCommon;dbrtl;FireDACOracleDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;dsnapxml;DataSnapClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;xmlrtl;dsnap;CloudService;FireDACDb2Driver;DataSnapNativeClient;DatasnapConnectorsFreePascal;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 241 | 242 | 243 | DataSnapServer;fmx;DbxCommonDriver;bindengine;IndyIPCommon;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;DBXInformixDriver;fmxobj;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 244 | CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface 245 | Debug 246 | true 247 | 248 | 249 | DataSnapServer;fmx;DbxCommonDriver;bindengine;IndyIPCommon;FireDACCommonODBC;emsclient;FireDACCommonDriver;IndyProtocols;IndyIPClient;dbxcds;FmxTeeUI;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;soapmidas;fmxFireDAC;dbexpress;DBXMySQLDriver;inet;DataSnapCommon;fmxase;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;RESTComponents;DBXSqliteDriver;IndyIPServer;dsnapxml;DataSnapClient;DataSnapProviderClient;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;DBXInformixDriver;fmxobj;DataSnapNativeClient;FMXTee;soaprtl;soapserver;FireDACIBDriver;$(DCC_UsePackage) 250 | CFBundleName=$(MSBuildProjectName);CFBundleDisplayName=$(MSBuildProjectName);CFBundleIdentifier=$(MSBuildProjectName);CFBundleVersion=1.0.0;CFBundleShortVersionString=1.0.0;CFBundlePackageType=APPL;CFBundleSignature=????;CFBundleAllowMixedLocalizations=YES;CFBundleExecutable=$(MSBuildProjectName);NSHighResolutionCapable=true;LSApplicationCategoryType=public.app-category.utilities;NSLocationUsageDescription=The reason for accessing the location information of the user;NSContactsUsageDescription=The reason for accessing the contacts;NSCalendarsUsageDescription=The reason for accessing the calendar data;NSRemindersUsageDescription=The reason for accessing the reminders;NSCameraUsageDescription=The reason for accessing the camera;NSMicrophoneUsageDescription=The reason for accessing the microphone;NSMotionUsageDescription=The reason for accessing the accelerometer;NSDesktopFolderUsageDescription=The reason for accessing the Desktop folder;NSDocumentsFolderUsageDescription=The reason for accessing the Documents folder;NSDownloadsFolderUsageDescription=The reason for accessing the Downloads folder;NSNetworkVolumesUsageDescription=The reason for accessing files on a network volume;NSRemovableVolumesUsageDescription=The reason for accessing files on a removable volume;NSSpeechRecognitionUsageDescription=The reason for requesting to send user data to Apple's speech recognition servers;ITSAppUsesNonExemptEncryption=false;NSBluetoothAlwaysUsageDescription=The reason for accessing the Bluetooth interface 251 | Debug 252 | true 253 | 254 | 255 | vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;Skia.Package.FMX;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;OpenAIPackage;vclFireDAC;Gorilla3D_Delphi_12_1_0_Athens;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage) 256 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 257 | Debug 258 | true 259 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 260 | 1033 261 | $(BDS)\bin\default_app.manifest 262 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 263 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 264 | 265 | 266 | vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;Gorilla3D_Delphi_12_1_0_Athens;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage) 267 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) 268 | Debug 269 | true 270 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 271 | 1033 272 | $(BDS)\bin\default_app.manifest 273 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 274 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 275 | 276 | 277 | DEBUG;$(DCC_Define) 278 | true 279 | false 280 | true 281 | true 282 | true 283 | true 284 | true 285 | 286 | 287 | false 288 | PerMonitorV2 289 | 290 | 291 | PerMonitorV2 292 | 293 | 294 | false 295 | RELEASE;$(DCC_Define) 296 | 0 297 | 0 298 | 299 | 300 | PerMonitorV2 301 | 302 | 303 | PerMonitorV2 304 | 305 | 306 | 307 | MainSource 308 | 309 | 310 |
FormMain
311 | fmx 312 |
313 | 314 | 315 | 316 | 317 | Base 318 | 319 | 320 | Cfg_1 321 | Base 322 | 323 | 324 | Cfg_2 325 | Base 326 | 327 |
328 | 329 | Delphi.Personality.12 330 | Application 331 | 332 | 333 | 334 | Project51.dpr 335 | 336 | 337 | 338 | 339 | 340 | true 341 | 342 | 343 | 344 | 345 | true 346 | 347 | 348 | 349 | 350 | true 351 | 352 | 353 | 354 | 355 | Project51.exe 356 | true 357 | 358 | 359 | 360 | 361 | 1 362 | 363 | 364 | Contents\MacOS 365 | 1 366 | 367 | 368 | 0 369 | 370 | 371 | 372 | 373 | classes 374 | 64 375 | 376 | 377 | classes 378 | 64 379 | 380 | 381 | 382 | 383 | res\xml 384 | 1 385 | 386 | 387 | res\xml 388 | 1 389 | 390 | 391 | 392 | 393 | library\lib\armeabi 394 | 1 395 | 396 | 397 | library\lib\armeabi 398 | 1 399 | 400 | 401 | 402 | 403 | library\lib\armeabi-v7a 404 | 1 405 | 406 | 407 | 408 | 409 | library\lib\mips 410 | 1 411 | 412 | 413 | library\lib\mips 414 | 1 415 | 416 | 417 | 418 | 419 | library\lib\armeabi-v7a 420 | 1 421 | 422 | 423 | library\lib\arm64-v8a 424 | 1 425 | 426 | 427 | 428 | 429 | library\lib\armeabi-v7a 430 | 1 431 | 432 | 433 | 434 | 435 | res\drawable 436 | 1 437 | 438 | 439 | res\drawable 440 | 1 441 | 442 | 443 | 444 | 445 | res\drawable-anydpi-v21 446 | 1 447 | 448 | 449 | res\drawable-anydpi-v21 450 | 1 451 | 452 | 453 | 454 | 455 | res\values 456 | 1 457 | 458 | 459 | res\values 460 | 1 461 | 462 | 463 | 464 | 465 | res\values-v21 466 | 1 467 | 468 | 469 | res\values-v21 470 | 1 471 | 472 | 473 | 474 | 475 | res\values-v31 476 | 1 477 | 478 | 479 | res\values-v31 480 | 1 481 | 482 | 483 | 484 | 485 | res\drawable-anydpi-v26 486 | 1 487 | 488 | 489 | res\drawable-anydpi-v26 490 | 1 491 | 492 | 493 | 494 | 495 | res\drawable 496 | 1 497 | 498 | 499 | res\drawable 500 | 1 501 | 502 | 503 | 504 | 505 | res\drawable 506 | 1 507 | 508 | 509 | res\drawable 510 | 1 511 | 512 | 513 | 514 | 515 | res\drawable 516 | 1 517 | 518 | 519 | res\drawable 520 | 1 521 | 522 | 523 | 524 | 525 | res\drawable-anydpi-v33 526 | 1 527 | 528 | 529 | res\drawable-anydpi-v33 530 | 1 531 | 532 | 533 | 534 | 535 | res\values 536 | 1 537 | 538 | 539 | res\values 540 | 1 541 | 542 | 543 | 544 | 545 | res\values-night-v21 546 | 1 547 | 548 | 549 | res\values-night-v21 550 | 1 551 | 552 | 553 | 554 | 555 | res\drawable 556 | 1 557 | 558 | 559 | res\drawable 560 | 1 561 | 562 | 563 | 564 | 565 | res\drawable-xxhdpi 566 | 1 567 | 568 | 569 | res\drawable-xxhdpi 570 | 1 571 | 572 | 573 | 574 | 575 | res\drawable-xxxhdpi 576 | 1 577 | 578 | 579 | res\drawable-xxxhdpi 580 | 1 581 | 582 | 583 | 584 | 585 | res\drawable-ldpi 586 | 1 587 | 588 | 589 | res\drawable-ldpi 590 | 1 591 | 592 | 593 | 594 | 595 | res\drawable-mdpi 596 | 1 597 | 598 | 599 | res\drawable-mdpi 600 | 1 601 | 602 | 603 | 604 | 605 | res\drawable-hdpi 606 | 1 607 | 608 | 609 | res\drawable-hdpi 610 | 1 611 | 612 | 613 | 614 | 615 | res\drawable-xhdpi 616 | 1 617 | 618 | 619 | res\drawable-xhdpi 620 | 1 621 | 622 | 623 | 624 | 625 | res\drawable-mdpi 626 | 1 627 | 628 | 629 | res\drawable-mdpi 630 | 1 631 | 632 | 633 | 634 | 635 | res\drawable-hdpi 636 | 1 637 | 638 | 639 | res\drawable-hdpi 640 | 1 641 | 642 | 643 | 644 | 645 | res\drawable-xhdpi 646 | 1 647 | 648 | 649 | res\drawable-xhdpi 650 | 1 651 | 652 | 653 | 654 | 655 | res\drawable-xxhdpi 656 | 1 657 | 658 | 659 | res\drawable-xxhdpi 660 | 1 661 | 662 | 663 | 664 | 665 | res\drawable-xxxhdpi 666 | 1 667 | 668 | 669 | res\drawable-xxxhdpi 670 | 1 671 | 672 | 673 | 674 | 675 | res\drawable-small 676 | 1 677 | 678 | 679 | res\drawable-small 680 | 1 681 | 682 | 683 | 684 | 685 | res\drawable-normal 686 | 1 687 | 688 | 689 | res\drawable-normal 690 | 1 691 | 692 | 693 | 694 | 695 | res\drawable-large 696 | 1 697 | 698 | 699 | res\drawable-large 700 | 1 701 | 702 | 703 | 704 | 705 | res\drawable-xlarge 706 | 1 707 | 708 | 709 | res\drawable-xlarge 710 | 1 711 | 712 | 713 | 714 | 715 | res\values 716 | 1 717 | 718 | 719 | res\values 720 | 1 721 | 722 | 723 | 724 | 725 | res\drawable-anydpi-v24 726 | 1 727 | 728 | 729 | res\drawable-anydpi-v24 730 | 1 731 | 732 | 733 | 734 | 735 | res\drawable 736 | 1 737 | 738 | 739 | res\drawable 740 | 1 741 | 742 | 743 | 744 | 745 | res\drawable-night-anydpi-v21 746 | 1 747 | 748 | 749 | res\drawable-night-anydpi-v21 750 | 1 751 | 752 | 753 | 754 | 755 | res\drawable-anydpi-v31 756 | 1 757 | 758 | 759 | res\drawable-anydpi-v31 760 | 1 761 | 762 | 763 | 764 | 765 | res\drawable-night-anydpi-v31 766 | 1 767 | 768 | 769 | res\drawable-night-anydpi-v31 770 | 1 771 | 772 | 773 | 774 | 775 | 1 776 | 777 | 778 | Contents\MacOS 779 | 1 780 | 781 | 782 | 0 783 | 784 | 785 | 786 | 787 | Contents\MacOS 788 | 1 789 | .framework 790 | 791 | 792 | Contents\MacOS 793 | 1 794 | .framework 795 | 796 | 797 | Contents\MacOS 798 | 1 799 | .framework 800 | 801 | 802 | 0 803 | 804 | 805 | 806 | 807 | 1 808 | .dylib 809 | 810 | 811 | 1 812 | .dylib 813 | 814 | 815 | 1 816 | .dylib 817 | 818 | 819 | Contents\MacOS 820 | 1 821 | .dylib 822 | 823 | 824 | Contents\MacOS 825 | 1 826 | .dylib 827 | 828 | 829 | Contents\MacOS 830 | 1 831 | .dylib 832 | 833 | 834 | 0 835 | .dll;.bpl 836 | 837 | 838 | 839 | 840 | 1 841 | .dylib 842 | 843 | 844 | 1 845 | .dylib 846 | 847 | 848 | 1 849 | .dylib 850 | 851 | 852 | Contents\MacOS 853 | 1 854 | .dylib 855 | 856 | 857 | Contents\MacOS 858 | 1 859 | .dylib 860 | 861 | 862 | Contents\MacOS 863 | 1 864 | .dylib 865 | 866 | 867 | 0 868 | .bpl 869 | 870 | 871 | 872 | 873 | 0 874 | 875 | 876 | 0 877 | 878 | 879 | 0 880 | 881 | 882 | 0 883 | 884 | 885 | 0 886 | 887 | 888 | Contents\Resources\StartUp\ 889 | 0 890 | 891 | 892 | Contents\Resources\StartUp\ 893 | 0 894 | 895 | 896 | Contents\Resources\StartUp\ 897 | 0 898 | 899 | 900 | 0 901 | 902 | 903 | 904 | 905 | 1 906 | 907 | 908 | 1 909 | 910 | 911 | 912 | 913 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 914 | 1 915 | 916 | 917 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 918 | 1 919 | 920 | 921 | 922 | 923 | ..\ 924 | 1 925 | 926 | 927 | ..\ 928 | 1 929 | 930 | 931 | ..\ 932 | 1 933 | 934 | 935 | 936 | 937 | Contents 938 | 1 939 | 940 | 941 | Contents 942 | 1 943 | 944 | 945 | Contents 946 | 1 947 | 948 | 949 | 950 | 951 | Contents\Resources 952 | 1 953 | 954 | 955 | Contents\Resources 956 | 1 957 | 958 | 959 | Contents\Resources 960 | 1 961 | 962 | 963 | 964 | 965 | library\lib\armeabi-v7a 966 | 1 967 | 968 | 969 | library\lib\arm64-v8a 970 | 1 971 | 972 | 973 | 1 974 | 975 | 976 | 1 977 | 978 | 979 | 1 980 | 981 | 982 | 1 983 | 984 | 985 | Contents\MacOS 986 | 1 987 | 988 | 989 | Contents\MacOS 990 | 1 991 | 992 | 993 | Contents\MacOS 994 | 1 995 | 996 | 997 | 0 998 | 999 | 1000 | 1001 | 1002 | library\lib\armeabi-v7a 1003 | 1 1004 | 1005 | 1006 | 1007 | 1008 | 1 1009 | 1010 | 1011 | 1 1012 | 1013 | 1014 | 1 1015 | 1016 | 1017 | 1018 | 1019 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1020 | 1 1021 | 1022 | 1023 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1024 | 1 1025 | 1026 | 1027 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 1028 | 1 1029 | 1030 | 1031 | 1032 | 1033 | ..\ 1034 | 1 1035 | 1036 | 1037 | ..\ 1038 | 1 1039 | 1040 | 1041 | ..\ 1042 | 1 1043 | 1044 | 1045 | 1046 | 1047 | 1 1048 | 1049 | 1050 | 1 1051 | 1052 | 1053 | 1 1054 | 1055 | 1056 | 1057 | 1058 | ..\$(PROJECTNAME).launchscreen 1059 | 64 1060 | 1061 | 1062 | ..\$(PROJECTNAME).launchscreen 1063 | 64 1064 | 1065 | 1066 | 1067 | 1068 | 1 1069 | 1070 | 1071 | 1 1072 | 1073 | 1074 | 1 1075 | 1076 | 1077 | 1078 | 1079 | Assets 1080 | 1 1081 | 1082 | 1083 | Assets 1084 | 1 1085 | 1086 | 1087 | 1088 | 1089 | Assets 1090 | 1 1091 | 1092 | 1093 | Assets 1094 | 1 1095 | 1096 | 1097 | 1098 | 1099 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1100 | 1 1101 | 1102 | 1103 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1104 | 1 1105 | 1106 | 1107 | 1108 | 1109 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1110 | 1 1111 | 1112 | 1113 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1114 | 1 1115 | 1116 | 1117 | 1118 | 1119 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1120 | 1 1121 | 1122 | 1123 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1124 | 1 1125 | 1126 | 1127 | 1128 | 1129 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1130 | 1 1131 | 1132 | 1133 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1134 | 1 1135 | 1136 | 1137 | 1138 | 1139 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1140 | 1 1141 | 1142 | 1143 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1144 | 1 1145 | 1146 | 1147 | 1148 | 1149 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1150 | 1 1151 | 1152 | 1153 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1154 | 1 1155 | 1156 | 1157 | 1158 | 1159 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1160 | 1 1161 | 1162 | 1163 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1164 | 1 1165 | 1166 | 1167 | 1168 | 1169 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1170 | 1 1171 | 1172 | 1173 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1174 | 1 1175 | 1176 | 1177 | 1178 | 1179 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1180 | 1 1181 | 1182 | 1183 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1184 | 1 1185 | 1186 | 1187 | 1188 | 1189 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1190 | 1 1191 | 1192 | 1193 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1194 | 1 1195 | 1196 | 1197 | 1198 | 1199 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1200 | 1 1201 | 1202 | 1203 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1204 | 1 1205 | 1206 | 1207 | 1208 | 1209 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1210 | 1 1211 | 1212 | 1213 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1214 | 1 1215 | 1216 | 1217 | 1218 | 1219 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1220 | 1 1221 | 1222 | 1223 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1224 | 1 1225 | 1226 | 1227 | 1228 | 1229 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1230 | 1 1231 | 1232 | 1233 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1234 | 1 1235 | 1236 | 1237 | 1238 | 1239 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1240 | 1 1241 | 1242 | 1243 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1244 | 1 1245 | 1246 | 1247 | 1248 | 1249 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1250 | 1 1251 | 1252 | 1253 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1254 | 1 1255 | 1256 | 1257 | 1258 | 1259 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1260 | 1 1261 | 1262 | 1263 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1264 | 1 1265 | 1266 | 1267 | 1268 | 1269 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1270 | 1 1271 | 1272 | 1273 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1274 | 1 1275 | 1276 | 1277 | 1278 | 1279 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1280 | 1 1281 | 1282 | 1283 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1284 | 1 1285 | 1286 | 1287 | 1288 | 1289 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1290 | 1 1291 | 1292 | 1293 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1294 | 1 1295 | 1296 | 1297 | 1298 | 1299 | 1300 | 1301 | 1302 | 1303 | 1304 | 1305 | 1306 | 1307 | 1308 | 1309 | 1310 | 1311 | True 1312 | True 1313 | False 1314 | True 1315 | True 1316 | True 1317 | False 1318 | True 1319 | True 1320 | True 1321 | True 1322 | 1323 | 1324 | 12 1325 | 1326 | 1327 | 1328 | 1329 |
1330 | -------------------------------------------------------------------------------- /Demo/Project51.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/Demo/Project51.res -------------------------------------------------------------------------------- /Demo/Unit5.fmx: -------------------------------------------------------------------------------- 1 | object FormMain: TFormMain 2 | Left = 0 3 | Top = 0 4 | Caption = 'Test' 5 | ClientHeight = 436 6 | ClientWidth = 764 7 | FormFactor.Width = 320 8 | FormFactor.Height = 480 9 | FormFactor.Devices = [Desktop] 10 | OnCreate = FormCreate 11 | DesignerMasterStyle = 0 12 | object Panel27: TPanel 13 | Align = Center 14 | Size.Width = 465.000000000000000000 15 | Size.Height = 88.000000000000000000 16 | Size.PlatformDefault = False 17 | TabOrder = 1 18 | object ButtonAuto: TButton 19 | Position.X = 8.000000000000000000 20 | Position.Y = 8.000000000000000000 21 | Size.Width = 83.000000000000000000 22 | Size.Height = 32.000000000000000000 23 | Size.PlatformDefault = False 24 | TabOrder = 7 25 | Text = 'Auto' 26 | TextSettings.Trimming = None 27 | OnClick = ButtonAutoClick 28 | end 29 | object ButtonDisable: TButton 30 | Position.X = 99.000000000000000000 31 | Position.Y = 8.000000000000000000 32 | Size.Width = 83.000000000000000000 33 | Size.Height = 32.000000000000000000 34 | Size.PlatformDefault = False 35 | TabOrder = 6 36 | Text = 'Disable' 37 | TextSettings.Trimming = None 38 | OnClick = ButtonDisableClick 39 | end 40 | object ButtonMica: TButton 41 | Position.X = 190.000000000000000000 42 | Position.Y = 8.000000000000000000 43 | Size.Width = 83.000000000000000000 44 | Size.Height = 32.000000000000000000 45 | Size.PlatformDefault = False 46 | TabOrder = 5 47 | Text = 'Mica' 48 | TextSettings.Trimming = None 49 | OnClick = ButtonMicaClick 50 | end 51 | object ButtonAcrylic: TButton 52 | Position.X = 281.000000000000000000 53 | Position.Y = 8.000000000000000000 54 | Size.Width = 83.000000000000000000 55 | Size.Height = 32.000000000000000000 56 | Size.PlatformDefault = False 57 | TabOrder = 4 58 | Text = 'Acrylic' 59 | TextSettings.Trimming = None 60 | OnClick = ButtonAcrylicClick 61 | end 62 | object ButtonTabbed: TButton 63 | Position.X = 372.000000000000000000 64 | Position.Y = 8.000000000000000000 65 | Size.Width = 83.000000000000000000 66 | Size.Height = 32.000000000000000000 67 | Size.PlatformDefault = False 68 | TabOrder = 3 69 | Text = 'Tabbed' 70 | TextSettings.Trimming = None 71 | OnClick = ButtonTabbedClick 72 | end 73 | object CheckBoxDarkMode: TCheckBox 74 | StyleName = 'text' 75 | Position.X = 8.000000000000000000 76 | Position.Y = 48.000000000000000000 77 | Size.Width = 97.000000000000000000 78 | Size.Height = 32.000000000000000000 79 | Size.PlatformDefault = False 80 | TabOrder = 19 81 | Text = 'DarkMode' 82 | TextSettings.Trimming = Character 83 | OnChange = CheckBoxDarkModeChange 84 | end 85 | end 86 | end 87 | -------------------------------------------------------------------------------- /Demo/Unit5.pas: -------------------------------------------------------------------------------- 1 | unit Unit5; 2 | 3 | interface 4 | 5 | uses 6 | System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants, 7 | FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls, 8 | FMX.Controls.Presentation; 9 | 10 | type 11 | TFormMain = class(TForm) 12 | Panel27: TPanel; 13 | ButtonAuto: TButton; 14 | ButtonDisable: TButton; 15 | ButtonMica: TButton; 16 | ButtonAcrylic: TButton; 17 | ButtonTabbed: TButton; 18 | CheckBoxDarkMode: TCheckBox; 19 | procedure ButtonAutoClick(Sender: TObject); 20 | procedure ButtonDisableClick(Sender: TObject); 21 | procedure ButtonMicaClick(Sender: TObject); 22 | procedure ButtonAcrylicClick(Sender: TObject); 23 | procedure ButtonTabbedClick(Sender: TObject); 24 | procedure CheckBoxDarkModeChange(Sender: TObject); 25 | procedure FormCreate(Sender: TObject); 26 | private 27 | { Private declarations } 28 | public 29 | { Public declarations } 30 | end; 31 | 32 | var 33 | FormMain: TFormMain; 34 | 35 | implementation 36 | 37 | uses 38 | DelphiWindowStyle.FMX; 39 | 40 | {$R *.fmx} 41 | 42 | procedure TFormMain.ButtonAutoClick(Sender: TObject); 43 | begin 44 | Self.SetSystemBackdropType(TSystemBackdropType.DWMSBT_AUTO); 45 | end; 46 | 47 | procedure TFormMain.ButtonDisableClick(Sender: TObject); 48 | begin 49 | Self.SetSystemBackdropType(TSystemBackdropType.DWMSBT_DISABLE); 50 | end; 51 | 52 | procedure TFormMain.ButtonMicaClick(Sender: TObject); 53 | begin 54 | Self.SetSystemBackdropType(TSystemBackdropType.DWMSBT_MAINWINDOW); 55 | end; 56 | 57 | procedure TFormMain.ButtonAcrylicClick(Sender: TObject); 58 | begin 59 | Self.SetSystemBackdropType(TSystemBackdropType.DWMSBT_TRANSIENTWINDOW); 60 | end; 61 | 62 | procedure TFormMain.ButtonTabbedClick(Sender: TObject); 63 | begin 64 | Self.SetSystemBackdropType(TSystemBackdropType.DWMSBT_TABBEDWINDOW); 65 | end; 66 | 67 | procedure TFormMain.CheckBoxDarkModeChange(Sender: TObject); 68 | begin 69 | Self.SetWindowColorMode(CheckBoxDarkMode.IsChecked); 70 | end; 71 | 72 | procedure TFormMain.FormCreate(Sender: TObject); 73 | begin 74 | Self.SetExtendFrameIntoClientArea(TRect.Create(-1, -1, -1, -1)); 75 | Fill.Kind := TBrushKind.Solid; 76 | Fill.Color := TAlphaColors.Null; 77 | end; 78 | 79 | end. 80 | 81 | -------------------------------------------------------------------------------- /DemoVCL/Project52.dpr: -------------------------------------------------------------------------------- 1 | program Project52; 2 | 3 | uses 4 | Vcl.Forms, 5 | Unit6 in 'Unit6.pas' {Form6}, 6 | DelphiWindowStyle.Core.Win in '..\DelphiWindowStyle.Core.Win.pas', 7 | DelphiWindowStyle.Types in '..\DelphiWindowStyle.Types.pas', 8 | DelphiWindowStyle.VCL in '..\DelphiWindowStyle.VCL.pas'; 9 | 10 | {$R *.res} 11 | 12 | begin 13 | Application.Initialize; 14 | Application.MainFormOnTaskbar := True; 15 | Application.CreateForm(TForm6, Form6); 16 | Application.Run; 17 | end. 18 | -------------------------------------------------------------------------------- /DemoVCL/Project52.dproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {11725A87-24D0-4545-B143-E1F873A8C82F} 4 | 20.1 5 | VCL 6 | True 7 | Debug 8 | Win32 9 | Project52 10 | 3 11 | Application 12 | Project52.dpr 13 | 14 | 15 | true 16 | 17 | 18 | true 19 | Base 20 | true 21 | 22 | 23 | true 24 | Base 25 | true 26 | 27 | 28 | true 29 | Base 30 | true 31 | 32 | 33 | true 34 | Cfg_1 35 | true 36 | true 37 | 38 | 39 | true 40 | Cfg_1 41 | true 42 | true 43 | 44 | 45 | true 46 | Base 47 | true 48 | 49 | 50 | true 51 | Cfg_2 52 | true 53 | true 54 | 55 | 56 | true 57 | Cfg_2 58 | true 59 | true 60 | 61 | 62 | .\$(Platform)\$(Config) 63 | .\$(Platform)\$(Config) 64 | false 65 | false 66 | false 67 | false 68 | false 69 | System;Xml;Data;Datasnap;Web;Soap;Vcl;Vcl.Imaging;Vcl.Touch;Vcl.Samples;Vcl.Shell;$(DCC_Namespace) 70 | $(BDS)\bin\delphi_PROJECTICON.ico 71 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_44.png 72 | $(BDS)\bin\Artwork\Windows\UWP\delphi_UwpDefault_150.png 73 | Project52 74 | 75 | 76 | vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;Skia.Package.RTL;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;Skia.Package.FMX;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;OpenAIPackage;vclFireDAC;Gorilla3D_Delphi_12_1_0_Athens;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage) 77 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;Bde;$(DCC_Namespace) 78 | Debug 79 | true 80 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 81 | 1033 82 | $(BDS)\bin\default_app.manifest 83 | 84 | 85 | vclwinx;DataSnapServer;fmx;emshosting;vclie;DbxCommonDriver;bindengine;IndyIPCommon;VCLRESTComponents;DBXMSSQLDriver;FireDACCommonODBC;emsclient;FireDACCommonDriver;appanalytics;IndyProtocols;vclx;IndyIPClient;dbxcds;vcledge;bindcompvclwinx;FmxTeeUI;emsedge;bindcompfmx;DBXFirebirdDriver;inetdb;FireDACSqliteDriver;DbxClientDriver;FireDACASADriver;Tee;soapmidas;SVGIconImageListFMX;vclactnband;TeeUI;fmxFireDAC;dbexpress;FireDACInfxDriver;DBXMySQLDriver;VclSmp;inet;DataSnapCommon;vcltouch;fmxase;DBXOdbcDriver;dbrtl;FireDACDBXDriver;FireDACOracleDriver;fmxdae;TeeDB;FireDACMSAccDriver;CustomIPTransport;FireDACMSSQLDriver;DataSnapIndy10ServerTransport;DataSnapConnectors;vcldsnap;DBXInterBaseDriver;FireDACMongoDBDriver;IndySystem;FireDACTDataDriver;Skia.Package.VCL;vcldb;vclFireDAC;Gorilla3D_Delphi_12_1_0_Athens;bindcomp;FireDACCommon;DataSnapServerMidas;FireDACODBCDriver;emsserverresource;IndyCore;RESTBackendComponents;bindcompdbx;rtl;FireDACMySQLDriver;FireDACADSDriver;RESTComponents;DBXSqliteDriver;vcl;IndyIPServer;dsnapxml;dsnapcon;DataSnapClient;DataSnapProviderClient;adortl;DBXSybaseASEDriver;DBXDb2Driver;vclimg;DataSnapFireDAC;emsclientfiredac;FireDACPgDriver;FireDAC;FireDACDSDriver;inetdbxpress;xmlrtl;tethering;bindcompvcl;dsnap;CloudService;DBXSybaseASADriver;DBXOracleDriver;FireDACDb2Driver;DBXInformixDriver;fmxobj;bindcompvclsmp;DataSnapNativeClient;FMXTee;DatasnapConnectorsFreePascal;soaprtl;SVGIconImageList;soapserver;FireDACIBDriver;$(DCC_UsePackage) 86 | Winapi;System.Win;Data.Win;Datasnap.Win;Web.Win;Soap.Win;Xml.Win;$(DCC_Namespace) 87 | Debug 88 | true 89 | CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments= 90 | 1033 91 | $(BDS)\bin\default_app.manifest 92 | 93 | 94 | DEBUG;$(DCC_Define) 95 | true 96 | false 97 | true 98 | true 99 | true 100 | true 101 | true 102 | 103 | 104 | false 105 | PerMonitorV2 106 | 107 | 108 | PerMonitorV2 109 | 110 | 111 | false 112 | RELEASE;$(DCC_Define) 113 | 0 114 | 0 115 | 116 | 117 | PerMonitorV2 118 | 119 | 120 | PerMonitorV2 121 | 122 | 123 | 124 | MainSource 125 | 126 | 127 |
Form6
128 | dfm 129 |
130 | 131 | 132 | 133 | 134 | Base 135 | 136 | 137 | Cfg_1 138 | Base 139 | 140 | 141 | Cfg_2 142 | Base 143 | 144 |
145 | 146 | Delphi.Personality.12 147 | Application 148 | 149 | 150 | 151 | Project52.dpr 152 | 153 | 154 | 155 | 156 | 157 | Project52.exe 158 | true 159 | 160 | 161 | 162 | 163 | 1 164 | 165 | 166 | Contents\MacOS 167 | 1 168 | 169 | 170 | 0 171 | 172 | 173 | 174 | 175 | classes 176 | 64 177 | 178 | 179 | classes 180 | 64 181 | 182 | 183 | 184 | 185 | res\xml 186 | 1 187 | 188 | 189 | res\xml 190 | 1 191 | 192 | 193 | 194 | 195 | library\lib\armeabi 196 | 1 197 | 198 | 199 | library\lib\armeabi 200 | 1 201 | 202 | 203 | 204 | 205 | library\lib\armeabi-v7a 206 | 1 207 | 208 | 209 | 210 | 211 | library\lib\mips 212 | 1 213 | 214 | 215 | library\lib\mips 216 | 1 217 | 218 | 219 | 220 | 221 | library\lib\armeabi-v7a 222 | 1 223 | 224 | 225 | library\lib\arm64-v8a 226 | 1 227 | 228 | 229 | 230 | 231 | library\lib\armeabi-v7a 232 | 1 233 | 234 | 235 | 236 | 237 | res\drawable 238 | 1 239 | 240 | 241 | res\drawable 242 | 1 243 | 244 | 245 | 246 | 247 | res\drawable-anydpi-v21 248 | 1 249 | 250 | 251 | res\drawable-anydpi-v21 252 | 1 253 | 254 | 255 | 256 | 257 | res\values 258 | 1 259 | 260 | 261 | res\values 262 | 1 263 | 264 | 265 | 266 | 267 | res\values-v21 268 | 1 269 | 270 | 271 | res\values-v21 272 | 1 273 | 274 | 275 | 276 | 277 | res\values-v31 278 | 1 279 | 280 | 281 | res\values-v31 282 | 1 283 | 284 | 285 | 286 | 287 | res\drawable-anydpi-v26 288 | 1 289 | 290 | 291 | res\drawable-anydpi-v26 292 | 1 293 | 294 | 295 | 296 | 297 | res\drawable 298 | 1 299 | 300 | 301 | res\drawable 302 | 1 303 | 304 | 305 | 306 | 307 | res\drawable 308 | 1 309 | 310 | 311 | res\drawable 312 | 1 313 | 314 | 315 | 316 | 317 | res\drawable 318 | 1 319 | 320 | 321 | res\drawable 322 | 1 323 | 324 | 325 | 326 | 327 | res\drawable-anydpi-v33 328 | 1 329 | 330 | 331 | res\drawable-anydpi-v33 332 | 1 333 | 334 | 335 | 336 | 337 | res\values 338 | 1 339 | 340 | 341 | res\values 342 | 1 343 | 344 | 345 | 346 | 347 | res\values-night-v21 348 | 1 349 | 350 | 351 | res\values-night-v21 352 | 1 353 | 354 | 355 | 356 | 357 | res\drawable 358 | 1 359 | 360 | 361 | res\drawable 362 | 1 363 | 364 | 365 | 366 | 367 | res\drawable-xxhdpi 368 | 1 369 | 370 | 371 | res\drawable-xxhdpi 372 | 1 373 | 374 | 375 | 376 | 377 | res\drawable-xxxhdpi 378 | 1 379 | 380 | 381 | res\drawable-xxxhdpi 382 | 1 383 | 384 | 385 | 386 | 387 | res\drawable-ldpi 388 | 1 389 | 390 | 391 | res\drawable-ldpi 392 | 1 393 | 394 | 395 | 396 | 397 | res\drawable-mdpi 398 | 1 399 | 400 | 401 | res\drawable-mdpi 402 | 1 403 | 404 | 405 | 406 | 407 | res\drawable-hdpi 408 | 1 409 | 410 | 411 | res\drawable-hdpi 412 | 1 413 | 414 | 415 | 416 | 417 | res\drawable-xhdpi 418 | 1 419 | 420 | 421 | res\drawable-xhdpi 422 | 1 423 | 424 | 425 | 426 | 427 | res\drawable-mdpi 428 | 1 429 | 430 | 431 | res\drawable-mdpi 432 | 1 433 | 434 | 435 | 436 | 437 | res\drawable-hdpi 438 | 1 439 | 440 | 441 | res\drawable-hdpi 442 | 1 443 | 444 | 445 | 446 | 447 | res\drawable-xhdpi 448 | 1 449 | 450 | 451 | res\drawable-xhdpi 452 | 1 453 | 454 | 455 | 456 | 457 | res\drawable-xxhdpi 458 | 1 459 | 460 | 461 | res\drawable-xxhdpi 462 | 1 463 | 464 | 465 | 466 | 467 | res\drawable-xxxhdpi 468 | 1 469 | 470 | 471 | res\drawable-xxxhdpi 472 | 1 473 | 474 | 475 | 476 | 477 | res\drawable-small 478 | 1 479 | 480 | 481 | res\drawable-small 482 | 1 483 | 484 | 485 | 486 | 487 | res\drawable-normal 488 | 1 489 | 490 | 491 | res\drawable-normal 492 | 1 493 | 494 | 495 | 496 | 497 | res\drawable-large 498 | 1 499 | 500 | 501 | res\drawable-large 502 | 1 503 | 504 | 505 | 506 | 507 | res\drawable-xlarge 508 | 1 509 | 510 | 511 | res\drawable-xlarge 512 | 1 513 | 514 | 515 | 516 | 517 | res\values 518 | 1 519 | 520 | 521 | res\values 522 | 1 523 | 524 | 525 | 526 | 527 | res\drawable-anydpi-v24 528 | 1 529 | 530 | 531 | res\drawable-anydpi-v24 532 | 1 533 | 534 | 535 | 536 | 537 | res\drawable 538 | 1 539 | 540 | 541 | res\drawable 542 | 1 543 | 544 | 545 | 546 | 547 | res\drawable-night-anydpi-v21 548 | 1 549 | 550 | 551 | res\drawable-night-anydpi-v21 552 | 1 553 | 554 | 555 | 556 | 557 | res\drawable-anydpi-v31 558 | 1 559 | 560 | 561 | res\drawable-anydpi-v31 562 | 1 563 | 564 | 565 | 566 | 567 | res\drawable-night-anydpi-v31 568 | 1 569 | 570 | 571 | res\drawable-night-anydpi-v31 572 | 1 573 | 574 | 575 | 576 | 577 | 1 578 | 579 | 580 | Contents\MacOS 581 | 1 582 | 583 | 584 | 0 585 | 586 | 587 | 588 | 589 | Contents\MacOS 590 | 1 591 | .framework 592 | 593 | 594 | Contents\MacOS 595 | 1 596 | .framework 597 | 598 | 599 | Contents\MacOS 600 | 1 601 | .framework 602 | 603 | 604 | 0 605 | 606 | 607 | 608 | 609 | 1 610 | .dylib 611 | 612 | 613 | 1 614 | .dylib 615 | 616 | 617 | 1 618 | .dylib 619 | 620 | 621 | Contents\MacOS 622 | 1 623 | .dylib 624 | 625 | 626 | Contents\MacOS 627 | 1 628 | .dylib 629 | 630 | 631 | Contents\MacOS 632 | 1 633 | .dylib 634 | 635 | 636 | 0 637 | .dll;.bpl 638 | 639 | 640 | 641 | 642 | 1 643 | .dylib 644 | 645 | 646 | 1 647 | .dylib 648 | 649 | 650 | 1 651 | .dylib 652 | 653 | 654 | Contents\MacOS 655 | 1 656 | .dylib 657 | 658 | 659 | Contents\MacOS 660 | 1 661 | .dylib 662 | 663 | 664 | Contents\MacOS 665 | 1 666 | .dylib 667 | 668 | 669 | 0 670 | .bpl 671 | 672 | 673 | 674 | 675 | 0 676 | 677 | 678 | 0 679 | 680 | 681 | 0 682 | 683 | 684 | 0 685 | 686 | 687 | 0 688 | 689 | 690 | Contents\Resources\StartUp\ 691 | 0 692 | 693 | 694 | Contents\Resources\StartUp\ 695 | 0 696 | 697 | 698 | Contents\Resources\StartUp\ 699 | 0 700 | 701 | 702 | 0 703 | 704 | 705 | 706 | 707 | 1 708 | 709 | 710 | 1 711 | 712 | 713 | 714 | 715 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 716 | 1 717 | 718 | 719 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 720 | 1 721 | 722 | 723 | 724 | 725 | ..\ 726 | 1 727 | 728 | 729 | ..\ 730 | 1 731 | 732 | 733 | ..\ 734 | 1 735 | 736 | 737 | 738 | 739 | Contents 740 | 1 741 | 742 | 743 | Contents 744 | 1 745 | 746 | 747 | Contents 748 | 1 749 | 750 | 751 | 752 | 753 | Contents\Resources 754 | 1 755 | 756 | 757 | Contents\Resources 758 | 1 759 | 760 | 761 | Contents\Resources 762 | 1 763 | 764 | 765 | 766 | 767 | library\lib\armeabi-v7a 768 | 1 769 | 770 | 771 | library\lib\arm64-v8a 772 | 1 773 | 774 | 775 | 1 776 | 777 | 778 | 1 779 | 780 | 781 | 1 782 | 783 | 784 | 1 785 | 786 | 787 | Contents\MacOS 788 | 1 789 | 790 | 791 | Contents\MacOS 792 | 1 793 | 794 | 795 | Contents\MacOS 796 | 1 797 | 798 | 799 | 0 800 | 801 | 802 | 803 | 804 | library\lib\armeabi-v7a 805 | 1 806 | 807 | 808 | 809 | 810 | 1 811 | 812 | 813 | 1 814 | 815 | 816 | 1 817 | 818 | 819 | 820 | 821 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 822 | 1 823 | 824 | 825 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 826 | 1 827 | 828 | 829 | ..\$(PROJECTNAME).app.dSYM\Contents\Resources\DWARF 830 | 1 831 | 832 | 833 | 834 | 835 | ..\ 836 | 1 837 | 838 | 839 | ..\ 840 | 1 841 | 842 | 843 | ..\ 844 | 1 845 | 846 | 847 | 848 | 849 | 1 850 | 851 | 852 | 1 853 | 854 | 855 | 1 856 | 857 | 858 | 859 | 860 | ..\$(PROJECTNAME).launchscreen 861 | 64 862 | 863 | 864 | ..\$(PROJECTNAME).launchscreen 865 | 64 866 | 867 | 868 | 869 | 870 | 1 871 | 872 | 873 | 1 874 | 875 | 876 | 1 877 | 878 | 879 | 880 | 881 | Assets 882 | 1 883 | 884 | 885 | Assets 886 | 1 887 | 888 | 889 | 890 | 891 | Assets 892 | 1 893 | 894 | 895 | Assets 896 | 1 897 | 898 | 899 | 900 | 901 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 902 | 1 903 | 904 | 905 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 906 | 1 907 | 908 | 909 | 910 | 911 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 912 | 1 913 | 914 | 915 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 916 | 1 917 | 918 | 919 | 920 | 921 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 922 | 1 923 | 924 | 925 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 926 | 1 927 | 928 | 929 | 930 | 931 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 932 | 1 933 | 934 | 935 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 936 | 1 937 | 938 | 939 | 940 | 941 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 942 | 1 943 | 944 | 945 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 946 | 1 947 | 948 | 949 | 950 | 951 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 952 | 1 953 | 954 | 955 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 956 | 1 957 | 958 | 959 | 960 | 961 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 962 | 1 963 | 964 | 965 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 966 | 1 967 | 968 | 969 | 970 | 971 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 972 | 1 973 | 974 | 975 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 976 | 1 977 | 978 | 979 | 980 | 981 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 982 | 1 983 | 984 | 985 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 986 | 1 987 | 988 | 989 | 990 | 991 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 992 | 1 993 | 994 | 995 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 996 | 1 997 | 998 | 999 | 1000 | 1001 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1002 | 1 1003 | 1004 | 1005 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1006 | 1 1007 | 1008 | 1009 | 1010 | 1011 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1012 | 1 1013 | 1014 | 1015 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1016 | 1 1017 | 1018 | 1019 | 1020 | 1021 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1022 | 1 1023 | 1024 | 1025 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1026 | 1 1027 | 1028 | 1029 | 1030 | 1031 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1032 | 1 1033 | 1034 | 1035 | ..\$(PROJECTNAME).launchscreen\Assets\LaunchScreenImage.imageset 1036 | 1 1037 | 1038 | 1039 | 1040 | 1041 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1042 | 1 1043 | 1044 | 1045 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1046 | 1 1047 | 1048 | 1049 | 1050 | 1051 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1052 | 1 1053 | 1054 | 1055 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1056 | 1 1057 | 1058 | 1059 | 1060 | 1061 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1062 | 1 1063 | 1064 | 1065 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1066 | 1 1067 | 1068 | 1069 | 1070 | 1071 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1072 | 1 1073 | 1074 | 1075 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1076 | 1 1077 | 1078 | 1079 | 1080 | 1081 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1082 | 1 1083 | 1084 | 1085 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1086 | 1 1087 | 1088 | 1089 | 1090 | 1091 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1092 | 1 1093 | 1094 | 1095 | ..\$(PROJECTNAME).launchscreen\Assets\AppIcon.appiconset 1096 | 1 1097 | 1098 | 1099 | 1100 | 1101 | 1102 | 1103 | 1104 | 1105 | 1106 | 1107 | 1108 | 1109 | 1110 | 1111 | 1112 | 1113 | True 1114 | True 1115 | 1116 | 1117 | 12 1118 | 1119 | 1120 | 1121 | 1122 |
1123 | -------------------------------------------------------------------------------- /DemoVCL/Project52.res: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/DemoVCL/Project52.res -------------------------------------------------------------------------------- /DemoVCL/Unit6.dfm: -------------------------------------------------------------------------------- 1 | object Form6: TForm6 2 | Left = 0 3 | Top = 0 4 | AlphaBlend = True 5 | Caption = 'Form6' 6 | ClientHeight = 441 7 | ClientWidth = 624 8 | Color = 4079166 9 | Font.Charset = DEFAULT_CHARSET 10 | Font.Color = clWindowText 11 | Font.Height = -12 12 | Font.Name = 'Segoe UI' 13 | Font.Style = [] 14 | GlassFrame.Enabled = True 15 | GlassFrame.SheetOfGlass = True 16 | OnCreate = FormCreate 17 | TextHeight = 15 18 | object ButtonAuto: TButton 19 | Left = 112 20 | Top = 184 21 | Width = 75 22 | Height = 25 23 | Caption = 'Auto' 24 | TabOrder = 0 25 | OnClick = ButtonAutoClick 26 | end 27 | object ButtonDisable: TButton 28 | Left = 193 29 | Top = 184 30 | Width = 75 31 | Height = 25 32 | Caption = 'Disable' 33 | TabOrder = 1 34 | OnClick = ButtonDisableClick 35 | end 36 | object ButtonMica: TButton 37 | Left = 274 38 | Top = 184 39 | Width = 75 40 | Height = 25 41 | Caption = 'Mica' 42 | TabOrder = 2 43 | OnClick = ButtonMicaClick 44 | end 45 | object ButtonAcrylic: TButton 46 | Left = 355 47 | Top = 184 48 | Width = 75 49 | Height = 25 50 | Caption = 'Acrylic' 51 | TabOrder = 3 52 | OnClick = ButtonAcrylicClick 53 | end 54 | object ButtonTabbed: TButton 55 | Left = 436 56 | Top = 184 57 | Width = 75 58 | Height = 25 59 | Caption = 'Tabbed' 60 | TabOrder = 4 61 | OnClick = ButtonTabbedClick 62 | end 63 | object CheckBoxDarkMode: TCheckBox 64 | Left = 112 65 | Top = 215 66 | Width = 97 67 | Height = 17 68 | Caption = 'DarkMode' 69 | TabOrder = 5 70 | OnClick = CheckBoxDarkModeClick 71 | end 72 | end 73 | -------------------------------------------------------------------------------- /DemoVCL/Unit6.pas: -------------------------------------------------------------------------------- 1 | unit Unit6; 2 | 3 | interface 4 | 5 | uses 6 | Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, 7 | Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; 8 | 9 | type 10 | TForm6 = class(TForm) 11 | ButtonAuto: TButton; 12 | ButtonDisable: TButton; 13 | ButtonMica: TButton; 14 | ButtonAcrylic: TButton; 15 | ButtonTabbed: TButton; 16 | CheckBoxDarkMode: TCheckBox; 17 | procedure FormCreate(Sender: TObject); 18 | procedure ButtonAutoClick(Sender: TObject); 19 | procedure ButtonDisableClick(Sender: TObject); 20 | procedure ButtonMicaClick(Sender: TObject); 21 | procedure ButtonAcrylicClick(Sender: TObject); 22 | procedure ButtonTabbedClick(Sender: TObject); 23 | procedure CheckBoxDarkModeClick(Sender: TObject); 24 | protected 25 | procedure CreateParams(var Params: TCreateParams); override; 26 | public 27 | { Public declarations } 28 | end; 29 | 30 | var 31 | Form6: TForm6; 32 | 33 | implementation 34 | uses DelphiWindowStyle.VCL; 35 | 36 | {$R *.dfm} 37 | 38 | procedure TForm6.CreateParams(var Params: TCreateParams); 39 | begin 40 | inherited; 41 | Params.ExStyle := Params.ExStyle or WS_EX_OVERLAPPEDWINDOW or WS_EX_LAYERED; 42 | end; 43 | 44 | procedure TForm6.ButtonAcrylicClick(Sender: TObject); 45 | begin 46 | SetSystemBackdropType(TSystemBackdropType.DWMSBT_TRANSIENTWINDOW); 47 | end; 48 | 49 | procedure TForm6.ButtonAutoClick(Sender: TObject); 50 | begin 51 | SetSystemBackdropType(TSystemBackdropType.DWMSBT_AUTO); 52 | end; 53 | 54 | procedure TForm6.ButtonDisableClick(Sender: TObject); 55 | begin 56 | SetSystemBackdropType(TSystemBackdropType.DWMSBT_DISABLE); 57 | end; 58 | 59 | procedure TForm6.ButtonMicaClick(Sender: TObject); 60 | begin 61 | SetSystemBackdropType(TSystemBackdropType.DWMSBT_MAINWINDOW); 62 | end; 63 | 64 | procedure TForm6.ButtonTabbedClick(Sender: TObject); 65 | begin 66 | SetSystemBackdropType(TSystemBackdropType.DWMSBT_TABBEDWINDOW); 67 | end; 68 | 69 | procedure TForm6.CheckBoxDarkModeClick(Sender: TObject); 70 | begin 71 | SetWindowColorMode(CheckBoxDarkMode.Checked); 72 | end; 73 | 74 | procedure TForm6.FormCreate(Sender: TObject); 75 | begin 76 | //SetSystemBackdropType(TSystemBackdropType.DWMSBT_MAINWINDOW); 77 | //SetExtendFrameIntoClientArea(TRect.Create(-1, -1, -1, -1)); 78 | //SetWindowColorMode(True); 79 | end; 80 | 81 | end. 82 | -------------------------------------------------------------------------------- /Demos.groupproj: -------------------------------------------------------------------------------- 1 |  2 | 3 | {41FCCAA0-2BB7-4D85-9F3F-F665FDE78C7A} 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | Default.Personality.12 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 HemulGM 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /Media/2024-06-12 (1).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/Media/2024-06-12 (1).png -------------------------------------------------------------------------------- /Media/2024-06-12 (3).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/Media/2024-06-12 (3).png -------------------------------------------------------------------------------- /Media/2024-06-12 (4).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/Media/2024-06-12 (4).png -------------------------------------------------------------------------------- /Media/2024-06-12 (5).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/Media/2024-06-12 (5).png -------------------------------------------------------------------------------- /Media/2024-06-12 (6).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/Media/2024-06-12 (6).png -------------------------------------------------------------------------------- /Media/2024-06-12 (7).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/Media/2024-06-12 (7).png -------------------------------------------------------------------------------- /Media/2024-06-12 (8).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/Media/2024-06-12 (8).png -------------------------------------------------------------------------------- /Media/2024-06-12 (9).png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/HemulGM/DelphiWindowStyle/1fbd0c53676c1dcbcdd12fb692684bd74f53e0ce/Media/2024-06-12 (9).png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # FMXWindowStyle 2 | Window stylization for FMX and VCL 3 | 4 | The ability to stylize the window and background with modern WinAPI (WinUI 3). Mica, Acrylic, MicaAlt 5 | 6 | You can control both the background of the application and the frame. Change the rounding of the window, add and change the color of the window stroke, change the color and text of the window header. You can also apply a dark mode without changing the window of the window of the window (only a dark frame) 7 | 8 | ```pascal 9 | TFormHelper = class helper for TForm 10 | function SetSystemBackdropType(const Value: TSystemBackdropType): Boolean; 11 | function SetExtendFrameIntoClientArea(const Value: TRect): Boolean; 12 | function SetWindowCaptionColor(const Value: TColor): Boolean; 13 | function SetWindowTextColor(const Value: TColor): Boolean; 14 | function SetWindowBorderColor(const Value: TColor): Boolean; 15 | function SetWindowCorner(const Value: TWindowCornerPreference): Boolean; 16 | function SetWindowColorModeAsSystem: Boolean; 17 | function SetWindowColorMode(const IsDark: Boolean): Boolean; 18 | // 19 | procedure RefreshTitleBarThemeColor; 20 | function IsHighContrast: Boolean; 21 | function SystemIsDarkMode: Boolean; 22 | function IsDarkModeAllowedForWindow: Boolean; 23 | function GetIsImmersiveColorUsingHighContrast(Mode: TImmersiveHCCacheMode): Boolean; 24 | function ShouldAppsUseDarkMode: Boolean; 25 | end; 26 | ``` 27 | 28 | # Light 29 | 30 | ## Auto 31 | 32 | ![Preview](https://github.com/HemulGM/DelphiWindowStyle/blob/main/Media/2024-06-12%20(1).png?raw=true) 33 | 34 | ## Mica 35 | 36 | ![Preview](https://github.com/HemulGM/DelphiWindowStyle/blob/main/Media/2024-06-12%20(3).png?raw=true) 37 | 38 | ## Acrilyc 39 | 40 | ![Preview](https://github.com/HemulGM/DelphiWindowStyle/blob/main/Media/2024-06-12%20(4).png?raw=true) 41 | 42 | ## Tabbed 43 | 44 | ![Preview](https://github.com/HemulGM/DelphiWindowStyle/blob/main/Media/2024-06-12%20(5).png?raw=true) 45 | 46 | # Dark 47 | 48 | ## Auto 49 | 50 | ![Preview](https://github.com/HemulGM/DelphiWindowStyle/blob/main/Media/2024-06-12%20(9).png?raw=true) 51 | 52 | ## Mica 53 | 54 | ![Preview](https://github.com/HemulGM/DelphiWindowStyle/blob/main/Media/2024-06-12%20(8).png?raw=true) 55 | 56 | ## Acrilyc 57 | 58 | ![Preview](https://github.com/HemulGM/DelphiWindowStyle/blob/main/Media/2024-06-12%20(7).png?raw=true) 59 | 60 | ## Tabbed 61 | 62 | ![Preview](https://github.com/HemulGM/DelphiWindowStyle/blob/main/Media/2024-06-12%20(6).png?raw=true) 63 | --------------------------------------------------------------------------------