├── .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 |
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 |
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 | .png?raw=true)
33 |
34 | ## Mica
35 |
36 | .png?raw=true)
37 |
38 | ## Acrilyc
39 |
40 | .png?raw=true)
41 |
42 | ## Tabbed
43 |
44 | .png?raw=true)
45 |
46 | # Dark
47 |
48 | ## Auto
49 |
50 | .png?raw=true)
51 |
52 | ## Mica
53 |
54 | .png?raw=true)
55 |
56 | ## Acrilyc
57 |
58 | .png?raw=true)
59 |
60 | ## Tabbed
61 |
62 | .png?raw=true)
63 |
--------------------------------------------------------------------------------