Стандартные свойства и события компонентов. Управление свойствами.

  • doc
  • 11.05.2020
Публикация на сайте для учителей

Публикация педагогических разработок

Бесплатное участие. Свидетельство автора сразу.
Мгновенные 10 документов в портфолио.

Иконка файла материала 68 . Стандартные свойства и события компонентов. Управление свойствами..doc

Практическая работа №2

Тема: Стандартные свойства и события компонентов. Управление свойствами.

Цель: - сформировать навыки владения компонентами Label, Panel, Edit, MaskEdit, Memo, RichEdit, ListBox, ChecklistBox, ComboBox.

Вид работы: фронтальный

Время выполнения: 2 часа

Теоретические сведения

1. Компоненты Label и StaticText используются для отображения текста на форме. При этом используется основное свойство данных компонентов Caption.

2. Если требуется отобразить числовую информацию, можно воспользоваться функциями FloatToStr и IntToStr.

3. Компоненты Memo и RichEdit служат для отображения и редактирования многострочных текстов.

4. В компонентах Edit и MaskEdit вводимый текст содержится в свойстве Text. При использовании окон редактирования для ввода, вывода и редактирования чисел необходимо использовать функции взаимного преобразования строк и чисел. Для вывода - это рассмотренные ранее функции FloatToStr и IntToStr. При вводе это - функции StrToFloat - преобразование строки в значение с плавающей запятой, и StrToInt- преобразование строки в целое значение.

Данное приложение работает следующим образом: при открытии файла его содержимое записывается в компонент RichEdit1. Там с текстом, с помощью меню, могут производиться следующие действия — копирование фрагмента текста в буфер обмена, вставка текста из буфера, вырезание текста, выделение всего текста. Предоставляется возможность создавать новый файл, сохранять файл под тем же или другим именем. Выход из программы осуществляется по выбору меню Выход.

Описание элементов, используемых в приложении, приведено в таблице 1.

Таблица 1- Компоненты приложения и их измененные свойства

Элемент

Свойство

Значение

Форма TForm

Caption

Простейший текстовый редактор

Name

Form1

Текстовый редактор TRichEdit

Name

RichEdit1

Lines

 

Align

AlClient

Диалог открытия файлов

TOpenDialog

Name

OpenDialog1

Filter

Текстовые документы|*.txt

Диалог сохранения файлов TSaveDialog

Name

SaveDialog1

Filter

Текстовые документы|*.txt

Задания к практической работе

Задание 1. Создание простейшего текстового  редактора

Данное приложение работает следующим образом: при открытии приложения содержимое файла memos.txt записывается в компонент TRichEdit. Там с текстом, с помощью меню, могут производиться следующие действия — копирование фрагмента текста в буфер обмена, вставка текста из буфера, вырезание текста, выделение всего текста. Предоставляется возможность сохранять файл под тем же именем. Выход из программы осуществляется по выбору меню Выход.

Рисунок 1 - Внешний вид приложения «Простейший текстовый редактор»

1. Поместите на форму необходимые для создания приложения компоненты. Описание элементов, используемых в приложении, приведено в таблице 1.2.

Таблица 2. Элементы примера и их измененные свойства

Элемент

Свойство

Значение

Форма TForm

Caption

Простейший текстовый редактор

Name

Form1

Текстовый редактор TRichEdit

(вкладка WIN32)

Name

RichEdit1

Lines

 

Align

AlClient

 

2. На форме также будет находиться меню MainMenu1, элементы которого приведены в таблице 3.

Таблица 3. Элементы управления меню MainMenu1

Название (Name)

Свойство

Значение

mFile

Caption

Файл

mFileSave

Caption

Сохранить

mEdit

Caption

Правка

mEditCopy

Caption

Копировать

mEditPaste

Caption

Вставить

mEditCut

Caption

Вырезать

mEditSelectAll

Caption

Выделить все

mExit

Caption

Выход

 

3. Поместите на форму компонент всплывающее меню – PopupMenu1, которое должно появляться на работающем приложении при щелчке правой кнопкой мыши по форме. Это меню должно содержать пункты Сохранить, Копировать, Вставить, Вырезать, Выделить все с назначенными им клавишными эквивалентами для быстрого выполнения пунктов меню (для этого используйте свойство ShortCut).

4. Для того чтобы форма могла использовать объект PopupMenu1, определите значение свойства PopupMenu1 для формы.

5. Запустите приложение и проверьте его работоспособность.

6. Поместите на форму объект RichEdit1, измените его размер и выровняйте визуальные компоненты, расположенные на форме, используя в главном меню Delphi Edit®Align.

7. Уберите у свойства Lines объекта RichEdit1 его значение. Установите вертикальную и горизонтальную полосы прокрутки, используя свойство ScrollBar объекта RichEdit1.

8. Для создания обработчика события, заключающегося в выборе пункта Сохранить в главном меню, в процедуру обработки события OnClick объекта mFileSave главного меню введите следующий оператор:

RichEdit1.Lines.SaveToFile(‘memos.txt’);

9. Для создания обработчика событий, поступающего от всплывающего меню, для объекта Сохранить определите значение события OnClick, выбрав из раскрывающегося списка значение mFileSaveClick, которое использовалось для объекта mFileSave главного меню. Таким образом, события для разных объектов будут совместно использовать один обработчик события.

10. При запуске приложения либо создаётся новый пустой файл memos.txt, если он отсутствует в текущей папке (пустое значение свойства Lines объекта RichEdit1 записывается в файл), либо файл memos.txt загружается из текущей папки в окно объекта RichEdit1, если файл уже существует. Поэтому, в процедуру обработки события OnActivate формы введите следующий оператор:

If FileExists('memos.txt') then RichEdit1.Lines.LoadFromFile('memos.txt')

elseRichEdit1.Lines.SaveToFile('memos.txt');

11. Для того, чтобы курсор установился в окно редактора, необходимо после загрузки файла memos.txt в окно редактора  RichEdit1 установить значение свойства ActiveControl равным RichEdit1.  Поэтому, в процедуру обработки события OnActivate формы добавьте следующий оператор: Form1.ActiveControl:= RichEdit1;

12. При закрытии приложения текст из окна RichEdit1 необходимо сохранить в файле memos.txt. Для этого, в процедуру обработки события OnClose формы вставьте строку: RichEdit1.Lines.SaveToFile('memos.txt');

13. Пункты меню Правка выполняют стандартные для редакторов действия:

Копировать- RichEdit1.CopyToClipboard;

Вставить- RichEdit1.PasteFromClipboard; RichEdit1.SetFocus;

Вырезать- RichEdit1.CutToClipboard;

Выделить все- RichEdit1.SelectAll;

14. Выход из приложения осуществляется по выбору меню Выход: Form1.Close;

15. Свяжите пункты контекстного меню с соответствующими пунктами главного меню.

16. Подберите и установите значки (иконки) в главное и контекстное  меню программы.

17. Запустите приложение и проверьте его работу.

Задание 2. Модифицируйте ранее созданный текстовый редактор (см. задание 1).

1. Модифицируйте главное меню приложения в соответствии с таблицей 4.

Таблица 4. Элементы управления главного меню

Название (Name)

Свойство

Значение

mFile

Caption

Файл

mFileNew

Caption

Создать

mFileOpen

Caption

Открыть

mFileSave

Caption

Сохранить

mFileSaveAs

Caption

Сохранить как…

mEdit

Caption

Правка

mEditCopy

Caption

Копировать

mEditPaste

Caption

Вставить

mEditCut

Caption

Вырезать

mEditSelectAll

Caption

Выделить все

mExit

Caption

Выход

2. Поместите на форму объекты OpenDialog1 и SaveDialog1, расположенные на закладке Dialogs палитры компонентов. Для объектов OpenDialog1 и SaveDialog1 определите свойства DefaultExt, Filter, FilterIndex, Title.

3. Объявите глобальную переменную FN типа String, в которой хранится имя открытого файла.

4. Для активизации объектов OpenDialog1 и SaveDialog1 используйте их метод Execute. Если пользователь закрывает диалоговое окно, щелкнув на кнопке OK, эта функция возвращает значение True.

Обработчик пункта меню Открыть выполняет следующее:

if OpenDialog1.Execute then

                                      begin

                            FN:= OpenDialog1. FileName ;

                             RichEdit1.Lines.LoadFromFile(OpenDialog1.FileName);

                                      end;

Здесь в переменную FN заносится имя открытого файла и его текст помещается в редактор RichEdit1. Все это выполняется, если отрывается какой-либо файл.

5. При выборе пункта Сохранить происходит сохранение содержимого редактора RichEdit1 в файл, который был открыт с помощью меню Открыть.

if FN<>’’ then     RichEdit1.Lines.SaveToFile(FN);

6. Используя меню Сохранить как… можно сохранить открытый файл под другим именем:

if SaveDialog1.Execute then

begin

FN:= SaveDialog1. FileName ;

RichEdit1.Lines.SaveToFile(SaveDialog1.FileName);

end;

При сохранении файла в диалоговом окне должно предлагаться имя, заданное при открытии файла.

7. Используйте метод Clear для очистки окна RichEdit1 при открытии нового файла.

8. Выход из приложения осуществляется по выбору меню Выход: Form1.Close;

Задание 3: Создание пункта Файл главного меню текстового редактора с возможностью добавлять имена файлов во вложенное динамическое меню пункта Последние, максимальный размер которого ограничен 4 пунктами.

1. Модифицируйте главное меню в соответствии с рис. 2:

Рисунок 2 - Пункт Файл главного меню программы

Основные свойства и значения пунктов меню приведены в таблице 5.

Таблица 5. Элементы управления меню MainMenu1

Название (Name)

Свойство

Значение

 

 

 

mFile

Caption

Файл

 

 

 

mFileNew

Caption

Создать

 

 

 

mFileOpen

Caption

Открыть

 

 

 

mReopen

Caption

Последние

Название

Свойство

Значение

mFileSave

Caption

Сохранить

mName0

Caption

Файл 0

mFileSaveAs

Caption

Сохранить как

mName1

Caption

Файл 1

mFileClose

Caption

Закрыть

mName2

Caption

Файл 2

mCherta

Caption

-

mName3

Caption

Файл 3

mExit

Caption

Выход

 

 

 

mEdit

Caption

Правка

 

 

 

mEditCopy

Caption

Копировать

 

 

 

mEditPaste

Caption

Вставить

 

 

 

mEditCut

Caption

Вырезать

 

 

 

mEditSelectAll

Caption

Выделить все

 

 

 

mExit

Caption

Выход

 

 

 

 

Для создания вложенного меню пункта Последние нажмите Ctrl+<→>.

2. Доступность пункта меню определяет значение свойства Enabled, для пунктов Последние, Сохранить, Сохранить как… Установите это свойство равным False. Эти пункты становятся доступными после выполнения команды Создать или Открыть. Все пункты для вложенного меню Последние невидимы (установите свойства Visible равным False) и заполнены фиктивными именами файлов.

3. Между пунктами меню Закрыть и Выход    поставьте разделительную черту. Для этого свойству Caption присвойте значение ‘-‘  (минус).  

4. Получить доступ к пунктам меню можно обращаясь к ним по именам, а также при помощи свойства Items компонента  MainMenu1. Items – это объект класса TmenuItem, к нему можно обращаться как к массиву, причем индекс первого элемента массива равен 0. Например, File1.Items[3] определяет пункт Сохранить. Кроме того, каждый пункт меню также является объектом класса TmenuItem и, поэтому, так же обладает свойством Items, которое обеспечивает доступ к пунктам подменю. Например, File1.Items[3].Items[1] или Reopen1.Items[1] определяют пункт Name1. При работе с несколькими пунктами меню удобнее пользоваться свойством Items. Свойство Count объектов класса TmenuItem равно количеству элементов в массиве Items.

В обработчике события OnClick пункта меню Создать должно быть реализовано следующее:

§ Пункты меню Сохранить, Сохранить как…, Закрыть становятся доступны.

§ Если пункт Последние доступен (т.е. содержит список конкретных файлов), то убирается пометка с имени файла (свойство Checked пункта меню) в подменю Последние.

В обработчике события OnClick пункта меню Закрыть должно быть реализовано следующее:

§ Пункты меню Сохранить, Сохранить как…, Закрыть становятся недоступны.

§ Убирается пометка в списке имен ранее открывавшихся файлов.

Команда Открыть открывает диалоговое окно открытия файла и, в случае выбора файла, добавляет его в подменю Последние в качестве нулевого пункта и помечает этот пункт. При добавлении нового имени весь список имён смещается вниз. В обработчике события OnClick  пункта меню Открыть должно быть реализовано следующее:

§  Открывается диалоговое окно открытия файла. Если пользователь выбрал файл для открытия, то выполняется следующее:

§  Пункты меню Сохранить, Сохранить как…, Закрыть становятся доступны.

Для пункта Последние необходимо:

§  Установить доступность.

5. Выполнить смещение в имеющемся списке имен файлов на одну позицию вниз с сохранением свойства Visible от предыдущего элемента. При смещении списка изменяется нумерация в названии пунктов меню. Для изменения этой нумерации используйте процедуру Delete из модуля System. (Внимание! У пунктов меню тоже имеется метод Delete).

В качестве нулевой строки вложенного меню установить подчеркнутую цифру 0, а за ней полное имя файла, полученное из диалогового окна. Свойство Visible этой строки установить равным True.

Убрать старую пометку в списке имен файлов и установить пометку в нулевой строке.

6. Добавьте в процедуру обработки ситуацию, когда открываемый файл уже имеется в списке (запомните его номер и при смещение вниз в списке имен не изменяйте пункты подменю Последние, следующие за этим номером). Для выделения из строки списка полного имени файла используйте процедуру Delete из модуля System.

В обработчике события OnClick пункта вложенного меню должно быть реализовано следующее:

Для пункта Последние необходимо:

§ убрать старую пометку в списке имен файлов;

§ поставить пометку на том имени файла, по которому щелкнули мышкой, рассматривая параметр Sender, передаваемый в обработчик, как представитель класса TmenuItem;

§ открыть в окне редактора выбранный файл.

7. Дополните написанные обработчики событий, используя функцию function ExtractFileName(const FileName: string): string для выделения неполного имени файла, таким образом, чтобы на месте заголовка формы, кроме самого заголовка формы, отображалось ещё и неполное имя выбранного файла.

 

Контрольные вопросы

1.     Какой компонент используется для создания главного меню?

2.     Какой компонент используется для создания контекстного  меню?

3.     В чем заключается отличие главного и контекстного меню?

4.     Как связать пункты главного и контекстного меню?

5.     Как установить иконку (значок) в меню?

6.     По какому событию генерируется процедура обработки пункта меню?

7.     Для чего предназначен компонент TOpenDialog ?

8.     Для чего предназначен компонент TSaveDialog ?

9.     С помощью какого свойства компонента TOpenDialog добавляется расширение к имени файла, если при ручном наборе пользователь его не указал?

10. Какое свойство компонента TOpenDialog используется для фильтрации файлов, отображаемых в диалоговом окне?

11. Какое свойство компонента TOpenDialog задает заголовок диалогового окна?

12. Какое значение нужно установить в TRUE  в свойстве Options компонента TSaveDialog для того, чтобы запрашивалось подтверждение на сохранение файла, если файл с таким именем уже имеется?

13. Для чего предназначен  метод класса TOpenDialogЕхесutе?

14. Назначение функции: function ExtractFileName(const FileName: string): string ; ?


Скачано с www.znanio.ru