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