Теоретические сведения
Для большинства видимых элементов определен набор обработчиков событий, связанных с мышью: - OnMouseDown: TMouseEvent иOnMouseUp: TMouseEvent определяют реакцию программы на соответственно нажатие и отпускание кнопки мыши; - OnMouseMove: TMouseMoveEvent - на перемещение указателя мыши над компонентом; - OnClick:TNotifyEvent и OnDblClick: TNotifyEvent – соответственно на щелчок мыши и двойной щелчок левой кнопки. Во всех обработчиках параметр Sender содержит ссылку на компонент, с которым произошло событие, а X и Yопределяют координаты точки чувствительности мыши в момент возникновения события. Параметр Button определяет одну из трех кнопок мыши: <левую> (mbLeft), <правую> (mbRight) и <среднюю> (mbMiddle). Параметр Shift содержит признаки, уточняющие обстоятельства возникновения события: ssShift – нажата клавиша<Shift>; ssAlt – нажата клавиша<Alt>;ssCtrl - <Ctrl>; ssLeft – нажата <левая кнопка мыши>; ssRight - <правая кнопка мыши>; ssMiddle - <средняя>; ssDouble – одновременно <левая> и <правая> кнопки. События от мыши получают любые потомки класса TControl.События от клавиатуры получают только некоторые оконные компоненты: - OnKeyDown и OnKeyUp возникают при нажатии и отпускании любой клавиши клавиатуры; - OnKeyPress – только при нажатии алфавитно-цифровых клавиш. Параметр Shift, как и в обработчиках событий от мыши, содержит уточняющие признаки. Параметр Key содержит код клавиши. Интерфейс Drag&Dropопределяется двумя свойствами и тремя событиями, доступными каждому видимому компоненту: - DragModeопределяет, как будет выполняться весь комплекс действий, связанных с Drag&Drop(dmManual, dmAutomatic): - DragCursor определяет вид указателя мыши; - OnDragOver возникает в момент помещения мыши «с грузом» над компонентом (параметр Sender – компонент, который возбудил событие; Source – компонент-отправитель «груза»; X, Y – координаты указателя мыши; State – состояние указателя; Accept – готовность компонента принять данные); - OnDragDrop означает, что пользователь «бросил» данные на компонент; - OnEndDrag возникает при завершении перетаскивания (Sender – отправитель данных; Targer - получатель данных или Nil). Ход работы Загрузите систему визуального программирования Delphi. Создайте подкаталог Lab6 в своем каталоге. 3. На форме расположите: две панели Panel1, Рanel2; на них соответственно две метки Label1, Label2; два однострочных редактора Edit1, Edit2; один компонент TStatusBarс именем StatusBar1(который расположен на панели Win32). Компонент TStatusBar. Компонент TStatusBarпредназначен для создания панелей состояния, которые обычно располагаются в нижней части основной формы. Компонент может иметь несколько секций. Количество секций, а также стиль каждой панели задаются с помощью специального редактора, который вызывается свойством Panels. Это свойство содержит объекты-панели. Свойство TStatusPanels.Items[Index: integer] открывает доступ к панели по ее индексу. С помощью редактора Editing St… определите три секции панели. Измените ширину каждой секции. 5. Интерфейс Drag&Drop. В приложении осуществим возможность переноса содержимого редактора Edit1 в редактор Edit2. Сделаем так, чтобы панель Panel1 можно было перемещать по форме. 1. Источниками в механизме Drag&Dropбудут компоненты Panel1, Edit1. Установите для компонентов Panel1, Edit1 свойство DragMode равным dmAutomatic. Значение dmAutomatic обеспечивает автоматическую реакцию компонента на нажатие левой клавиши мыши и начало перетаскивания. О включении механизма сигнализирует указатель мыши, - он изменяет курсор, определенный в свойстве DragCursor. 2. Приемником может стать любой компонент, в котором создан метод-обработчик DragOver. Создайте обработчики событий: а. Для Edit2: Procedure TForm1.Edit2DragOver (Sender, Source: TObject; X,Y: integer; State: TDragState; var Accept: boolean); Begin // Если источник переноса односторонний редактор, то Edit2 // становится приемником. If Source.ClassName = ' TEdit' then Accept := True Else Accept := False; End; б. Для формы: Procedure TForm1.FormDragOver (Sender, Source: TObject; X,Y: integer; State: TDragState; var Accept: boolean); Begin // Если источник переноса панель, то форма становится приемником. If Source.ClassName = ' TPanel' then Accept := True Else Accept := False; End; 3. Приемник должен предусматривать выполнение некоторых действий в случае, если источник завершает перетаскивание именно на нем. Для этого используется метод-обработчик OnDragDrop, который вызывается при отпускании левой кнопки мыши на компоненте приемнике. а. Для компонента Edit2: Procedure TForm1.Edit2DragDrop (Sender, Source: TObject; X,Y: integer); Begin // Передаем содержимое источника в приемник. Edit2.Text := (Source As TEdit).Text; End; б. Для формы: Procedure TForm1.FormDragDrop (Sender, Source: TObject; X,Y: integer); Begin // Устанавливаем источнику координаты мыши, // которые он имеет в момент отпускания кнопки. (Source As TPanel).Left := x; (Source As TPanel).Top := y; End; Проверьте правильность Ваших действий, осуществив прогон программы. 6. События, связанные с клавиатурой. В ряде случаев бывает удобно задать тип символов, которые могут быть введены в строке редактирования. Проще всего этого достичь в обработчике события OnKeyPress, которое происходит при каждом нажатии клавиши. 1. Для компонента Edit1 реализуем преобразование вводимой информации в символы верхнего регистра (для латинских символов). Создадим следующий обработчик: Procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: char); Begin If Key in ['a'.. 'z'] then begin Key := Chr(Ord(Key)-32); //Формула преобразования в верхний регистр End; End; 2. Проверьте правильность Ваших действий, осуществив прогон программы.
Популярное: Генезис конфликтологии как науки в древней Греции: Для уяснения предыстории конфликтологии существенное значение имеет обращение к античной... Модели организации как закрытой, открытой, частично открытой системы: Закрытая система имеет жесткие фиксированные границы, ее действия относительно независимы... Как распознать напряжение: Говоря о мышечном напряжении, мы в первую очередь имеем в виду мускулы, прикрепленные к костям ... Почему двоичная система счисления так распространена?: Каждая цифра должна быть как-то представлена на физическом носителе... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (307)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |