Delphi. Трюки и эффекты. Александр Чиртик
Чтение книги онлайн.

Читать онлайн книгу Delphi. Трюки и эффекты - Александр Чиртик страница 32

Название: Delphi. Трюки и эффекты

Автор: Александр Чиртик

Издательство:

Жанр: Программы

Серия:

isbn: 978-5-911-80219-6

isbn:

СКАЧАТЬ можно, например, удостовериться, что захватом указателя мыши мы не нарушим работу другого приложения (что маловероятно).

      Ограничение перемещения указателя

      При помощи несложных манипуляций можно также ограничить перемещение указателя мыши определенной областью экрана (прямоугольником). Для этого используется API-функция ClipCursor. Она принимает в качестве параметра структуру TRect с координатами прямоугольника, в пределах которого может перемещаться указатель, и в случае успешной установки ограничения возвращает отличное от нуля значение.

      С ClipCursor тесно связана функция GetClipCursor, позволяющая получить координаты прямоугольника, которым в данный момент ограничено перемещение указателя.

      Использование функций ClipCursor и GetClipCursor приведено в листинге 3.6.

Листинг 3.6. Ограничение перемещения указателя

      var

      lastRect: TRect;

      cursorClipped: Boolean = False;

      procedure SetCursorRect(newRect: TRect);

      begin

      if not cursorClipped then

      begin

      //Сохраняем старую область перемещения указателя

      GetClipCursor(lastRect);

      //Устанавливаем ограничение на перемещения указателя

      cursorClipped := ClipCursor(Addr(newRect)) <> False;

      end;

      end;

      procedure RestoreCursorRect();

      begin

      if cursorClipped then

      begin

      //Восстанавливаем область перемещения указателя

      cursorClipped := ClipCursor(Addr(lastRect)) = False;

      end;

      end;

      Здесь реализована пара процедур, первая из которых (SetCursorRect) ограничивает перемещение указателя мыши заданной областью экрана (параметр newRect). Перед ограничением на перемещение указателя в процедуре SetCursorRect происходит сохранение области перемещения, установленной ранее, чтобы действие процедуры можно было отменить. Для отмены ограничения перемещения указателя служит вторая процедура – RestoreCursorRect.

      Примечание

      Вообще, задание ограничения на перемещение указателя мыши не считается хорошим тоном. Потому для использования такой возможности в реальном приложении должны быть действительно веские причины.

      Изменение назначения кнопок мыши

      Как известно, операционная система Windows дает возможность работать за компьютером широкому кругу людей. Со стороны разработчиков было бы глупо не предусмотреть возможность простой адаптации манипулятора «мышь» к правше или левше. К тому же мышь адаптировать к таким различиям намного проще: конструкцию изменять не надо, достаточно программно поменять функции кнопок мыши.

      Как поменять функции левой и правой кнопок мыши, демонстрирует листинг 3.7.

Листинг 3.7. Изменение назначения кнопок мыши

      procedure TForm1.Button1Click(Sender: TObject);

      begin

      //Меняем местами функции левой и правой кнопок мыши

      SwapMouseButton(True);

      end;

      procedure TForm1.Button2Click(Sender: TObject);

      begin

      //Восстанавливаем функции кнопок мыши

      SwapMouseButton(False);

      end;

      В листинге СКАЧАТЬ