Лекции.Орг


Поиск:




Технология Drag&Dock




События от мыши.

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

OnMouseDown (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) - Реакция на нажатие кнопки мыши.

OnMouseUp (Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer) - Реакция на отпускание кнопки мыши.

OnMouseMove (Sender: TObject; Shift: TShiftState; X, Y: Integer) - Движение кнопки мыши над объектом.

OnClick (Sender: TObject) – нажатие левой кнопки мыши над объектом.

OnDblClick (Sender: TObject) – двойное нажатие кнопки мыши.

Для этих событий от объекта передаются следующие параметры:

Sender – в каком компоненте произошло событие;

TMouseButton – определяет одну из кнопок мыши и имеет следующие значения: левая (mbLeft), правая (mbRight), средняя (mbMiddle);

TShiftState – признаки уточняющие возникновение события со следующими значениями: нажата клавиша Shift (ssShift), клавиша Alt (ssAlt), клавиша Ctrl (ssCtrl), левая кнопка мыши(ssLeft), правая кнопка мыши(ssRight), средняя(ssMiddle), одновременно левая и правая кнопки(ssDouble);

X и Y определяют координаты мыши над объектом.

При этом Button является одним параметром, и проверка его значения может быть осуществлена следующим образом

If Button=mbLeft…

Параметр Shift задается списком из нескольких значений, поэтому мы можем проверять, входит ли интересующее нас значение в этот список.

If ssRight in Shift …

События от клавиатуры.

События от клавиатуры определены для компонентов – потомков типа TControl, в частности для формы.

OnKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState) и OnKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState) – перехватывают нажатие большинства клавиш на клавиатуре.

OnKeyPress (Sender: TObject; var Key: Char) – только нажатие алфавитно-цифровых клавиш.

Параметры, которые передаются при этом:

Key – виртуальный код клавиши или ASCII-символ для KeyPress (т.е. учитывая алфавитную раскладку и нажатие клавиши Shift).

Shift – учитывается нажатие клавиши Shift.

Виртуальный код совпадает с кодом, возвращаемым функцией Ord (x:char). Посмотреть все коды можно в файле SORCE\RTL\WIN\WINDOWS.PAS в каталоге размещения Delphi.

Буксировка компонентов в окне приложения.

В ряде случаев необходимо переместить компонент по форме. Первое условие – у перетаскиваемого компонента свойство AutoSize = True. Есть несколько методов воплотить перемещение объекта.

Технология Drag&Dock.

В этом случае перетаскивание объекта происходит автоматически, без описания процесса перетаскивания программным кодом. Такой пример был рассмотрен на предыдущем уроке. Главное выполнить следующие условия.

Для формы, с которой вы будете брать компонент, установите свойство DockSite=true, это позволит брать компоненты из формы.

Для компонентов, которые будут перемещать, устанавливаем DragKind=dkDock и DragMode=dmAutomatic. (Это нужно сделать, по крайней мере, для двух компонентов, иначе метод не сработает). Затем в начале работы приложения для каждого компонента, которые будут перемещаться, нужно выполнить методы ManualFloat и ManualDock. Например:

Paz[i,j].ManualFloat(Rect(Left + Paz[i,j].Left, Top + Paz[i,j].Top, Left + Paz[i,j].Left + w, Top +Paz[i,j].Top+h)); // Переводит кусок в плавающий режим

Paz[i,j].ManualDock(Form1,nil,alleft); // Разрешить извлечь кусок с формы

Теперь вы можете перетаскивать контур объекта мышью, а сам объект переместиться только по окончанию буксировки. Если хотите, чтобы объект в конце буксировки размещался над остальными компонентами, то в обработчик события OnEndDock внесите строчку (Sender as TControl).BringToFront;





Поделиться с друзьями:


Дата добавления: 2015-05-07; Мы поможем в написании ваших работ!; просмотров: 362 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Лучшая месть – огромный успех. © Фрэнк Синатра
==> читать все изречения...

776 - | 739 -


© 2015-2024 lektsii.org - Контакты - Последнее добавление

Ген: 0.009 с.