Практически все Windows-приложения имеют меню, которое является распространенным элементом пользовательского интерфейса. Меню представляет собой список объединенных по функциональному признаку пунктов, каждый из которых обозначает команду или вложенное меню. Выбор пункта меню равносилен выполнению соответствующей команды или раскрытию подменю.
Обычно в приложении есть главное меню и несколько контекстных (локальных) меню. Главное меню используется для управления работой всего приложения, каждое из контекстных меню служит для управления отдельным интерфейсным элементом.
Главное меню располагается в верхней части формы под ее заголовком и содержит наиболее общие команды приложения. В Delphi главное меню представлено компонентом MainMenu .
Основное свойство компонента – Items. Его заполнение производится с помощью Конструктора меню (рис. 17), который вызывается двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне Инспектора объектов.
Для того чтобы создать новый пункт меню, надо поместить курсор в рамку из точек, при этом в Инспекторе объектов отобразится множество свойств и событий данного раздела.
Свойство Bitmap определяет изображение пиктограммы, размещаемое слева от заголовка пункта меню. По умолчанию свойство имеет значение nil, и изображение отсутствует.
Свойство Caption содержит строку, отображаемую как заголовок пункта меню. Если в качестве заголовка указать символ «-», то на месте соответствующего пункта меню отображается разделительная линия.
Свойство Enabled определяет, активен ли пункт меню, т.е. будет ли он реагировать на события от клавиатуры и мыши. Если свойству Enabled присвоено значение false, то пункт меню неактивен, и его заголовок обесцвечен. По умолчанию свойство Enabled имеет значение true, и пункт меню активен.
Основным событием, связанным с пунктом меню, является событие OnClick, возникающее при выборе пункта с помощью клавиатуры или мыши.
Для создания подменю нужно щелкнуть на пункте меню правой кнопкой мыши и в контекстном меню выбрать пункт Create Submenu.
Контекстное (всплывающее) меню появляется при нажатии правой кнопки мыши и размещении указателя на форме или в области некоторого управляющего элемента (рис. 18). Обычно контекстное меню содержит команды, влияющие только на тот объект, для которого вызвано это меню.
Контекстному меню соответствует компонент PopupMenu . Поскольку в приложении может быть несколько контекстных меню, то и компонентов PopupMenu может быть несколько.
Формирование контекстного меню происходит с помощью Конструктора меню.
Для того чтобы контекстное меню появлялось при щелчке на компоненте, необходимо его свойству PopupMenu этого компонента присвоить в качестве значения имя требуемого контекстного меню.
Лабораторное задание
Написать программу для редактирования текста, реализующую следующие функции:
изменение параметров выделенного текста (размер, цвет, стиль, выравнивание) – с помощью кнопок, списков и переключателей;
сохранение в файл и открытие из файла.
Программа должна иметь главное и контекстное меню.
Указания по оформлению отчета
Отчет должен содержать:
наименование и цель работы;
краткие теоретические сведения;
задание на лабораторную работу;
результаты выполнения лабораторной работы.
контрольные вопросы
Какие компоненты Delphi предназначены для работы с многострочным текстом?
Чем Memo отличается от RichEdit? Какие свойства и методы имеют эти компоненты?
Для чего предназначены списки строк?
Что такое переключатели? Какие они бывают?
С помощью каких компонентов можно реализовать открытие и сохранение файла?
Чем отличается главное меню от контекстного?
Общие указания по выполнению лабораторной работы
Цель работы
Изучение основных правил построения баз данных и разработки приложений с использованием компонентов, предназначенных для связи с базой данных и отображения содержимого таблиц.
Используемое оборудование и программное обеспечение
Для выполнения лабораторной работы требуется ПЭВМ типа IBM PC с ОС Windows 2000 и выше, среда разработки Borland Delphi 7 или Borland C++ Builder.
Домашнее задание и методические указания по его выполнению
Принципы построения баз данных
Всегда, когда возникает потребность манипулировать большими массивами данных, используются базы данных (БД).
БД состоит из таблиц с характеристиками (атрибутами) какого-то множества объектов. Таблица имеет имя – идентификатор, по которому на нее можно сослаться.
Столбцы таблицы (или поля) соответствуют тем или иным характеристикам объектов. Для каждого поля задается имя и тип данных. Имя поля – идентификатор, который используется в различных программах для манипуляции с данными. Он строится по тем же правилам, как и любой идентификатор (пишется латинскими буквами без пробелов).
Тип поля характеризует тип хранящихся в поле данных. Это могут быть строки, числа, логические значения, большие тексты и т.д.
Каждая строка таблицы соответствует одному из объектов. Она называется записью и содержит значения всех полей, характеризующие данный объект.
При построении таблиц БД важно обеспечивать непротиворечивость информации. Обычно это делается введением ключевых полей, делающих каждую запись уникальной. Ключевым может быть одно или несколько полей.
При работе с таблицей пользователь или программа как бы скользит курсором по записям. В каждый момент времени есть некоторая текущая запись, с которой и ведется работа. Записи в таблице базы данных физически могут располагаться без какого-либо порядка, просто в последовательности их ввода. Но когда данные таблицы предъявляются пользователю, они должны быть упорядочены (в алфавитном порядке, по мере нарастания значения каких-либо полей и т. д.). Для упорядочивания данных используется понятие индекса. Индекс показывает, в какой последовательности желательно просматривать таблицу.
БД обычно содержит не одну, а множество таблиц. В этом случае одна из них является главной и связывается с каждой из вспомогательных таблиц посредством ключа – поля, присутствующего в обеих таблицах.
Для того чтобы при работе с БД не указывать каждый раз путь ее физического расположения, используются псевдонимы, содержащие всю информацию, необходимую для обеспечения доступа к БД. В этом случае при перемещении БД достаточно просто изменить путь, на который указывает псевдоним.
Системы управления базами данных (СУБД) – это программные средства, предназначенные для создания, наполнения, обновления и удаления БД.
Delphi и C++ Builder обеспечивают поддержку большого количества различных СУБД с помощью специальных инструментальных средств и компонентов, предназначенных для создания приложений, осуществляющих операции с БД.
К инструментальным средствам Delphi относятся:
Borland Database Engine (BDE) – процессор БД, который представляет собой набор динамических библиотек и драйверов, предназначенных для организации доступа к БД из Delphi-приложений; BDE поддерживает SQL – стандартизованный язык запросов, позволяющий обмениваться данными с SQL-серверами;
BDE Administrator – утилита для настройки различных параметров BDE;
Database Desktop – утилита создания и редактирования таблицы БД и SQL-запросов;
SQL Builder – утилита для визуального конструирования SQL-запросов и т.д.
Для запуска Database Desktop из среды Delphi используется команда Tools / Database Desktop.
Процесс создания новой таблицы начинается вызовом команды File / New / Table (Файл / Новая / Таблица) и происходит в интерактивном режиме. При этом разработчик должен:
выбрать формат (тип) таблицы;
задать структуру таблицы.
В начале создания новой таблицы в окне Create Table выбирается ее формат (рис. 19). По умолчанию предлагается формат таблицы Paradox 7. Для таблиц других форматов действия по созданию таблицы практически не отличаются.
После выбора формата таблицы появляется окно определения структуры таблицы, в котором выполняются следующие действия:
описание полей;
задание ключа;
задание индексов;
определение ограничений на значения полей;
задание паролей и т. д.
Обязательным является только создание полей, т. к. каждая таблица должна иметь хотя бы одно поле. Остальные действия выполняются при необходимости.
Для каждого поля задаются следующие параметры:
имя – в столбце Field Name;
тип – в столбце Type;
размер – в столбце Size.
Тип поля можно выбрать из списка (рис. 20), раскрываемого при выборе команды Type в контекстном меню или при нажатии клавиши Пробел. Список содержит все типы полей, допустимые для заданного формата таблицы. Кроме того, в поле Type можно непосредственно указать соответствующий символ (А – для символьного, I – для целочисленного и т. д.).
Размер поля задается не всегда, необходимость его указания зависит от типа поля. Например, для полей автоинкрементного или целочисленного типа размер не задается. Для строковых полей размер определяет максимальное число символов, которые могут храниться в поле.
Добавление к списку полей новой строки выполняется переводом курсора вниз на несуществующую строку, в результате чего эта строка появляется в конце списка. Вставка новой строки между уже существующими выполняется нажатием клавиши Insert. Для удаления строки необходимо установить курсор на эту строку и нажать комбинацию клавиш Ctrl + Delete.
Для указания ключевых полей в столбце ключа (Key) нужно установить символ *, переведя в эту позицию курсор и нажав любую алфавитно-цифровую клавишу. При повторном нажатии клавиши отметка о принадлежности поля ключу снимается. В структуре таблицы ключевые поля должны быть первыми, т. е. верхними в списке полей. Часто для ключа используют автоинкрементное поле (рис. 21).
Для значений, вводимых в поля таблицы, можно задать следующие ограничения:
требование обязательного ввода значения;
минимальное значение;
максимальное значение;
значение по умолчанию;
маска ввода.