Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Delfi, лекции / Зан Св компонентов.doc
Скачиваний:
17
Добавлен:
28.03.2016
Размер:
1.1 Mб
Скачать

Указатели мыши

При перемещении указателя мыши по экрану он может менять свою форму в зависимости от значения свойства Cursor компонента, на котором он расположен в данный момент:

В Delphi предопределены стандартные указатели, показанные на рис.1.3.

В практике программирования часто возникает необходимость изменения формы указателя для всех окон программы. Например, при выполнении достаточно длительного по времени процесса указатель мыши часто принимает вид песочных часов (crHourGlass), а после завершения процесса - восстанавливает свой первоначальный вид.

Чтобы изменить форму указателя для всех окон программы одновременно, используется свойство Cursor глобального объекта Screen, который автоматически создается для каждой программы:

Программист может создать и использовать нестандартный указатель.

При этом он должен придерживаться следующей последовательности действий.

  1. С помощью редактора изображений Delphi создайте изображение указателя и разместите это изображение в дополнительном ресурсном файле программы.

  2. В работающей программе сначала загрузите указатель из ресурсного файла с помощью функции LoadCursor и зарегистрируйте его в списке Cursors объекта Screen.

  3. Только после выполнения предыдущих действий можно назначать нестандартный указатель свойствам Cursor компонентов или экрана.

Рассмотрим описанный выше процесс на следующем примере, в котором создается и используется указатель в виде окружности.

  1. Выберите команду Tools - Image Editor, чтобы загрузить редактор изображений Delphi.

  2. В окне редактора сначала выберите команду File - New - Resource File, а затем - команду Resource - New - Cursor. Окно редактора к этому моменту должно иметь вид, показанный на рис.1.4.

  3. С помощью команды Resource - Rename обязательно измените стандартное имя ресурса Cursor1 на любое другое, набрав его прописными буквами, например, MYCURSOR. Вы можете даже оставить прежнее имя, но набрать его прописными буквами нужно обязательно, иначе функция LoadCursor не сможет извлечь указатель из ресурсного файла.

  4. Дважды щелкните на ресурсе в списке ресурсов или выберите команду Resource - Edit - на экране появится окно редактора с двумя пустыми полями, обведенными красными рамками. Левое поле предназначено для представления создаваемого указателя в увеличенном масштабе, правое показывает его в натуральную величину.

Рис.1.4

  1. 5Выберите инструмент в форме окружности в левой части окна редактора. Нажмите и удерживайте клавишу Shift, чтобы получилась правильная окружность. Подведите указатель мыши в виде крестика несколько правее и ниже верхнего левого угла левого поля редактора, нажмите левую кнопку мыши и, удерживая кнопку мыши и клавишу Shift, переместите указатель несколько левее и выше правого нижнего угла поля, после чего отпустите кнопку и клавишу. В результате должно получиться нечто похожее на рис.1.5.

  2. Щелкните мышью на заголовке Untitled1.res окна со списком ресурсов (или закройте окно с изображениями указателя кнопкой закрытия в его правом верхнем углу) и с помощью команды File - Save сохраните ресурсный файл под именем Cursor, после чего закройте редактор изображений.

  3. Создайте новый проект с пустой формой и напишите показанный ниже обработчик события OnCreate для формы Form1:

Рис.1.5

Не забудьте указать комментарий {$R Cursor.res}, чтобы компоновщик присоединил ресурсный файл Cursor.res к ресурсному файлу программы. После запуска программы вы увидите в клиентской части пустой формы нестандартный указатель.

При регистрации указателя в списке Screen.Cursors индекс может быть любым числом в диапазоне от -32768 до +32767.

Однако следует учитывать, что индексы в диапазоне от -22 до -1 включительно заняты стандартными указателями (см. рис.1.3), причем индексы -5 и -1 соответствуют указателю crNone, а индекс 0 всегда связан со стандартным указателем Windows () и не может переопределяться.

Реакция на события мыши и клавиатуры

События мыши

Для большинства видимых компонентов определен набор обработчиков событий, связанных с мышью:

Тип TMouseButton определяет одну из трех кнопок мыши: левую (mbLeft), правую (mbRigth) и среднюю (mbMiddle).

Тип TShiftState содержит признаки, уточняющие обстоятельства возникновения события:

ssShift - нажата клавиша Shift;

ssAlt - нажата клавиша Alt;

ssСtrl - нажата клавиша Ctrl;

ssLeft - нажата левая кнопка мыши;

ssRight - нажата правая кнопка мыши;

ssMiddle - нажата средняя кнопка мыши;

ssDouble - нажаты одновременно левая и правая кнопки мыши.

Обработчики событий OnMouseDown и OnMouseUp определяют реакцию программы на соответственно нажатие и отпускание кнопки мыши, OnMouseMove - на перемещение указателя мыши на компоненте, OnClick и OnDblClick - соответственно на щелчок и двойной щелчок левой кнопкой мыши.

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

Событие OnClick возникает после события OnMouseDown, но перед событием OnMouseUp, а событие OnDblClick возникает после события OnMouseUp.

Соседние файлы в папке Delfi, лекции