Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem Aktivace ovládacího prvku (GotFocus) - jak zjistit, zda k události došlo od klávesnice nebo myši

Potřebuji (konkrétně ve FoxPro) zjistit, zda ovládací prvek získal focus od klávesnice (šipka, tabulátor) nebo zda byl vybrán myší (místo GotFocus by se případně dala využít ještě událost When). Je to prkotina, ale už se s tím drbu druhej den - dokaže někdo poradit? Dík

Předmět Autor Datum
Obavam se, ze na urovni udalosti Focus to nezjistis. Zkus si zapamatovat, zda jsi predtim stiskl kla…
Jan Fiala 09.01.2007 12:05
Jan Fiala
Pro Foxku mě napadá jedině krkolomné řešení. V MouseDown Event udělat třeba: ThisForm.CimSeSemVlezl…
Rce 09.01.2007 12:22
Rce
A napadlo ta ze focus moze vzniknut aj inac? Napr sa zavrie ina aplikacia na popredi a focus dostane… poslední
MM.. 09.01.2007 13:50
MM..

Pro Foxku mě napadá jedině krkolomné řešení. V MouseDown Event udělat třeba:

ThisForm.CimSeSemVlezlo = 1

V KeyPress Event:

ThisForm.CimSeSemVlezlo = 2

A v GotFocus Event to testovat:

if ThisForm.CimSeSemVlezlo = 1
   ...vlezlo to tam myší
else
   ...vlezlo se tam klávesou
endif

Avšak nemám už Foxku nainstalovanou, tak si nejsem jistý, jestli náhodou GotFocus nevypukne dřív, než MouseDown nebo KeyPress. Pak bych teda do MouseDown a KeyPress doplnil volání nějaké společné metody, co by to dokončila až tady, místo v GotFocus.

V C nebo Delphi by asi šlo jednoduše odlovit zprávu pro ovládací prvek.

A napadlo ta ze focus moze vzniknut aj inac? Napr sa zavrie ina aplikacia na popredi a focus dostane aplikacia (FoxPro) na pozadi apod. Ak chces testovat mys alebo klavesnicu tak sa to robi v prislusnych eventoch pre mys alebo klavesnicu. Ak sa ma nieco urobit ked prvok dostane focus tak to nemoze zavisiet od priciny focusu, ptz ten focus to moze dostat v multitaskingovom oknovom OS z mnohych roznych pricin o ktorych okrem MS nikto nema ani potuchy (ked som tak obcas sledoval spravanie focusu vo Win po zavreti nejakeho okna apod, tak som mal fakt dost :)))

Zpět do poradny Odpovědět na původní otázku Nahoru