Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Технология 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; Мы поможем в написании ваших работ!; просмотров: 373 | Нарушение авторских прав


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

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

Если вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получится - вы тоже правы. © Генри Форд
==> читать все изречения...

2354 - | 2257 -


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

Ген: 0.011 с.