Forum Delphi.cz

Delphi => Obecné => Téma založeno: Stanislav Hruška 17-04-2019, 09:22:38

Název: Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Stanislav Hruška 17-04-2019, 09:22:38
Pri prvom stlačení ALT v edit komponente dostanem daný oznam. Aj to nie vždy.
Mám použitú jedinú udalosť OnKeyPress, kde sa samozrejme ani nedostanem. Po uzatvorení okna s oznamom beží program bez problémov. Podľa všetkého sa už ten problém neobjavuje. Neviem čo je tomu príčina.
Všimol som si, náhodne, že sa focus prepne na hlavné menu (TAdvMainMenu) formulára. Všetko je tam Disable, ale focus to prijme. To je ovšem nežiaduce a neviem to potlačiť.
Ako sa tie problémy dajú vyriešiť?
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Stanislav Hruška 17-04-2019, 09:30:08
Dodávam, že v menu nemám definovaný žiaden hotkey
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Radek Červinka 17-04-2019, 10:38:17
Zapni si ladici informace, a nastav uses debug dcu v options a ukaz call stack
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Stanislav Hruška 17-04-2019, 11:00:28
Akosi to neviem urobiť. Viď obrázok.
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Radek Červinka 17-04-2019, 12:52:40
viz screenshot, project Options ne Options, sorry za neuplny navod
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Stanislav Hruška 17-04-2019, 15:01:03
Aj mi došlo, že máš na mysli asi toto. Mám to tak nastavené. Len ako ukážem call stack?
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Radek Červinka 17-04-2019, 22:26:50
Aj mi došlo, že máš na mysli asi toto. Mám to tak nastavené. Len ako ukážem call stack?

při vyjímce das break, nebo kdykoliv kdyz krokujes program, a vlevo je okno call stack - jinak pres debug windows - call stack
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Delfin 17-04-2019, 23:11:17
Neznam podrobnosti, ale pokud me pamet neklame (hafo davno), slo u TMS o ignoraci rozliseni kontextu zpravy WM_SYSKEYDOWN (kdy si TMS komponenta edit boxu nastavovala v jiste konstelaci formulare sama sobe focus jenz mit v dane dobe nemohla). Ale to uz je hodne davno a dost mozna se pletu.

Jinak ono to zruseni focusu menu baru asi nebude az take lahke (z pohledu cisteho reseni)...
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Stanislav Hruška 18-04-2019, 07:05:25
Citace
slo u TMS o ignoraci rozliseni kontextu zpravy WM_SYSKEYDOWN (kdy si TMS komponenta edit boxu nastavovala v jiste konstelaci formulare sama sobe focus jenz mit v dane dobe nemohla)
Medzitým som zistil, že pracujem s iným objektom než mám. Len sa mi ešte nepodarilo zistiť prečo sa mení. Ale už aspoň viem kde sa to deje.
Citace
Jinak ono to zruseni focusu menu baru asi nebude az take lahke (z pohledu cisteho reseni)...
Ak sa mi nebude dariť, tak to TMSMainMenu v najhoršom prípade vymením za niečo iné.
Mňa najviac prekvapuje, prečo program vôbec reaguje na stlačenie "ALT" ::)
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: pf1957 18-04-2019, 08:10:23
Mňa najviac prekvapuje, prečo program vôbec reaguje na stlačenie "ALT" ::)
No protoze je to uz docela dlouho standard, jak ovladat program z klavesnice bez mysi. V drevnich dobach se do main menu pristupovalo pres ruzne variace na F10, dodnes stejne jako Alt funguje Ctrl+F10 a Shift+F10 na pop-up menu
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Stanislav Hruška 19-04-2019, 08:16:00
Ja som si myslel, že udalosť nastane až po zadaní celej skratky ALT + niečo. Nielen ALT.
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Radek Červinka 19-04-2019, 17:48:50
Ja som si myslel, že udalosť nastane až po zadaní celej skratky ALT + niečo. Nielen ALT.

kdyz zmacknes ALT, tak se zobrazi akceleratory, tj. podtzitka
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Delfin 19-04-2019, 20:13:13
Ja som si myslel, že udalosť nastane až po zadaní celej skratky ALT + niečo. Nielen ALT.

To by slo o klavesovou zkratku (Menu Shortcut Keys (https://docs.microsoft.com/en-us/windows/desktop/menurc/about-menus#menu-shortcut-keys)). Menu vsak (jak jiz bylo zmineno) se daji ovladat jen pomoci klavesnice (navigace kurzorovymi klavesami) a tzv. access keys (Menu Access Keys (https://docs.microsoft.com/en-us/windows/desktop/menurc/about-menus#menu-access-keys)).

Predani focus menu baru pripadne menu okna (systemovemu menu) ma tedy smysl. To, ze se predava focus menu baru, kde jsou vsechny polozky disablovane je chyba UX a odstranit ji cistym zpusobem nelze.
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Delfin 19-04-2019, 22:27:19
kdyz zmacknes ALT, tak se zobrazi akceleratory, tj. podtzitka

Akcelerator je v terminech MS klavesova zkratka (Keyboard Accelerators (https://docs.microsoft.com/en-us/windows/desktop/menurc/keyboard-accelerators)).
Název: Re:Pri stlačení "ALT" - Cannot focus a disabled or invisible window
Přispěvatel: Delfin 21-04-2019, 03:51:10
Tedy pro sjednoceni nazvoslovi (cesky uz pomalu neumim, tak me prosim omluvte pokud je jiz v minulosti nekdo ustanovil jinak):

- klavesova zkratka - vzhledem k menu jde o tzv. shortcut key (https://docs.microsoft.com/en-us/windows/desktop/menurc/about-menus#menu-shortcut-keys), nicmene ke klavesove zkratce (ve Windows) neni treba menu; staci tzv. keyboard accelerator (https://docs.microsoft.com/en-us/windows/desktop/menurc/about-keyboard-accelerators) (i pro jine komponenty)
- pristupova klavesa - jde o menu access (https://docs.microsoft.com/en-us/windows/desktop/menurc/about-menus#menu-access-keys) klavesy, jenz je mozne vyuzit k navigaci menu, jenz funguji v pripade kdy ma menu focus a existuji jen v pripade vyvolani menu (navigacni klavesy jsou vychozim zpusobem zvyrazneny jako podtrzena pismena polozek menu uvozenych znakem &)

Graficky pak v menu (jsem ted liny kreslit):

pristupova klavesa "M"   ↓ klavesova zkratka CTRL+M
------------------------------------------------------
Menu item                   CTRL+M
------------------------------------------------------