Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка по лабораторным Delphi.doc
Скачиваний:
43
Добавлен:
13.02.2016
Размер:
610.3 Кб
Скачать

5. Интерфейс Drag&Drop.

В приложении осуществим возможность переноса содержимого редактора Edit1 в редактор Edit2. Сделаем так, чтобы панель Panel1 можно было перемещать по форме.

  1. Источниками в механизме Drag&Drop будут компоненты Panel1, Edit1. Установите для компонентов Panel1, Edit1 свойство DragMode равным dmAutomatic. Значение dmAutomatic обеспечивает автоматическую реакцию компонента на нажатие левой клавиши мыши и начало перетаскивания. О включении механизма сигнализирует указатель мыши, - он изменяет курсор, определенный в свойстве DragCursor.

  2. Приемником может стать любой компонент, в котором создан метод-обработчик DragOver. Создайте обработчики событий:

    1. Для 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;

    1. Для формы:

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;

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

    1. Для компонента Edit2:

Procedure TForm1.Edit2DragDrop (Sender, Source: TObject; X,Y: integer);

Begin

// Передаем содержимое источника в приемник.

Edit2.Text := (Source As TEdit).Text;

End;

    1. Для формы:

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;

  1. Проверьте правильность Ваших действий, осуществив прогон программы.

7. События, связанные с мышью.

Для формы создадим обработчики событий, которые будут фиксировать нажатие клавиши мыши в первой секции компонента StatusBar1, отпускание кнопки мыши во второй секции и текущее положение курсора мыши в третьей секции.

  1. Создайте обработчики для формы:

    1. Нажатие на кнопку мыши:

Procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: integer);

Begin

// В первую секцию панели статуса записываем координаты мыши.

StatusBar1.Panels[0].Text := 'Начало: '+ 'X: ' + IntToStr(x) + ';Y: ' +IntToStr(y);

End;

    1. Отпускание кнопки мыши:

Procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X,Y: integer);

Begin

// Во вторую секцию панели статуса записываем координаты мыши.

StatusBar1.Panels[1].Text := 'Конец: '+ 'X: ' + IntToStr(x) + ';Y: ' +IntToStr(y);

End;

    1. Перемещение мыши:

Procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: integer);

Begin

// В третью секцию панели статуса записываем координаты мыши.

StatusBar1.Panels[2].Text := 'X: ' + IntToStr(x) + ';Y: ' +IntToStr(y);

End;

  1. Проверьте правильность Ваших действий, осуществив прогон программы.