Autor Téma: Zavírání okna escapem  (Přečteno 434 krát)

Offline Trooper68

  • Nováček
  • *
  • Příspěvků: 6
  • Karma: 0
    • Verze Delphi: XE 10.3
Zavírání okna escapem
« kdy: 14-03-2021, 23:08:39 »
Dobrý den, potřeboval bych poradit (dělám jen takové to "domácí programování") :
Z hlavního formu otvírám přes button form2.show (form2 je vytvořen v návrháři - nevytvářím ho za běhu), ve kterém pomocí OnKeyDown odchytávám kód 27 - escape a zavírám okno příkazem close.
Mám v tomto formu nastaveno Keypreview abych odchytával klávesnici ikdyž má focus jiná komponenta. Otevřu, zavřu escape, otevřu, zavřu escape = vše je ok.
Pokud ale dám na form2 komponentu webbrowser, kde pomocí navigate zobrazím nějaký obsah a okno otevřu, tak se mi pomocí escape podaří zavřít jen na poprvé. Při znovuotevření form2 už to klávesnici neodchytává... ??? Zavírání stále funguje, pokud v browseru nenechám nic zobrazit. Umí mi někdo poradit, jak to zprovoznit i s obsahem ve webbrowseru ?
Děkuji

Offline cadsky

  • Nováček
  • *
  • Příspěvků: 17
  • Karma: 1
    • Verze Delphi: rio
Re:Zavírání okna escapem
« Odpověď #1 kdy: 15-03-2021, 08:24:54 »
Zkus odchytávat na úrovni
procedure CMDialogKey(var Message: TCMDialogKey); message CM_DIALOGKEY;
nebo
použít komponentu ApplicationEvents, vlastnost OnShortCut

Offline Trooper68

  • Nováček
  • *
  • Příspěvků: 6
  • Karma: 0
    • Verze Delphi: XE 10.3
Re:Zavírání okna escapem
« Odpověď #2 kdy: 15-03-2021, 09:19:27 »
Tak odchytávání CMDialogKey fuguje!  Děkuji!

Offline František

  • Guru
  • *****
  • Příspěvků: 636
  • Karma: 6
    • Verze Delphi: primárne v XE5, občas 10.2.3 comunity
Re:Zavírání okna escapem
« Odpověď #3 kdy: 16-03-2021, 01:37:33 »
alebo zapnúť KeyPreview na konkrétnom forme

Offline Jan Fiala

  • Plnoletý
  • ***
  • Příspěvků: 185
  • Karma: 2
    • Verze Delphi: 10.4.1
    • PSPad editor
Re:Zavírání okna escapem
« Odpověď #4 kdy: 16-03-2021, 12:04:29 »
Nebo pokud se pouziva ActionList, tak akci priradit ESC
Nebo pokud se pouziva MainMenu, tak priradit ESC pro item, ktera ukoncuje okno
atd.
Moznosti je spousta

Offline Trooper68

  • Nováček
  • *
  • Příspěvků: 6
  • Karma: 0
    • Verze Delphi: XE 10.3
Re:Zavírání okna escapem
« Odpověď #5 kdy: 17-03-2021, 13:32:56 »
František: Jak jsem psal - Keypreview jsem měl zaplé.

A ať neumřu úplně blbej, proč to bez zobrazení obsahu ve webbrowseru funguje a s obsahem ne ?

Offline cadsky

  • Nováček
  • *
  • Příspěvků: 17
  • Karma: 1
    • Verze Delphi: rio
Re:Zavírání okna escapem
« Odpověď #6 kdy: 18-03-2021, 15:22:21 »
WebBrowser pravděpodobně odchytne klávesu pokud má nějaký obsah.