Тула 2014 г


1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ

Изучение возможностей по отображению, вводу и редактированию текстовой информации в среде Borland Delphi.

2. ТЕОРЕТИЧЕСКИЕ ПОЛОЖЕНИЯ

В Delphi важную роль в операциях с текстовыми данными играет класс TStrings. Для отображения надписей служит компонент Label. Ввод и редактирование информации выполняются в специальных полях. При необходимости пользователь может изменить отображаемые данные. Для обеспечения возможности редактирования информации Delphi предлагает различные компоненты, например, Edit, MaskEdit, Memo и RichEdit.

Класс TStrings является базовым классом для объектов, которые представляют список строк. От класса TStrings происходит большое количество производных классов, например, TStringList. Для операций со строками класс TStrings предоставляет соответствующие свойства и методы, которые позволяют:

° добавлять и удалять строки с определенной позиции в списке;

° переставлять строки в списке;

° обеспечить доступ к строке в конкретном месте;

° читать строки из файла или записывать в файлы или потоки;

° сопоставлять объекты с каждой строкой в списке;

° хранить и искать строки.

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

Рассмотрим особенности и использование класса TStrings на примере свойства Items списков. Работа с другими объектами типа TStrings отличий не имеет.

Каждый элемент списка является строкой, к которой можно получить доступ по её номеру в массиве строк Items. Отсчёт элементов списка начинается с нуля. Для обращения к первому элементу нужно указать Items [0], ко второму – Items [1], к третьему – Items [2] и т. д.

Свойство Count задаёт число элементов в списке. Поскольку первый элемент списка имеет нулевой номер, то номер последнего элемента Count -1.

Методы Add и Insert служат для добавления и вставки, соответственно, строк в список. Функция Add (const S: String): Integer добавляет заданную параметром S строку в конец списка, а процедура Insert (Index: Integer; const S: String) вставляет строку S на позицию с номером, определяемым параметром Index. При вставке строки элементы списка, находившиеся до операции вставки в указанной позиции и ниже, смещаются вниз.

Для удаления элементов списка используются методы Delete и Clear. Процедура Delete (Index: Integer) удаляет элемент с номером, заданным параметром Index, а процедура Clear очищает список, удаляя все его элементы.

Поиск элемента в списке можно выполнить с помощью метода IndexOf. Процедура IndexOf (const S: String): Integer определяет, содержится ли строка S в списке. В случае успешного поиска процедура возвращает номер позиции найденной строки в списке. Если строковый элемент не найден, то возвращается значение -1.

Класс TStrings имеет методы SaveToFile и LoadFromFile, позволяющие непосредственно работать с текстовыми файлами. Процедура SaveToFile (const FileName: String) сохраняет строковые элементы списка в файле FileName. Если заданный файл отсутствует на диске, то он создается. Процедура LoadFromFile (const FileName: String) заполняет список содержимым указанного текстового файла, при этом предыдущее содержимое списка очищается.

При конструировании приложения изменение списка строк выполняется с помощью Редактора списка строк – String List Editor (рис. 1). Его вызов выполняется через Инспектор объектов двойным щелчком мыши в области значения свойства типа TStrings. Редактор списка строк позволяет добавлять строки в список, удалять их из списка и изменять содержимое имеющихся строк.

Рис. 1. Редактор списка строк

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

Для управления автоматической коррекцией размеров компонента Label в зависимости от текста надписи служит логическое свойство AutoSize. Если свойство имеет значение True (по умолчанию), то компонент Label изменяет свои размеры соответственно содержащемуся в нём тексту, заданному в свойстве Caption.

Способ выравнивания текста внутри компонента Label задаёт свойство Alignment, которое может принимать одно из значений:

° taLeftJustify (выравнивание по левому краю);

° taCenter (выравнивание по центру);

° taRightJustify (выравнивание по правому краю).

Управлять автоматическим переносом слов, не умещающихся по ширине, на другую строку можно с помощью логического свойства Wordwrap. При этом следует учитывать, что если свойство AutoSize имеет значение True, то свойства Alignment и Wordwrap не действуют.

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

Для отображения нередактируемого текста также используют компонент StaticText, расположенный на странице Additional Палитры компонентов. По функциональному назначению Label и StaticText практически не отличаются. Однако компонент StaticText является наследником класса TwinControl и может отображаться в рамке, вид которой определяется его свойством BorderStyle.

Однострочный редактор, или поле редактирования, представляет собой поле ввода текста, в котором возможно отображение и изменение текста. В среде Delphi имеется несколько однострочных редакторов, из них наиболее часто используется компонент Edit, находящийся на странице Standard Палитры компонентов.

Компонент Edit позволяет вводить и редактировать с клавиатуры различные символы, при этом поддерживаются операции, такие как перемещение по строке с использованием клавиш управления курсором, удаление символов с помощью клавиш BackSpace и Delete, выделение части текста и др. Отметим, что у однострочного редактора отсутствует реакция на управляющие клавиши Enter и Esc.

Центральным свойством компонента является свойство Text, которое содержит отображаемую компонентом строку.

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

В следующем примере для редактора Edit1 установлено разрешение ввода только десятичных цифр:

procedure TForm1.Edit1KeyPress (Sender:TObject; var Key:Char);

begin

if (Key < '0') or (Key > '9') then Key:= #0;

end;

Компонент MaskEdit, расположенный на странице Additional Палитры компонентов, также является однострочный редактор, но по сравнению с компонентом Edit он имеет возможность ограничения вводимой информации по шаблону (маске). С помощью шаблона можно ограничить число вводимых пользователем символов и тип вводимых символов (алфавитный, цифровой и т. д.). Кроме того, во вводимую информацию можно вставить дополнительные символы (разделители при вводе даты, времени и т. п.). Шаблон задаётся свойством EditMask.

Рис. 2. Шаблон маски и её вывод

Свойство EditText содержит текст до наложения на него маски ввода (т.е. то, что ввёл пользователь), а свойство Text может (в зависимости от шаблона) содержать либо исходный текст, либо результат наложения на него маски.

Шаблон состоит из трех частей (рис. 2), отделенных друг от друга символами точки с запятой (;). Первая часть задаёт маску ввода, вторая – это символ 0 или 1, определяющий, нужно ли записывать в свойство Text результат наложения маски (1) или требуется оставить исходный текст (0). В третьей части указывается символ, который в поле с маской ввода будет присутствовать в местах, предназначенных для ввода символов (текст в поле может содержать символы маски).

Маска состоит из описателей мест ввода, специальных символ и литералов. Описатель указывает, какой именно символ может ввести пользователь в данное место (описатель всегда указывает место для одного символа). Литерал вставляется в текст, показываемый в окне редактора, но при вводе курсор перескакивает через литерал и не даёт пользователю возможности изменить его.

Описатели мест ввода маски
L Должно содержать букву
l Может содержать букву
А Должно содержать букву или цифру
a Может содержать букву или цифру
C Должно содержать любой символ
c Может содержать любой символ
  Должно содержать цифру
  Может содержать цифру
# Может содержать цифру, а также знаки + и -
Специальные символы маски
\ Следующий символ – литерал. Позволяет вставлять в маску символы, относящиеся к описателям мест ввода и специальным символам
: На это место вставляется символ-разделитель Windows для часов, минут, секунд
/ На это место вставляется символ-разделитель Windows для полей даты
; Разделитель частей шаблона
! Подавляет все начальные пробелы
> Все следующие за этим символом места ввода преобразуют буквы в прописные
< Все следующие за этим символом места ввода преобразуют буквы в строчные
<> Отменяет преобразование букв

Для работы с многострочным текстом Delphi предоставляет компонент Memo, расположенный на странице Standard Палитры компонентов. Многострочный редактор имеет практически те же возможности по редактированию текста, что и однострочные. Главное его отличие в том, что он содержат несколько строк текста.

Для доступа ко всему содержимому многострочного редактора используется свойство Text. В этом случае всё содержимое компонента Memo представляется одной строкой, а конец строки, вставляемый при нажатии клавиши Enter, записывается двумя кодами #13#10, поэтому видимых пользователем символов будет меньше, чем их содержится в строке Text. Эту особенность нужно учитывать, например, при определении позиции заданного символа в какой-либо строке компонента Memo. Для работы с отдельными строками используется свойство Lines.

Содержимое компонента Memo можно загружать из текстового файла и сохранять в текстовом файле.

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

° ssNone – полосы прокрутки отсутствуют (по умолчанию);

° ssHorizontal – горизонтальная полоса прокрутки снизу;

° ssVertical – вертикальная полоса прокрутки справа;

° ssBoth – есть обе полосы прокрутки.

Текст в поле компонента Memo может быть выровнен различными способами. Способ выравнивания определяет свойство Alignment.

В отличие от однострочного редактора, компонент Memo обладает возможностью реакции на нажатие клавиши Enter. Чтобы при этом происходил ввод новой строки, свойству WantReturns должно быть установлено значение True (по умолчанию).

Аналогично значение свойства WantTabs определяет реакцию компонента на нажатие клавиши Таb. Если свойство установлено в значение True, то при нажатии клавиши Таb в текст вставляются символы табуляции. По умолчанию свойство WantTabs имеет значение False, и при нажатии клавиши Таb редактор передаёт фокус ввода следующему оконному элементу управления.

Компонент RichEdit, расположенный на странице Win32 Палитры компонентов, является компонентом редактирования с форматированием текста и поддерживает выравнивание, табуляцию, применение отступов, изменение гарнитуры и др. Текст, содержащийся в этом элементе, совместим с форматом RTF, поддерживаемым многими текстовыми процессорами в среде Windows.

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

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

Для указания максимального количества символов, которые допускается вводить в поле редактирования, можно использовать свойство MaxLength. При этом ограничение на длину текста относится к вводу со стороны пользователя, а программно можно ввести большее. По умолчанию длина вводимого пользователем текста не ограничена (MaxLength = 0).

Свойства AutoSelect, SelStart, SelLength и SelText позволяют работать с выделенным фрагментом текста. Эти свойства доступны не только для чтения, но и для записи текста.

Логическое свойство AutoSelect определяет, будет ли автоматически выделен текст в поле редактирования при получении последним фокуса ввода.

Значение свойства SelText определяет выделенный фрагмент. При отсутствии выделенного текста значением свойства является пустая строка.

Свойства SelStart и SelLength задают начальную позицию в строке (отсчёт символов начинается с нуля) и длину выделенного фрагмента соответственно. Свойства SelStart и SelLength взаимозависимы.

Кроме свойств, для операций с выделенным фрагментом текста используются также методы SelectAll, CopyToClipBoard и CutToClipBoard.

Метод SelectAll выделяет весь текст в элементе редактирования.

Метод CopyToClipBoard копирует, a CutToClipBoard вырезает в буфер обмена выделенный фрагмент текста. Для работы с буфером обмена имеется также метод PasteFromClipBoard, вставляющий текст из буфера обмена в текущую позицию курсора в поле редактирования. Если имеется выделенный фрагмент, то вставляемый текст заменяет его.

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

Основное назначение полей редактирования – ввод и изменение текста, однако их можно использовать и для отображения нередактируемого текста, например, при выводе справочной информации. С этой целью нужно установить соответствующие значения свойств ReadOnly или Enabled.

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

Простой список представляет собой прямоугольную область, в которой располагаются его строковые элементы. Для работы с простым списком в среде Delphi предназначен компонент ListBox, расположенный на странице Standard Палитры компонентов. Если количество строк больше, чем их может поместиться в видимой области списка, то у области отображения появляется полоса прокрутки. Ориентация полосы прокрутки, а также число столбцов, которые одновременно видны в области списка, зависят от свойства Columns. По умолчанию свойство имеет значение 0 (все элементы списка расположены в одном столбце, и при необходимости автоматически появляется полоса прокрутки).

Если свойство Сolumns имеет значение, большее 0, то в области списка всегда присутствует горизонтальная полоса прокрутки, а элементы разбиваются на такое число столбцов, чтобы можно было, прокручивая список по горизонтали, просмотреть все его элементы. При этом в видимой области списка отображается число столбцов, равное значению свойства Columns.

Стиль простого списка определяет свойство Style, принимающее значения:

° lbStandard – стандартный стиль (по умолчанию);

° lbOwnerDrawFixed – список с элементами фиксированной высоты, устанавливаемой свойством ItemHeight;

° lbOwnerDrawVariable – список с элементами, которые могут иметь разную высоту.

Если стиль списка отличен от значения lbStandard, то за прорисовку элементов списка отвечает программист. Для этих целей используются графические возможности Delphi.

Список может иметь рамку. Наличие рамки определяет свойство BorderStyle, принимающее два возможных значения:

° bsNone – рамки нет;

° bsSingle – рамка есть (по умолчанию).

Комбинированный список объединяет поле редактирования и список. Пользователь может выбирать значение из списка или вводить его непосредственно в поле. В Delphi для работы с комбинированным списком служит компонент ComboBox, расположенный на странице Standard Палитры компонентов.

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

Свойство Style, определяющее внешний вид и поведение комбинированного списка, может принимает значения:

° csDropDown – раскрывающийся список с полем редактирования (по умолчанию): пользователь может выбирать элементы в списке (при этом выбранный элемент появляется в поле ввода) или вводить (редактировать) информацию непосредственно в поле ввода;

° csSimple – поле редактирования с постоянно раскрытым списком (для того чтобы список был виден, необходимо увеличить высоту компонента ComboBox);

° csDropDownList – раскрывающийся список, допускающий выбор элементов в списке;

° csOwnerDrawFixed – список с элементами фиксированной высоты, задаваемой свойством ItemHeight;

° csOwnerDrawVariable – список с элементами, которые могут иметь разную высоту.

Если стиль списка имеет значение csOwnerDrawFixed или csOwnerDrawVariable, то за прорисовку элементов списка отвечает программист.

Свойство DropDownCount определяет количество строк, которые одновременно отображаются в раскрывающемся списке. Если значение свойства превышает число строк списка, определяемое значением подсвойства Count свойства Items, то у раскрывающегося списка автоматически появляется вертикальная полоса прокрутки. Если размер списка меньше, чем задано в свойстве DropDownCount, то отображаемая область списка автоматически уменьшается.

Логическое свойство DroppedDown позволяет определить, раскрыт ли список. Если свойство имеет значение True, то список отображается в раскрытом виде, в противном случае список свернут.

При работе с комбинированным списком генерируются следующие события: OnDropDown (открытие списка); onCloseUp (закрытие списка); OnSelect (выбор элемента); onChange (изменение текста в поле редактирования).

Общая характеристика списков. Простой и комбинированный списки во многом похожи друг на друга и имеют много общих свойств, методов и событий. Основным для списков является свойство Items, которое представляет собой коллекцию (массив) строк.

Элементы списка можно отсортировать в алфавитном порядке. Наличие или отсутствие сортировки определяет логическое свойство Sorted. При значении False этого свойства (по умолчанию) элементы в списке располагаются в порядке их поступления в список. Если же свойство Sorted имеет значение True, то элементы автоматически сортируются по алфавиту в порядке возрастания.

Пользователь может выбирать отдельные строки списка с помощью мыши и клавиатуры. Выбранный в списке элемент определяется свойством ItemIndex. При анализе номеров строк нужно иметь в виду, что отсчет начинается с нуля, поэтому, например, 7-я строка имеет номер 6.

По умолчанию в списке можно выбрать один элемент. Для выбора двух и более элементов логическое свойство MultiSelect, управляющее возможностью выбора нескольких строк, устанавливается в значение True. По умолчанию свойство MultiSelect имеет значение False.

В случае, когда список поддерживает возможность выбора нескольких строк, логическое свойство ExtendedSelect управляет способом выбора нескольких элементов. Когда свойство ExtendedSelect имеет значение False, добавить к выбранной группе очередной элемент можно только с помощью мыши. При этом первый щелчок мыши на строке выбирает её, а повторный щелчок отменяет выбор строки. Если свойство ExtendedSelect имеет значение True (по умолчанию), то в дополнение к мыши можно выбирать элементы с помощью клавиш Shift и Ctrl.

Поскольку комбинированный список допускает одновременный выбор только одного элемента, у него нет свойств MultiSelect и ExtendedSelect.

Число выбранных элементов в списке возвращает свойство SelCount. Для определения номеров выбранных строк можно просмотреть значения свойства Selected [ Index: Integer ], представляющего собой массив логических значений. Если строка с номером Index выбрана, то её признак Selected принимает значение True и наоборот, если строка не выбрана, то признак Selected имеет значение False. Свойства SelCount и Selected обычно используются для списков, поддерживающих множественный выбор элементов.

При выборе элемента списка происходит событие OnClick, которое можно использовать для обработки выбранных строк.

Работа с компонентом RichEdit

Компонент для редактирования многострочных данных RichEdit (страница Win32 Палитры компонентов) предоставляют пользователю возможность просмотра и изменения текстовой информации с поддержкой форматирования. Он позволяет работать с текстовыми данными в формате RTF, принятым в операционной системе Windows за основу в обмене текстовой информацией между приложениями.

Компоненты RichEdit и Memo имеют много общих свойств и методов.

Свойства:

· Alignment – выравнивания текста, может принимать значения:

¨ taCenter – выравнивание по центру;

¨ taLeftJustify – выравнивание по левому краю;

¨ taRightJustify – выравнивание по правому краю.

В компоненте RichEdit выравнивание текста может задаваться еще и для каждого абзаца индивидуально, поэтому не рекомендуется использование это свойство, поскольку теряется форматирование, специфичное для каждого абзаца;

· CanUndo – определить, готов ли компонент произвести отмену действий, во время выполнения программы;

· Font – установка шрифта. Характеристики шрифта в компоненте RichEdit могут быть установлены для каждого символа в отдельности, свойство Font для этого не используется;

· MaxLength – максимальная длина вводимого в компонент текста;

· Lines – массив строк в редакторе;

· ReadOnly – запрет на изменение информации в компоненте;

· WantTabs – указывают, может ли пользователь вводить в качестве текстовой информации символы табуляции. Если свойство WantTabs имеет значение False, то при нажатии пользователем во время редактирования текста клавиши Tab это действие будет рассматриваться системой как попытка переключения фокуса ввода между оконными компонентами данной формы. При значении True свойства WantTabs нажатие клавиши Tab приведет к вставке символа табуляции в текст;

· WantReturns – указывают, может ли пользователь вводить в качестве текстовой информации символы перевода строки. Если свойство WantReturns имеет значение False, то нажатие пользователем клавиши Enter будет игнорироваться, иначе в многострочном редакторе будет появляться новая строка.

· WordWrap – указывает на необходимость автоматического разбиения текста на строки с учетом ширины компонента.

Методы:

· SaveToFile и LoadFromFile – сохранение и загрузка файла. У компонента RichEdit, в отличие от компонента Memo, эти методы используют формат RTF;

· Undo – отмена действия.

Использование форматирования. Параметры отображения текста в компоненте RichEdit устанавливаются двумя способами – для текущего абзаца и для текущего выделения. Абзацем называется одна строка текста с точки зрения её внутреннего представления, т. е. строка, не разделённая символами перевода строки. При этом на экране абзац может отображаться в несколько строк. Выделение может включать в себя целый абзац, его часть, несколько абзацев и вообще весь документ.

Доступ к атрибутам абзаца осуществляется через свойство Paragraph, имеющее свойства:

· Alignment – аналогично свойству Alignment самого компонента, однако применяется только к текущему абзацу;

· FirstIndent – смещение первой строки абзаца относительно левого края компонента;

· LeftIndent – смещение абзаца относительно его первой строки для организации "красных" строк;

· RightIndent – расстояние от правой части компонента до правой части абзаца;

· Numbering – указывает, является ли данный абзац элементом в списке (nsBullet) или обычным абзацем (nsNone). Список состоит из нескольких абзацев, помеченных у левой границы специальным символом.

Свойство SelAttributes определяет настройки шрифта и применяется к выделенному фрагменту текста. Выделение фрагмента текста устанавливается пользователем с помощью мыши или клавиатуры. SelAttributes имеет ряд свойств:

· Charset – множество символов шрифта;

· Color – цвет текста;

· Height – высота шрифта в пикселях;

· Name – шрифт;

· Protected – определяет, является ли текст защищённым от изменений;

· Size – размер шрифта в кеглях;

· Style – стиль шрифта:

¨ fsBold – полужирный;

¨ fsItalic – курсивный;

¨ fsUnderline – подчеркнутый;

fsStrikeOut – перечеркнутый.

3. ОБЪЕКТЫ ИССЛЕДОВАНИЯ, ОБОРУДОВАНИЕ, МАТЕРИАЛЫ И НАГЛЯДНЫЕ ПОСОБИЯ

3.1. IBM – совместимый компьютер.

3.2. Установленная операционная система Windows.

3.3. Установленное приложение Borland Delphi.

3.4. Справочная система приложения Borland Delphi.

4. ЗАДАНИЕ НА РАБОТУ

4.1. Изучение теоретические положения работы по программированию в среде Borland Delphi.

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

5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ

5.1. Ознакомиться с теоретическими положениями данной лабораторной работы.

5.2. Выполнить индивидуальное задание преподавателя по программированию.

Задание 1

20. Запустите Delphi. Создайте новый проект.

21. Назовите форму MainForm с заголовком Главная. Для формы задайте:

· размер – 800х600;

· минимальный размер – 400х300;

· максимальный размер – 1000х800.

22. Сохраните проект в папку D:\Users\...\Lab7\....

23. На форме создайте:

a. первую панель высотой 50, сделайте, чтобы она выравнивалась по верхнему краю;

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

c. вторую панель высотой 50, сделайте, чтобы она выравнивалась по нижнему краю;

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

e. многострочный редактор, назовите его MMemo, сделайте, чтобы он занимал всю оставшуюся фору.

24. Создайте на форме главное меню с пунктами Ввод данных, О программе и Закрыть.

25. Сделайте так, чтобы при выборе меню Закрыть окно закрывалось, задайте для данного меню комбинацию клавиш Ctrl+E.

26. На первой панели по центру создайте надпись Информация. Измените размер и цвет надписи.

27. Создайте вторую форму размером 400х600. Назовите форму PersonForm с заголовком Персональные данные.

28. На форме Персональные данные создайте:

a. первую панель высотой 100, сделайте, чтобы она выравнивалась по нижнему краю;

b. разделитель шириной 10, сделайте, чтобы он выравнивался по нижнему краю;

c. вторую панель, измените её цвет и сделайте, чтобы она занимал всю оставшуюся фору.

29. На второй панели создайте:

a. три пустых однострочных редактора. Для них создайте заголовки Фамилия, Имя и Отчество;

b. комбинированный список с раскрывающим списком, содержащий название нескольких город. По умолчанию должен быть выбран первый элемент списка. Для списка создайте заголовок Место рождения.

c. поле с маской ввода для ввода даты вида: хх.хх.хххх. Для поля создайте заголовок Дата рождения.

30. На первой панели создайте:

a. графическую кнопку с предопределённым видом Close;

b. кнопки Очистить и Добавить.

31. При нажатие кнопки Очистить поля для ввода данных на форме Персональные данные должны очищаться, для этого в процедуру обработки для кнопки введите код:

Edit1.Clear;

Edit2.Clear;

ComboBox1.ItemIndex:= 0;

(допишите)

32. При нажатие кнопки Добавить данные из формы Персональные данные должна добавляться в редакторе на форме Главная, для этого в процедуре обработки для кнопки введите код:

Inf:= Edit1.Text + ' ' + Edit2.Text + ' ' + Edit3.Text + ' родился (ась) в г. ' + ComboBox1.Text + ' ' + MaskEdit1.Text + ' года';

MainForm.MMemo.Lines.Add(Inf);

33. Создайте третью форму размером 400х400. Назовите форму AboutForm с заголовком О программе.

34. На форме напишите своё Ф.И.О., группу, № лабораторной работы, год.

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

36. На форме Главная сделайте, чтобы при выборе меню:

a. Ввод данных открывалась форма Персональные данные;

b. О программе открывалась форма О программе.

37. На форме Главная на второй панели:

a. создайте 5 кнопок с заголовками Очистить, Выделить всё, Копировать, Вырезать и Вставить;

b. для кнопок создайте подсказки: "Очистить редактор", "Выделить всё в редакторе", "Копировать в буфер", "Вырезать в буфер" и "Вставить из буфера";

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

38. Сохраните и запустите проект на выполнение.

39. Закройте Delphi.

Задание 2

1. Запустите Delphi. Создайте новый проект.

2. Назовите форму MainForm с заголовком Главная.

3. Сохраните проект в папку D:\Users\...\Lab10\....

4. На форме создайте:

- панель инструментов ControlBar (страница Additional Палитры компонентов) высотой 60, сделайте, чтобы она выравнивалась по верхнему краю;

- панель высотой 50, сделайте, чтобы она выравнивалась по нижнему краю;

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

5. На панели инструментов создайте:

- панель высотой размером 450х48, назовите её fPanel;

- панель высотой размером 500х48, назовите её pPanel;

- кнопку с заголовком О программе.

6. На панели fPanel:

- создайте надпись Размер шрифта;

- рядом с надписью создайте комбинированный список размером 42´21, назовите его fsComboBox;

- в комбинированный список введите значения 8, 10,12, 14, 16, 18, 20, 24, 28, 32. Сделайте, чтобы по умолчанию было значение 10;

- сделаем, чтобы при выборе значения из списка, выделенный текст принимал соответствующий размер. Для этого в процедуру обработки события onChange комбинированного списка введите код:

RichEdit1.SelAttributes.Size:= StrToInt (fsComboBox.Text);

- создайте надпись Цвет шрифта;

- рядом с надписью создайте комбинированный список размером 80х21, назовите его fcComboBox;

- в комбинированный список введите названия нескольких цветов. Сделайте, чтобы по умолчанию был выбран чёрный цвет;

- сделайте, чтобы при выборе значения из списка, выделенный текст принимал соответствующий цвет;

- создайте четыре кнопки быстрого доступа размером 20х20, с заголовками Ж, К, П, З, назовите их butBolt, butItalic, butUnderline, butStrikeOut;

- для кнопок создайте подсказки "Полужирный", "Курсивный", "Подчеркнутый", "Перечеркнутый";

- запрограммируем кнопку butBolt, чтобы при её нажатии выделенный текст становился полужирным, если таким не был, а если был, то отменялось, для этого в процедуру обработки для кнопки введите код:

if (fsBold in RichEdit1.SelAttributes.Style) then

RichEdit1.SelAttributes.Style:=

RichEdit1.SelAttributes.Style-[fsBold]

else

RichEdit1.SelAttributes.Style:= RichEdit1.SelAttributes.Style+[fsBold];

- аналогично запрограммируйте кнопки butItalic, butUnderline и butStrikeOut.

7. На панели pPanel:

- создайте надпись Отступ слева;

- рядом с надписью создайте счётчик SpinEdit размером 40х22, назовите его lpSpinEdit;

- сделаем, чтобы при изменении счётчика соответствующе изменялось смещение абзаца слева, для этого в процедуру обработки события onChange счётчика введите код:

RichEdit1.Paragraph.FirstIndent:= lpSpinEdit.Value;

- аналогично сделайте для создания отступа справа и красной строки;

- создайте кнопку с заголовком Список. Запрограммируйте кнопку, чтобы при её нажатии абзац становился списком, а список – обычным абзацем.

8. На нижней панели:

- создайте 6 кнопок с заголовками Отмена, Очистить, Выделить всё, Копировать, Вставить, Закрыть;

- для кнопок создайте подсказки "Отмена последнего действия", "Очистить редактор", "Выделить всё в редакторе", "Копировать в буфер", "Вставить из буфера" и "Закрыть программу", соответственно;

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

9. Создайте вторую форму размером 400х400. Назовите форму AboutForm с заголовком О программе. На форме:

- напишите своё Ф.И.О., группу, № лабораторной работы, год. Измените цвет и размер шрифта;

- создайте графическую кнопку с предопределённым видом Close.

10. На форме Главная сделайте, чтобы при нажатии на кнопку О программе открывалась соответствующая форма.

11. Сохраните и запустите проект на выполнение.

Закройте Delphi.

5.3. Оформить отчет по работе.

5.4. Защитить лабораторную работу путем ответа на вопросы преподавателя.

6. СОДЕРЖАНИЕ ОТЧЕТА

6.1. Описание цели работы.

6.2. Основные теоретические положения работы

6.3. Содержание индивидуального задания преподавателя по программированию.

6.4. Описание методики выполнения индивидуального задания.

7. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

7.1. Delphi 7: [наиболее полное руководство] / А. Д. Хомоненко [и др.];под общ.ред.А.Д.Хомоненко.— СПб.: БХВ - Петербург, 2007.— 1216с.: ил. (7 экз.)

7.2. Программирование в Delphi 7 / П. Г. Дарахвелидзе, Е. П.Марков.— СПб.: БХВ -Петербург, 2004.— 784c.: ил. (1 экз.)

7.3. Осипов Д. Delphi. Профессиональное программирование. - СПб.: Символ-Плюс, 2006. -1056 с., ил.


Министерство образования и науки Российской Федерации

Федеральное государственное бюджетное образовательное учреждение

высшего профессионального образования

«Тульский государственный университет»

Политехнический институт

Кафедра «Сварка, литье и технология конструкционных материалов»


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: