Создайте подкаталог 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. Проверьте правильность Ваших действий, осуществив прогон программы.

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

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

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;

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

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

Begin

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

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

End;

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

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

Begin

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

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

End;

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

Наши рекомендации