- •Содержание
- •Введение
- •Лабораторная работа № 13 Создание простых форм. Программирование кнопок
- •Теоретические сведения Назначение и состав окон для визуальной разработки по в Delphi 7
- •Объект tForm(форма)
- •Объект tLabel (текстовое поле)
- •Объект tButton (кнопка)
- •Преобразование типов
- •Метод установления фокуса
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 14 Интерактивный ввод и вывод. Обработка исключительных ситуаций
- •Теоретические сведения Компонент tEdit (поле редактирования)
- •Компонент tRadioButton (переключатель)
- •Пример 14.1. При нажатии на кнопки «Ответ» в окне появляется строка, соответствующая выбранному переключателю (рис. 14.1)
- •Обработка события, вызванного нажатием на кнопку, имеет такой вид:
- •Процедуры и функции, реализующие диалоговые окна
- •Обработчики исключений
- •Пример 14.2. Вычислить значение функции . Экранная форма программы показана на рис. 14.5.
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 15 Программирование циклов. Компоненты: флажок, группа компонентов, главное меню, контекстное меню, список действий, область просмотра
- •Теоретические сведения Компонент tMemo (область просмотра)
- •Пример 15.1. В многострочный редактор при нажатии кнопки выводятся номера строк. Экранная форма программы показана на рис. 15.1.
- •Компонент tCheckBox (флажок)
- •Пример 15.2. Флажками отмечаются используемые кредитные карточки и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.2.
- •Панель tGroupBox (группы компонентов)
- •Пример 15.3. С помощью флажков выбирают продукты из списка и по нажатию кнопки в многострочный редактор выводятся эти названия. Экранная форма программы показана на рис. 15.3.
- •Список действий (tActionList)
- •Главное меню (tMainMenu)
- •Пример 15.5. Создан простой редактор содержащий меню. Экранная форма программы показана на рис. 15.7.
- •Обработка событий выбора пунктов меню имеет вид
- •Всплывающее меню (tPopupMenu)
- •Обработка событий выбора пунктов меню аналогична примеру 15.5 и имеет вид
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 16Обработка динамических массивов данных. КомпонентTStringGrid(Таблица строк)
- •Теоретические сведения Компонент tStringGrid (таблица строк)
- •Implementation
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 17Работа с объектами. Инкапсуляция. Наследование. Полиморфизм. Создание заставки
- •Теоретические сведения Понятие класса и объекта
- •Инкапсуляция и свойства объекта
- •Наследование
- •Полиморфизм и виртуальныеметоды
- •Директивы, используемые при объявлении класса
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 18Компоненты для работы с файлами и каталогами
- •Теоретические сведения Компоненты для работы с файлами и каталогами
- •Выбор дисковода
- •Просмотр и перемещение по дереву каталогов
- •Просмотр списка и выбор имени файла
- •Выбор маски для списка файлов
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 19Создание многооконных приложений (mdi). Строка Состояний
- •Теоретические сведения Компонент tStatusBar(строка состояний)
- •Многооконные приложения
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Лабораторная работа № 20КомпонентTChart для Построение диаграмм различных типов. Создание библиотек динамической компоновки (Dll). Статическое подключение Dll
- •Теоретические сведения Компонент tChart (диаграмма)
- •Пример 20. 1. Построить график функции с шагом 0.1 в интервале [-5;5]. Экранная форма программы показана на рис. 20.2. Приведем фрагмент кода программы с обработкой основных событий:
- •Implementation
- •Создание библиотеки динамической компоновки (dll)
- •Пример 20. 2. Создать библиотеку содержащую функции сложения целых и вещественных чисел, а также строк. Код библиотеки имеет вид
- •Статический вызов библиотеки
- •Пример 20.3. Используем статически функции, описанные в библиотеке (см. Пример 20.2). Экранная форма программы показана на рис. 20.5. Фрагмент кода с использованием функций из библиотеки:
- •Implementation
- •Порядок выполнения работы
- •Контрольные вопросы
- •Лабораторная работа № 21Использование форм в библиотеках динамической компоновки (Dll). Динамическое подключение Dll.
- •Теоретические сведения Динамический вызов библиотеки
- •Implementation
- •Использование форм в библиотеках
- •Порядок выполнения работы
- •Варианты
- •Контрольные вопросы
- •Домашнее задание № 6Компоненты: Поля редактирования, группа переключателей. Обработка событий клавиатуры
- •Теоретические сведения Компонент группа переключателей (tRadioGroup)
- •События клавиатуры
- •Порядок выполнения работы
- •Варианты:
- •Контрольные вопросы
- •Домашнее задание № 7Создание Справочного файла
- •Теоретические сведения Создание справочной системы
- •Порядок выполнения работы
- •Контрольные вопросы
- •Библиографический список
Порядок выполнения работы
Создать справочный файл приложения, разработанного в предыдущей лабораторной работе (нечетные варианты для приложения лабораторной работы № 19, а четные – для приложения лабораторной работы № 20).
Справочный файл подключить к соответствующим управляющим элементам формы. Справочный файл должен содержать не менее 5 разделов и не менее трех внутренних ссылок. В меню добавить пункт «Справка», при выборе которого должен загружаться один из разделов справки.
Отчет о лабораторной работе должен содержать файл справки со всеми атрибутами и скрытыми элементами, а также распечатку исходного кода основного модуля проекта (project).
Контрольные вопросы
Основные этапы создания справочного файла.
Понятие атрибута текстового файла справки.
Понятие ссылки.
Правила оформления в текстовом файле ссылок и атрибутов.
Компиляция справочного файла.
Правила подключения справочного файла.
Приложение. Стандартные классы исключений
Класс |
Родитель |
Обрабатываемое исключение |
EAbort |
Exception |
Реализует «тихую» (без какого-либо сообщения) обработку любого исключения |
EAbstractError |
Exception |
Программа пытается вызвать абстрактный метод |
EAccessViolation |
Exception |
Программа пытается обратиться к не принадлежащей ей области памяти или использует недействительный указатель |
EAppletException |
Exception |
Ошибка связана с созданием управляющих панелей в апплетах |
EArrayError |
Exception |
Возникает из-за различного рода ошибок при работе с массивами (неверный индекс, попытка вставить элемент в массив фиксированной длины или в отсортированный массив и т. п.) |
EAssertionFaild |
Exception |
Возбуждается отладочной процедурой Assert, когда тестируемое ею логическое выражение имеет значение False |
EBitsError |
Exception |
Программа пыталась обратиться к свойству Bits объекта ТВts с индексом меньше нуля или больше максимально допустимого значения |
EBrokerException |
Exception |
Объект-брокер не может найти сервер |
ECacheError |
Exception |
Ошибка в наборе данных для компонента TDecisionCube |
EClassNotFound |
EFilerError |
Не найден соответствующий класс для компонента, читаемого из потока данных. Обычно оно возникает в случае, когда в форму вставлен нестандартный компонент, а в библиотеке компонентов Delphi отсутсвует связанный с ним класса |
ECommonCalendarError |
Exception |
Возникает в объектах класса TCommonCalendar и его потомках, когда вводится неверная дата |
EComponentError |
Exception |
Появляется при различных манипуляциях программы с компонентом (программа не может зарегистрировать компонент, переименовать его или для его работы потребуется интерфейс СОМ, который компонентом не поддерживается) |
EControlC
|
Exception |
Возникает при нажатии клавиш Ctrl+C в случае работы приложения в режиме консоли |
EConvertError
|
Exception |
Ошибка преобразования в функциях StrToInt или StrToFloat |
ECorbaDispatch
|
Exception |
Возникает в программах, использующих технологию CORBA, в случае ошибок, связанных с несовпадением интерфейсов сервера и брокера данных |
Продолжение приложения
Класс |
Родитель |
Обрабатываемое исключение | ||
ECorbaException |
Exception |
Возникает в программах, использующих технологию CORBA | ||
ECorbaUserException |
ECorbaException |
Появляется как определяемая пользователем реакция на ошибки интерфейса | ||
EDatabaseError |
Exception |
Возникает, когда компонент обнаруживает ошибку в базе данных | ||
EDateTimeError |
Exception |
Возбуждается компонентом TDateTimePicker при попытке ввода неверной даты или времени | ||
EDBClient |
EDatabaseError |
Ошибка связана с неправильной работой TClientDataSet | ||
EDBEditError |
Exception |
Возникает, когда компонент пытается использовать данные, несовместимые с заданной маской | ||
EDBEngineError |
EDatabaseError |
Связана с ошибками BDE | ||
EDimensionMarError |
Exception |
Возникает, когда используемый в кубе решений набор данных не имеет агрегатных полей | ||
EDimlndexError |
Exception |
Связана с нарушением размерности массива данных для куба решений | ||
EDivByZero
|
EIntError |
Ошибка целочисленного деления на ноль | ||
EDSWriter |
Exception |
Ошибка при подготовке провайдером пакета набора данных | ||
EExternalException |
EStreamError |
Возникла ошибка, код которой не является предопределенным в Delphi | ||
EFCreateError |
EStreamError |
Ошибка при создании файла. Например, попытка создать файл на устройстве, предназначенном только для чтения, или в несуществующем каталоге | ||
EFilerError |
EStreamError |
Программа пытается повторно зарегистрировать в потоке данных один и тот же класс | ||
EFOpenError |
EStreamError |
Ошибка открытия потока данных. Например, попытка открыть несуществующий файл | ||
EHeapException |
Exception |
Ошибка определена неправильными операциями, связанными с динамической памятью | ||
EIBClientError |
EIBError |
Ошибка обусловлена с функционированием IBX-клиента | ||
EIBError |
EDatabaseError |
Общая ошибка технологии IBX | ||
EIBInterbaseError |
EIBError |
Ошибка связана с функционированием сервера в технологии IBX | ||
EInterpreterError |
Exception |
Возникает, когда компонент класса TDataBlockInterpeter не может интерпретировать значения блока данных | ||
EIntError |
Exception |
Любая ошибка в целочисленных вычислениях |
Продолжение приложения
Класс |
Родитель |
Обрабатываемое исключение |
EIntfCastError |
Exception |
Попытка недопустимого приведения типов в OLE-объектах |
EIntOverflow |
EIntError |
Ошибка целочисленного переполнения: программа пытается присвоить целочисленной переменной значение, выходящее из 32 двоичных разрядов |
EInvalidArgument |
EMatchError |
Возбуждается математическими функциями при выходе аргумента из допустимого диапазона |
EInvalidCast |
Exception |
Программа не осуществит недопустимое преобразование типов с помощью оператора as |
EInvalidGraphic |
Exception |
Программа не может загрузить в контейнер изображение из файла, который имеет недопустимый формат (допустимыми форматами являются растр, метафайл, курсор, значок) |
EInvalidGraphic-Operation |
Exception |
Программа не выполнит недопустимую графическую операцию |
EInvalidGridOperation |
Exception |
Программа пытается выполнить недопустимую операцию с таблицей (например, обратиться к несуществующим столбцу или строке) |
EInvalidlmage |
EFilerError |
Программа пробует прочитать ресурс изображения из файла, в котором этого ресурса нет |
EInvalidOp |
EMatchError |
Ошибка в операциях с плавающей точкой (недопустимая инструкция, переполнение стека сопроцессора и т. п.) |
EInvalidOperation |
Exception |
Не имеющий окна компонент пытается выполнить операцию, требующую дескриптора окна |
EInvalidPointer |
ЕНеарException |
Попытка использовать недействительный указатель |
EListError |
Exception |
Эта ошибка связана с неверными действиями программы по отношению к разного рода спискам. Например, обращение к элементу списка с индексом меньше нуля или больше максимально допустимого |
ELowCapacityError |
Exception |
Ошибка появляется при попытке выделения памяти на устройстве, у которого отсутствуетнет необходимая свободная память |
EMatchError |
Exception |
Любая ошибка при выполнении вычислений с плавающей точкой |
EMenuError |
Exception |
Ошибка при работе программы с меню. Например, при добавлении элемента с идентификатором, который уже определен в меню |
EMCIDiviceError |
Exception |
Ошибка возникла в медиаплейере |
EMethodNotFound |
EFilerError |
Программа прочитала из потока данных объект, но не может найти связанный с классом объекта метод |
Продолжение приложения
Класс |
Родитель |
Обрабатываемое исключение | ||
EMonthCalError |
ECommonCa-lendarError |
Возбуждается компонентом класса TMonthCalendar при попытке ввода неправильной даты | ||
EOleCtrlError |
Exception |
Программа не может установить связь с элементом ActiveX | ||
EOleError |
Exception |
Низкоуровневая ошибка в технологии OLE | ||
EOleException |
EOleSysError |
Программа использует неверный OLE-интерфейс | ||
EOleRegistrationError |
EOleError |
Ошибка регистрации OLE-объекта в реестре Windows | ||
EOleSysError |
EOleError |
Возникает при неправильном выполнении команды OLE автоматизации | ||
EOutlineError |
Exception |
Возникает при ошибке доступа к компоненту класса TOutLine | ||
EOutOfMemory |
EHeapException |
Эта ошибка возникает, когда программа запрашивает слишком большой для данной конфигурации Windows объем памяти | ||
EOutOfResource |
EOutOfMemory |
Программа требует от Windows дескриптор окна, но операционная система исчерпала лимит дескрипторов | ||
EOverflow |
EMatchError |
Результат операций с плавающей точкой слишком велик, чтобы уместиться в регистрах сопроцессора | ||
EPackageError |
Exception |
Возникает при ошибке доступа к пакету | ||
EParserError |
Exception |
Ошибка преобразования текста в двоичные данные при чтении из потока | ||
EPrinter |
Exception |
Система Windows сообщила программе об ошибке принтера | ||
EPrivilege |
Exception |
Программа пытается выполнить привилегированную операцию, которая может быть реалиизована только ядром Windows | ||
EPropertyConvertError |
Exception |
Ошибка при чтении или записи значения свойства | ||
EPropertyError |
Exception |
Ошибка доступа к свойству при чтении или записи | ||
EPropReadOnly |
Exception |
Программа пытается изменить значение свойства, которое нельзя менять (при использовании технологии OLE) | ||
EPropWriteOnly |
Exception |
Программа пытается прочитать свойство, предназначенное только для записи | ||
ERangeError |
EIntError |
Целочисленный результат превышает емкость целого типа данных | ||
EReadError |
EFilerError |
Программа не может прочитать из потока данных нужного количества байтов | ||
EReconcileError |
EDatabase-Error |
Ошибка обновления данных BTClientDataset | ||
ERegistryException |
Exception |
Ошибка, связанная с операцией над реестром Windows |
Окончание приложения
Класс |
Родитель |
Обрабатываемое исключение | ||
EResNotFound |
Exception |
Программа не может найти указанный ресурс в файле ресурсов | ||
ESocketConnectionError |
Exception |
Ошибка связана с работой с сокетами Windows | ||
ESocketError |
Exception |
Ошибка связана с работой с сокетами Windows | ||
EStackOverf low |
Exception |
Исчерпан объем выделенного программе стека | ||
EStreamError |
Exception |
Любая ошибка при работе с потоком данных | ||
EStringListError |
Exception |
Программа ссылается на строку, индекс которой выходит из диапазона возможных значений для списка строк | ||
EThread |
Exception |
Ситуация борьбы за общий ресурс в программе с несколькими потоками команд | ||
ETreeViewErrorKTTreeView |
Exception |
Указан неверный индекс при обращении | ||
EUnderflow |
EMatchError |
Результат операций с плавающей точкой слишком мал, чтобы уместиться в регистрах сопроцессора (исчезновение порядка) | ||
EUnsupportedTypeError |
Exception |
Выбран недопустимый тип поля в качестве измерения в кубе решений | ||
EUpdateError |
Exception |
Ошибка обновления набора данных провайдера | ||
EVariantError |
Exception |
Ошибка при работе с типом Variant: недопустимое приведение типов; недопустимая операция; обращение к скалярной переменной как к варианту-массиву; индекс варианта-массива выходит из допустимых значений | ||
EWin32Error |
Exception |
Ошибочное обращение к API-функции Windows. Свойство Mess age содержит номер ошибки и связанное с ней сообщение | ||
EWriteError |
EFilerError |
Ошибка записи в поток данных | ||
EZeroDivide |
EMatchError |
Вещественное деление на ноль |