Главная страница
Навигация по странице:

  • Теоретическая часть.

  • Диалоговые компоненты.

  • TPopupMenu

  • 3.

  • Практическая часть. Ход работы.

  • Информатика21-22. Методические указания по курсу Информатика Пятигорск 2020 Лабораторная работа 1


    Скачать 4.27 Mb.
    НазваниеМетодические указания по курсу Информатика Пятигорск 2020 Лабораторная работа 1
    Дата31.03.2022
    Размер4.27 Mb.
    Формат файлаdocx
    Имя файлаИнформатика21-22.docx
    ТипМетодические указания
    #431282
    страница7 из 12
    1   2   3   4   5   6   7   8   9   ...   12

    Лабораторная работа 6.


    Тема: Создание интерфейса программы. Диалоговые компоненты.

    Цель:


    Теоретическая часть.

    Компонент Rich Edit представляет собой многострочное редактируемое текстовое поле, работающее с форматом RTF (Rich Text Format - расширенный текстовый формат).

    Rich Text Format (RTF) - тип файлов, используемый для переноса форматированных текстовых документов между приложениями, в том числе работающими на различных платформах, таких как IBM и «Макинтош». Это формат файлов, который распознают большинство программ обработки текстов. Применяется, если документ, созданный в одной программе, нужно прочесть в другой программе обработки текста или в текстовым редакторе Microsoft Word любой версии.

    Текст в формате RTF при просмотре его в стандартном текстовом редакторе Блокнот, который не работает с форматированием в тексте, а использует только символы из стандартного набора ASCII-кодов (ANSI-кодов), будет отображаться в виде кодированного текста.



    Delphi позволяет использовать текстовое поле RichEdit для работы с текстом практически любой длины. На его основе можно создать приложения для обработки текстовой информации - простейший текстовый редактор.

    Свойство

    Назначение

    DefAttributes

    Определяет шрифтовые атрибуты всего текста

    HideScrollBars

    Определяет, будут ли автоматически появляться полосы прокрутки, если текст отсекается границами компонента. Игнорируется, если свойство ScrollBars содержит значение ssNone

    HideSelection

    Определяет, будет ли убираться выделение текста, если компонент потеряет фокус ввода

    Lines

    Содержит набор строк текста. С помощью его методов LoadFromFile и SaveToFile компонент может читать текст из файла или записывать в него текст

    PageRect Определяет размеры страницы при печати на принтере

    Paragraph

    Содержит атрибуты текущего абзаца, то есть абзаца с выделением или с текстовым курсором. Программа не может изменить свойство Paragraph, но может изменить свойства связанного с ним абзаца

    PlainText

    Запрещает/разрешает записывать в файл или читать из него служебную информацию формата RTF (True — запрещает)

    SelAttributes

    Определяет шрифтовые атрибуты выделенного текста

    SelLength

    Задает длину в символах выделенной части текста

    SelStart

    Определяет номер первого символа выделенной части текста от начала текста (нумерация символов начинается с 0). Если пет выделения, определяет символ, перед которым располагается текстовый курсор

    SelText

    Содержит выделенный текст. Установка нового значения SelText заменяет выделенный текст новым, а если нет выделения — вставляет сто в позицию курсора




    Методы компонента TRichEdit

    2

    Метод

    Описание

    Clear

    Удаляет весь текст

    ClearSelection

    Удаляет выделенный фрагмент текста

    SelAttributes

    Задаёт атрибуты для выделенного фрагмента текста:

    Color - цвет текста;

    Name - тип шрифта (гарнитура);

    Style - стиль (обычный, полужирный, курсив, подчёркнутый);

    Size - размер шрифта.

    CopyToClipboard()

    Копирует в буфер обмена выделенную часть текста

    CutToClipboard()

    Вырезает в буфер обмена выделенную часть текста

    PasteFromClipboard()

    Вставляет из буфера обмена скопированный текст



    Диалоговые компоненты.

    В состав Windows входит ряд типовых диалоговых окон, таких как окно выбора загружаемого файла, выбора шрифта, настройки принтера и т. д. В Delphi реализованы классы, объекты которых дают программисту удобные способы создания и использования таких окон. Соответствующие компоненты расположены в палитре компонентов Dialog.
    Работа со стандартными диалоговыми окнами осуществляется в три этапа.

    Вначале на форму помещается соответствующий компонент и осуществляется настройка его свойств (следует заметить, что собственно компонент не виден в момент работы программы, видно лишь создаваемое им стандартное окно). Настройка свойств может проходить как на этапе конструирования, так и в ходе прогона программы.

    На втором этапе осуществляется вызов стандартного для классов диалоговых окон метода Execute, который создает и показывает на экране диалоговое окно. Вызов этого метода обычно располагается внутри обработчика какого-либо события. Например, обработчик выбора в меню команды Открыть файл может вызвать метод Execute компонента TOpenDialog, обработчик щелчка на кнопке Сохранить панели инструментов может вызвать такой же метод компонента TSaveDialog и т. д. Только после обращения к методу Execute на экране появляется соответствующее диалоговое окно. Это окно является модальным, поэтому сразу после обращения к методу Execute дальнейшее выполнение программы приостанавли­вается до тех пор, пока пользователь не закроет окно. Поскольку Execute — логическая функция, она возвращает в программу значение True, если результат диалога с пользователем был успешным. Проанализировав результат вызова метода Execute, программа может выполнить третий этап — использовать введенные с помощью диалогового окна данные — имя файла, параметры принтера, выбранный шрифт и т. д.
    TOpenDialog и TSaveDialog — окна открытия и сохранения файлов

    Компоненты TOpenDialog и TSaveDialog имеют идентичные свойства и, поэтому рассмотрим их вместе.

    Свойство FileName содержит путь поиска и выбранный файл при успешном завершении диалога с пользователем. Программа может применять это свойство для доступа к файлу с целью читать из него данные (TOpenDialog) или записывать в него (TSaveDialog). Пользователь может ввести произвольное имя и, следовательно, указать несуществующий файл. Для записи это не имеет значения, но при чтении отсутствие файла может привести к краху программы. Чтобы избежать этого, можно проверить существование файла глобальной функцией FileExists, или использовать механизм обработки исключительных ситуаций.

    Свойство Filter используется для фильтрации (отбора) файлов, показываемых в диалоговом окне. Это свойство можно устанавливать с помощью специального редактора на этапе конструирования формы или программно. Для доступа к редактору необходимо использовать свойство Filter окна инспектора объектов. При программном вводе фильтры задаются одной длинной строкой, в которой символы вертикальной черты | служат для разделения фильтров, а также для отделения описания фильтруемых файлов от соответствующей маски выбора. Например, следующий оператор задает две маски для отбора файлов с расширениями PAS и ТХТ:

    OpenDialogl.Filter := 'Текстовые файлы |*.txt| Файлы Паскаля | *.pas';

    Установить начальный каталог позволяет свойство InitialDir. Например:

    OpenDialogl.InitialDir := 'c:\program files\borland\delphi6\source




    TFontDialog — окно выбора параметров шрифта


    Основное свойство диалога TFontDialog - Font. Оно имеет атрибуты те же, что и атрибуты выделенного фрагмента текста для поля RichEdit:

    • Color - цвет текста;

    • Name - тип шрифта (гарнитура);

    • Style - стиль (обычный, полужирный, курсив, подчёркнутый);

    • Size - размер шрифта.

    Это обстоятельство позволяет программно задавать параметры шрифта для выделенного текста выбором из диалогового окна FontDialog.
    Диалог TPrintDialog.

    Позволяет обращаться к стандартному диалоговому окну для выбора параметров печати. Для обращения из программы для этого используется метод Excecute().
    Компонент TMainMenu (Главное меню) позволяет создавать главное меню формы. Для создания структуры меню на компоненте, добавленном в форму, щёлкнуть правой кнопкой мыши и выбрать команду Menu Designer.



    В редакторе структуры меню можно добавлять пункты меню, вложенные в них подменю и команды. Каждый пункт меню аналогичен кнопкам и для каждого пункта меню в дальнейшем необходимо дописать программный код, выполняемый в программе по щелчку на выбранном пункте.

    Главное меню является общим для всех компонентов формы. Для каждого компонента формы можно использовать контекстное (динамическое, всплывающее, системное) меню, вызываемое щелчком правой кнопки мыши на компоненте.

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

    Практическая часть.
    Ход работы.

    1. Создать новый проект.

    2. Для окна проекта задать следующие свойства:




    • Размер формы использовать произвольный. Размеры формы могут и должны меняться по ходу выполнения программы.

    • Заголовок формы - Лабораторная работа № 6. Текстовый редактор.

    3. С использованием компонентов сконструировать интерфейс программы.



    В форму необходимо добавить следующие компоненты:

    • Текстовое поле RichEdit. Размер этого компонента должен быть настроен не в конструкторе, а программно.

    • Диалоговые компоненты OpenDialog, SaveDialog, PrintDialog, FontDialog.

    • Компоненты MainMenu и PopupMenu

    4. Для задания полю RichEdit соответствующих размеров относительно размеров формы при прогоне программы необходимо использовать событие OnActivate. В созданной процедуре для компонента RichEdit необходимо задать следующие параметры:

    Положение левого верхнего угла поля RichEdit относительно формы. Это можно сделать с использованием следующих команд:

    RichEditLLeft := 5; RichEditLTop := 25;

    Данные координаты задаются относительно левого верхнего угла формы.

    Для задания положения правого нижнего угла поля RichEdit удобнее всего использовать не абсолютный размер, а относительный размер, который будет автоматически затем меняться при изменении размера формы.

    Это можно сделать с использованием следующих команд:

    RichEditLWidth := Fornu.Width - 18; RichEditLHeight := FormLHeight - 65;

    Для того, чтобы при изменении размера формы при выполнении программы размер поля RichEdit также менялся по той же закономерности, не обязательно дублировать предыдущие четыре команды в другой процедуре. Событие, возникающее при изменении размера формы при прогоне программы, OnResize может использовать написанный уже программный код в предыдущей процедуре. Для этого каждого пункта меню необходимо будет написать соответствующую процедуру. Для создания процедуры необходимо компонент меню с нужной командой выбирать в дереве объектов. Каждый пункт меню обозначен именем вида: N1, N2 и т.д.

    Например, процедура для открытия файла может иметь следующий вид:

    //Процедура открытия текстового файла

    //Задаём фильтр в окне проводника для файлов с типами txt и rtf

    Form1.OpenDialog1.Filter := 'Текстовые файлы (*.txt)|*.txt| Форматированный текст (*.rtf)|*.rtf;

    //открываем диалоговое окно для открытия файлов Form1.OpenDialog1.Execute();

    //Загружаем в поле RichEdit1 файл с именем, выбранным в окне проводника Form1.RichEdit1.Lines.LoadFromFile(Form1.OpenDialog1.FileName);
    Процедура сохранения файла в простейшем виде может иметь следующий вид:

    //Процедура сохранения файла в формате RTF Form1.SaveDialog1.Execute();

    RichEdit1.Lines.SaveToFile(SaveDialog1.FileName+'.rtf');

    В данном примере для задания файлу определённого обозначения типа файла использовано текстовое выражение, которое будет автоматически добавляться к имени файла, введённого пользователем при сохранении в поле Имя файла. Тип файла .rtf будет по умолчанию добавлен к имени любого сохраняемого файла.

    Для изменения параметров шрифта выделенного текста должно использоваться диалоговое окно Шрифт (компонент FontDialog).

    Один из вариантов программного кода может иметь вид:

    //Процедура изменения параметров шрифта Form1.FontDialog1.Execute();

    Form1.RichEdit1.SelAttributes.Color := Form1.FontDialog1.Font.Color; Form1.RichEdit1.SelAttributes.Name := Form1.FontDialog1.Font.Name; Form1.RichEdit1.SelAttributes.Style := Form1.FontDialog1.Font.Style; Form1.RichEdit1.SelAttributes.Size := Form1.FontDialog1.Font.Size;

    6. Контекстное меню - компонент PopupMenu в данном случае будет использовано только для компонента RichEdit. Для связывания этого меню с компонентом RichEdit необходимо в свойствах компонента RichEdit (или в дальнейшем для любого другого компонента при необходимости может быть создано своё контекстное меню) во вкладке Events в событии PopupMenu выбрать имя того, которое создано для данного компонента.

    Команды, необходимые для данного меню создаются в редакторе меню аналогично главному меню.

    Необходимо в это всплывающее меню включить следующие команды:

    Шрифт

    Копировать

    Вырезать

    Вставить

    Удалить выделение Удалить всё
    Так как по содержанию процедуры для этих команд абсолютно совпадают с процедурами соответствующих команд из текстового (главного) меню, то для того, чтобы исключить дублирование программного кода можно для каждой из этих команд компонента PopupMenu в свойствах объекта во вкладке Events в событии OnClick выбрать из списка соответствующую процедуру.

    7. Итогом должна быть работающая программа, с помощью которой можно отредактировать текст, задать параметры шрифта для отдельно выделяемых фрагментов, сохранить в файле на диске. Для выделенного текста команды форматирования, редактирования можно выполнять не только через текстовое меню, но и через контекстное меню.

    В Палитре компонентов Win32 имеется два элемента управления, обеспечивающих создание многостраничных блокнотов. Это компоненты TabControl и PageControl. Переключение между страницами осуществляется при помощи закладок. Закладки могут выглядеть как "настоящие" в бумажном блокноте, а могут быть похожи на стандартные кнопки Windows. Сама Палитра компонентов Delphi является примером использования такого элемента управления.

    Компонент TabControl отличается тем, что представляет собой как бы "виртуальный" блокнот. Это — единый объект с одной фактической страницей. При переключении закладок осуществляется вызов метода-обработчика события OnChange соответствующий код в котором может изменить набор видимых элементов управления и создать для пользователя иллюзию "переключения страниц".

    Компонент PageControl является контейнером для объектов TabSheet, соответствующих отдельным страницам блокнота. Страницы в нем могут нести каждая свой набор дочерних компонентов; их можно переключать уже во время разработки.

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

    Второй подход необходим, если у вас действительно разные страницы с различными наборами компонентов на них. Компонент PageControl используют для создания редакторов свойств и настроек программы, а также для разного рода мастеров (Wizards).

    Управление списком вкладок в компоненте TabControl выполняется с помощью свойства Tabs -редактора строк с именами вкладок.

    Управление списком вкладок в компоненте PageControl выполняется с помощью контекстного меню (правой кнопки мыши) на имени компонента в дереве компонентов или в конструкторе в самой формы на компоненте PageControl.

    Свойство

    Назначение

    Tablndex

    Задаёт номер текущей страницы, начиная с 0. Данное свойство позволяет программно переключать страницы и управлять их содержимым.

    TabHeight

    Задаёт высоту закладок в пикселях. При значении 0 высота определяется автоматически так, чтобы вместить текст.

    TabWidth

    Задаёт ширину закладок в пикселях. При значении 0 ширина определяется автоматически так, чтобы вместить текст.

    Style

    Определяет стиль закладок компонента:

    ■ tsTabs - стандартные вкладки;

    ■ tsButtons - объёмные вкладки, имитирующие кнопки;

    ■ tsFlatButtons - плоские вкладки.

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

    TabPosition

    Определяет положение закладок на компоненте.

    HotTrack

    При значении True названия страниц выделяются цветом при перемещении над ними указателя мыши.

    В практике разработки программ окна со вкладками используются весьма часто в диалоговых окнах для настройки параметров работы программ.

    Практическая часть.

    Ход работы.

    1. Создать новый проект.

    2. Для окна проекта задать следующие свойства:




    • Размер формы: ширина - 650 пикселей, высота - 500 пикселей.

    • Заголовок формы - Лабораторная работа № 7.

    • Для предотвращения изменения размера окна указанные размеры задать в свойстве Constraints формы.

    3. С использованием компонентов сконструировать интерфейс программы.


    В форму добавить два компонента: TabControl для создания окна с расчётами и PageControl для окна управления параметрами программных элементов.

    4. В окне для расчётов арендной стоимости с четырьмя вкладками (компонент TabControl) разместить поля для отображения числовых значений - площади, стоимости аренды 1 кв.м. и общей стоимости аренды. Для выполнения расчётов при загрузке программы использовать событие OnChange компонента TabControl и эту процедуру продублировать в компоненте Form в событии OnActivate. Числовые значения полей Арендуемая площадь, Стоимость аренды 1 кв.м. задавать в зависимости от выбранной вкладки компонента TabControl. Выбранная вкладка определяется по свойству TabIndex.

    5. Для управления интерфейсом использовать компонент PageControl с двумя вкладками. Во вкладке Интерфейс программы для выбора цвета формы можно использовать компонент ColorBox из палитры компонентов Additional.



    Для задания выбранного цвета из списка всей форме можно использовать свойство Selected списка ColorBox. Например,

    FormLColor := ColorBoxLSelected;

    Для выбора стиля окна использовать компонент RadioGroup. Свойство окна, задающее стиль окна -BorderStyle. Его значениями могут быть bsSizeable - Обычное и bsDialog - диалоговое.

    6. Для управления свойствами самих компонентов TabControl и PageControl использовать два компонента RadioGroup.



    Для расположения вкладок расчётного окна использовать два варианта - внизу и вверху. Для управления стилем вкладок окна управления (компонент PageControl) использовать три варианта.


    1   2   3   4   5   6   7   8   9   ...   12


    написать администратору сайта