Egy gomb lenyomása a delphi - verem túlcsordulásához orosz nyelven
Két lehetőség van. Vagy kézzel csináld az egér mozgási eseményt, így amikor a bal egérgombot megnyomjuk, az űrlapon lévő gomb a kurzort követheti, vagy használhatja a standard funkciókat.
Egyszerű módja az egérmozgási esemény használata. A logikai változó húzását írjuk le. Ha az OnMouseDown esemény be van állítva, húzza: = true; megoldjuk a mozgást. Az OnMouseMove eseménykezelőben az egér koordinátáinak koordinátáit a gomb koordinátáihoz rendeltük, éppúgy ahogy az időzítőben történt, hanem azzal a feltétellel, hogy húzzuk a [műveleteinket]. És végül, az OnMouseUp esemény esetén állítsa vissza a változót - drag: = false.
Példa kód:
Egy másik módja a gomb DragMode tulajdonságának beállítása a dmAutomatic (a gomb automatikusan áthelyezése), és a DragKind tulajdonság dkDock (a gomb más objektumokkal dokkol, ahogy én megértem). Tovább. Egyes összetevők, különösen a nagy és üres munkaterületek (űrlap, panel, mindenféle rúd) rendelkeznek egy DockSite tulajdonsággal - így a gomb ezen komponensre kerül, ezt a tulajdonságot igaznak kell állítani. Igaz, hogy a gomb véletlenül önmagában jelenik meg, nem pedig dokkolva, ezért óvatosnak kell lenni (fejlécet és záró gombot, vagyis a felhasználó véletlenül elpusztíthatja). De kényelmes. By the way, vannak további események: OnDragDrop, OnDragOver, OnStartDock, OnStartDrag, OnEndDock, OnEndDrag. Remélem, önmagával is foglalkozhat, ha szükséges.
válaszolt 5 okt. '11, 15:18
És mi a probléma?)
Mi feldolgozzuk az eseményt, amikor megnyomjuk az egérgombot, MouseDown-t). Nos, pl. Létezik egy logikai típusú Boolean változó, hozzárendeljük az igazit. Ezután feldolgozzuk az eseményt az űrlapon, amikor az egérmutatót, az MouseMove-t mozgatjuk. Itt írunk valami ilyesmit:
ahol X, Y - az egér aktuális koordinátái;
Ha a gomb helyzetét a Helyszíntípuson keresztül állította be, akkor módosítsa őket.
Továbbá például, ha elértünk egy pozíciót X-ben és Y-ban, akkor hívjuk a button1.Click ();
Nos, azt hiszem, a logika világos, nincs szükségem Delphire, így nem tudom a teljes kódot bevinni.