ПредишенСледващото

Начало Статии Reshix Програма: Математика

Вижте също :. Цветове в Делфи Battleship DivTimer

/ * TODO: Научете програмиране * /

В Делфи, има два основни подхода за получаване на информация за курсора на мишката: чрез набор от функции и чрез TMouse интерфейс (по възможност по-удобно). Но все пак, аз ще ви разкажа за тях. Особено, защото TMouse работи чрез същите тези функции.

Позицията на курсора

Първо, нека да се справят с координатната система. Тя е с глобален характер, като се започне в горния ляв ъгъл на екрана, оста Х е насочено към правото, Y-ос надолу. Максималната стойност на X и Y координати ще бъде съответно ширината и височината на екрана в пиксели. Те са най-лесният начин да получите от използването на Screen модул "форми":

Имайте предвид, че координатите на долния десен ъгъл са зависими от резолюцията.

Първи координати

Обръщаме се към получаване на себе си координати. За това е функция на модула GetCursorPos "Windows":

Може би, за да го използвате, за да не е много удобно - променлива, която записва необходимата информация, се прехвърля към функция като параметър. Въпреки това, аз съм съгласен, че е по-удобно да се съхранява на координатите заедно, с помощта на вид TPoint. За тези, които не знаят как да работят в TPoint, за да се получи координатите е направено така (Никога не знаеш?):

Не, все още неудобно. Нека използваме втория метод: този модул "Контрол", обявени на мишката.

С работата си е по-хубаво, не е задължително да внесено допълнителни променливи, тъй като Mouse.CursorPos вече имаме променливата от тип TPoint. Общо:

Преместете курсора

Този път, може би, в първия вариант предимство. Достатъчно е да се вземе и просто се обадете SetCursorPos. всички от един и същ модул "Windows":

При втория вариант, обаче, твърде много не е проблем. чифт числа е достатъчно, за да се превърне (х, у) в TPoint и спести:

Заслужава да се отбележи, че просто няма да работи, за да се промени само едно от координати:

Ето, това е много удобно - Преместване на курсора се случва веднага, без да се преминава през междинни точки.

Кликвайки бутоните на мишката

Нека да преминем към по-активни действия на мишката. Помислете mouse_event функция на модул "Windows":

Като цяло, това е доста сложна функция и може да преместите курсора, но аз ще ограничи себе натискане. Там, където има по-пълно описание тук.

Натискането на винаги се появява под курсора, така че тук е безполезна за предаване на координатите, е необходимо само да се премести до желаното място, преди да натиснете. Ето списък от константи, които определят това, което искаме да натиснете:

Някои от тях са определено вече имате във вашата версия на Delphi в модула "Windows", те са показани тук, в случай, че нещо липсва.

Внимание! Не забравяйте да пуснете бутона!

Общо, че имаме: за да се определи ефекта на dwFlags; DX и ди е 0; в dwData код за бутона X, че кликванията, иначе 0; dwExtraInfo също 0. Възможните стойности са бутона Х-код:

Скрол

Използване на едни и същи функции mouse_event може колелце. За да направите това, има две константи:

Заявката е: dwFlags - код на събитието превъртане; DX и ди - 0; dwData - сумата от които се превърта; dwExtraInfo - 0. dwData стойност може да бъде или множествена WHEEL_DELTA:

Какво ще направи колелце в три стъпки; и може да бъде много по-малко, например:

Какво прави превъртане на стъпка 1/5. DwData знак определя посоката на превъртане: положителен означава възходящо движение, въртене от страна на потребителя; отрицателна - надолу, въртенето на потребителя. Въпреки това, поради факта, че тази опция е посочено неподписан DWORD (0..4294967295 обхват), а след това, ако не се случи, за да използвате отрицателни стойности - Използвайте вида на DWORD:

курсора Скриване

Специално ShowCursor функция на модул "Windows", като параметър получава състояние, което трябва да поеме (True - видими, False - невидим):

Пример 1: Преместване на курсора 120 пиксела вдясно и 40 нагоре.

Пример 2: натиснете левия бутон, когато курсорът се намира точно в долния ляв ъгъл.

Между другото, кодът може да бъде малко по-съкратен чрез прехвърляне на пресоване и освобождаване наведнъж като едно действие:

Аз не знам дали това е предвидено, но аз съм на работа перфектно

Материал на тази страница се разпространява под лиценз CC BY-SA 4.0

Свързани статии

Подкрепете проекта - споделете линка, благодаря!