A kérdésre adott válasz szám 66940
Ablakok, üzenetek | Hozza létre saját alkatrészek | A reakció a billentyűzet, az egér | egér |
jó napot
Írok alkatrész jogutódaként TWinControl
probléma MouseUp, állítólag nyomon lenyomásával és felengedésével az egér
ha elhagyja az egér kívül az alkatrész, és megjelent MouseUp nem hívott
Hasonló dolog, amit észrevettem a TreeView, mondd, kérlek, hogyan lehet legyőzni, előnyösen somogo alkatrész
azaz
MouseDown - ha a bal gomb megnyomásakor a pályán MouseUp
Ui - A királyság hasonló kérdések, de már jár több belehúzhatók komponenst, akkor csak be kell követni események
Követ akármi válasz erre a kérdésre via RSS
hmm.
Valóban, ha az egér száműzik fordul át egy ablak (ha az aktív Alt + Tab), akkor már nem jön WM_LBUTTONUP
Hozzátette ellenőrzi átviteli kísérlet a fő alkalmazás, hogy ha már egy modális állapotban, akkor el kell hagynia, és befejezni utolsó kísérletet, hogy át
Tehát, valószínűleg könnyebb lesz, mint az azt végrehajtó a komponens szinten.
de még mindig az üzenet feldolgozására
WM_CAPTURECHANGED Például, ha elhagyjuk az egeret, majd nyomja meg az ALT + TAB vagy ablak másik oka, hogy elveszíti a fókuszt, WM_LBUTTONUP nem kap, de kap WM_CAPTURECHANGED.
Ez ijesztő.
és mit kell tenni, a döntés közvetlen eredménye egy halom kódot, és úgy tűnt, mint minden egyszerű és átlátható
1.MouseDown
Mi ellenőrizni fogja, hogy a fül a kör, egyébként hagyja
beállítás események száműzik
váltás a módozat, ha megnyomja az Esc, majd ellensúlyozni otenyaem
a visszatérés a régi gépek
hogy működött egy idegen helyen, ha a felhasználó nem elég okos ahhoz, hogy húzza a korlátokat a komponens
de most világosan elképzelni, milyen Capture és mi az,
>>> Kérdés lezárva köszönöm szépen :-).
Lesz, persze, tudom jobban. De ugyanaz a probléma, egy link, amelyre vezette, van neki rövid Szergej Perovsky üzenet
A legszörnyűbb az opciót „program majdnem működik” :)
Ennek megfelelően itt, ebben a sorban a „tervező MouseCapture: = true; teljesen megoldja a kérdést:” I okoz enyhe meglepetés. Én valószínűleg még az első megérteni, hogy egy igen, és csak ezután megvizsgálta az ügyet lezártnak.
Köszönöm mindenkinek a válaszokat, volt egy voodoo :-)
Tervező MouseCapture: = true; teljesen megoldja a problémát
Hívtam a könnyű átmenet ablak modális állapotban van, ami tulajdonképpen eltévedt CapturedWin
A kérdés zárva van, minden köszönet :-).
Tettem formájában panel és írt
eljárás TForm1.Panel1MouseDown (Sender: TObject; gomb: TMouseButton;
Shift: TShiftState; X, Y: Egész szám);
kezdődik
Caption: = 'lefelé';
végén;
eljárás TForm1.Panel1MouseUp (Sender: TObject; gomb: TMouseButton;
Shift: TShiftState; X, Y: Egész szám);
kezdődik
Caption: = 'up';
végén;
És a nagy munkát. Azaz meg kell adnunk a funkció alapértelmezés szerint elérhető.
Ellenőrizze, hogy felülbírálja az eljárás
eljárás TControl.WMLButtonDown (var Message TWMLButtonDown.);
kezdődik
SendCancelMode (Self);
örökölt;
ha csCaptureMouse a ControlStyle majd MouseCapture: = true;
ha csClickEvents a ControlStyle majd bele (FControlState, csClicked);
DoMouseDown (Message mbLeft, [].);
végén;
ami valójában van beállítva MouseCapture, és ha még mindig újra check hogy hívod örökölt WMLButtonDown