Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   TStyleManager + Hotkey (https://www.delphipraxis.net/207804-tstylemanager-hotkey.html)

UliBru 5. Mai 2021 09:35

Delphi-Version: 10.1 Berlin

TStyleManager + Hotkey
 
Ich verwende im Program Hotkeys, z.B. Shift+Alt+Up oder Shift+Alt+Down. Das funktioniert soweit.
Wenn ich aber nun z.B. per StyleManager die Oberfläche umschalte, z.B.
Delphi-Quellcode:
TStyleManager.TrySetStyle('Windows10 Dark');
dann funktionieren die Hotkeys nicht mehr.
Kennt da jemand die Ursache oder gar eine Lösung?

Grüsse
Uli

UliBru 7. Mai 2021 10:13

AW: TStyleManager + Hotkey
 
Mmh, mir scheint dass Stylemanager bzw. Hotkeys doch eher selten verwendet werden und noch weniger gemeinsam.
Ein einzige Diskussion habe ich noch gefunden mit https://stackoverflow.com/questions/...-inconsistency. Aber die dort gezeigte Lösung hilft mir nicht wirklich, zumindest verstehe ich sie nicht.

Bin ich wirklich der Einzige mit diesem Problem?

Grüsse
Uli

Gausi 7. Mai 2021 11:18

AW: TStyleManager + Hotkey
 
Meinst du so globale Hotkeys, die du per RegisterHotkey registrierst? Die werden beim Wechsel des VCL-Styles alle ungültig, da dafür alle Forms neu erstellt werden müssen, und dadurch die Handles ungültig werden.

D.h. du müsstest vor dem Wechsel des Styles UnRegisterHotkey aufrufen, und danach wieder neu RegisterHotkey.

UliBru 7. Mai 2021 12:02

AW: TStyleManager + Hotkey
 
Danke für den Tip, es klappt aber nicht.
Leider hilft es nicht einfach vorher UnRegisterHotkey und danach wieder RegisterHotkey auszuführen.

Und an das Patchen von z.B. (oder ähnlich Verantwortlichem)
Delphi-Quellcode:
procedure TFormStyleHook.CMDialogChar(var Message: TWMKey);
begin
  if (FMainMenuBarHook <> nil) and
     (KeyDataToShiftState(Message.KeyData) = [ssAlt]) and
     FMainMenuBarHook.CheckHotKeyItem(Message.CharCode) then
  begin
    Message.Result := 1;
    Handled := True;
  end;
end;
in VCL.Themes trau ich mich ran, dafür bin ich zu unerfahren.


:(
Grüsse
Uli


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:49 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz