Автоматизированные учебные комплексы по дисциплине Delphi
Определение назначения, изучение функциональных возможностей и характеристика элементов языка программирования Delphi. Типы данных, константы и обработка исключительных ситуаций в Delphi. Графические возможности, элементы управления и операторы Delphi.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 02.05.2012 |
Размер файла | 326,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
КУРСОВАЯ РАБОТА
на тему: «Автоматизированные учебные комплексы по дисциплине Delphi»
План
Введение
Глава I. Язык программирования Delphi
1.1 Типы данных
1.2 Константы
1.3 Обработка исключительных ситуаций в Delphi
Глава II. Учебные комплексы
2.1 Графические возможности в Delphi
2.2 Оконные элементы управления
2.3 Простые операторы
Заключение
Список литературы
Приложение
Введение
В последнее время резко возрос интерес к программированию. Это связано с развитием и внедрением в повседневную жизнь информационно-коммуникационных технологий. Если человек имеет дело с компьютером, то рано или поздно у него возникает желание, а иногда и необходимость, программировать. Среди пользователей персональных компьютеров в настоящее время наиболее популярно семейство операционных систем Windows и, естественно, что тот, кто собирается программировать, стремится писать программы, которые будут работать в этих системах. Несколько лет назад рядовому программисту оставалось только мечтать о создании собственных программ, работающих в среде Windows, т. к. единственным средством разработки был Borland C++ for Windows, явно ориентированный на профессионалов, обладающих серьезными знаниями и опытом. Бурное развитие вычислительной техники, потребность в эффективных средствах разработки программного обеспечения привели к появлению систем программирования, ориентированных на так называемую "быструю разработку", среди которых можно выделить Borland Delphi и Microsoft Visual Basic. В основе систем быстрой разработки (RAD-систем, Rapid Application Development -- среда быстрой разработки приложений) лежит технология визуального проектирования и событийного программирования, суть которой заключается в том, что среда разработки берет на себя большую часть рутинной работы, оставляя программисту работу по конструированию диалоговых окон и функций обработки событий. Производительность программиста при использовании RAD-систем - фантастическая!
Delphi -- это среда быстрой разработки, в которой в качестве языка программирования используется язык Delphi. Язык Delphi -- строго типизированный объектно-ориентированный язык, в основе которого лежит хорошо знакомый программистам Object Pascal.
В настоящее время программистам стала доступна очередная версия пакета Delphi - Borland Delphi 7 Studio. Как и предыдущие версии, Borland Delphi 7 Studio позволяет создавать самые различные программы: от простейших однооконных приложений до программ управления распределенными базами. В состав пакета включены разнообразные утилиты, обеспечивающие работу с базами данных, XML-документами, создание справочной системы, решение других задач. Отличительной особенностью седьмой версии является поддержка технологии .NET.
Borland Delphi 7 Studio может работать в среде операционных систем от Windows 98 до Windows XP. Особых требований, по современным меркам, к ресурсам компьютера пакет не предъявляет: процессор должен быть типа Pentium или Celeron с тактовой частотой не ниже 166 МГц (рекомендуется Pentium II 400 МГц), оперативной памяти - 128 Мбайт (рекомендуется 256 Мбайт), достаточное количество свободного дискового пространства (для полной установки версии Enterprise необходимо приблизительно 475 Мбайт).
Глава I. Язык программирования Delphi
данные графика программирование язык delphi
В среде программирования Delphi для записи программ используется язык программирования Delphi. Программа на Delphi представляет собой последовательность инструкций, которые довольно часто называют операторами. Одна инструкция от другой отделяется точкой с запятой.
Каждая инструкция состоит из идентификаторов. Идентификатор может обозначать:
- Инструкцию языка (:=, if, while, for);
- переменную;
- константу (целое или дробное число);
- арифметическую (+, -,*,/) или логическую (and, or, not) операцию;
- подпрограмму (процедуру или функцию);
- отмечать начало (procedure, function) или конец (end) подпрограммы ИЛИ блока (begin, end).
1.1 Типы данных
Программа может оперировать данными различных типов: целыми и дробными числами, символами, строками символов, логическими величинами.
Целый тип
Язык Delphi поддерживает семь целых типов данных: shortint, smailint, Longint, Int64, Byte, word и Longword, описание которых приведено в табл. 1.1.
Таблица 1.1. Целые типы
Тип |
Диапазон |
Формат |
|||
Shortint |
-128-127 |
8 битов |
|||
Smallint |
-32 768 - 32 767 |
16 битов |
|||
Longint |
-2 147 483 648 - 2 147 483 647 |
32 бита |
|||
Int64 |
-263- 263 - 1 |
64 бита |
|||
Byte |
0-255 |
8 битов, беззнаковый |
|||
Word |
0-65 535 |
16 битов, беззнаковый |
|||
Longword |
0 - 4 294 967 295 |
32 бита, беззнаковый |
|||
Object Pascal поддерживает и наиболее универсальный целый тип - Integer, который Эквивалентен Longint.
Вещественный тип
Язык Delphi поддерживает шесть вещественных типов: Reai48, single, Double, Extended, comp, Currency. Типы различаются между собой диапазоном допустимых значений, количеством значащих цифр и количеством байтов, необходимых для хранения данных в памяти компьютера (табл. 1.2).
Таблица 1.2. Вещественные (дробные) типы
Тип |
Диапазон |
Значащих цифр |
Байтов |
|||
Real48 |
2.9x 10-39-1.7x1038 |
11-12 |
06 |
|||
Single |
1.5 x 10-45-3.4х 1038 |
7-8 |
04 |
|||
Double |
5.0x10-324 -1.7x10308 |
15-16 |
08 |
|||
Extended |
3.6x10-4951 -1.1 х104932 |
19-20 |
10 |
|||
Comp |
263+1 - 263-1 |
19-20 |
08 |
|||
Currency |
-922 337 203 685 477.5808 --922 337 203 685 477.5807 |
19-20 |
08 |
Язык Delphi поддерживает и наиболее универсальный вещественный тип - Real, который э квивалентен Double.
Символьный тип
Язык Delphi поддерживает два символьных типа: Ansichar и Widechar:
- тип Ansichar -- это символы в кодировке ANSI, которым соответствуют числа в диапазоне от 0 до 255;
- тип widechar -- это символы в кодировке Unicode, им соответствуют числа от 0 до 65 535.
Object Pascal поддерживает и наиболее универсальный символьный тип - Char, который эквивалентен Ansichar.
Строковый тип
Язык Delphi поддерживает три строковых типа: shortstring, Longstring
- WideString:
- тип shortstring представляет собой статически размещаемые в памяти компьютера строки длиной от 0 до 255 символов;
- тип Longstring представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти;
- тип WideString представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти. Каждый символ строки типа WideString является Unicode-символом.
В языке Delphi для обозначения строкового типа допускается использование идентификатора string. Тип string эквивалентен типу shortstring.
В языке Delphi для обозначения строкового типа допускается использование идентификатора string. Тип string эквивалентен типу shortstring.
Логический тип
Логическая величина может принимать одно из двух значений True (истина) или False (ложь). В языке Delphi логические величины относят к типу Boolean.
1.2 Константы
В языке Delphi существует два вида констант: обычные и именованные. Обычная константа -- это целое или дробное число, строка символов или отдельный символ, логическое значение.
Числовые константы
В тексте программы числовые константы записываются обычным образом, т. е. так же, как числа, например, при решении математических задач. При записи дробных чисел для разделения целой и дробных частей используется точка. Если константа отрицательная, то непосредственно перед первой цифрой ставится знак "минус".
Ниже приведены примеры числовых констант:
123 0.0
-524.03 0
Дробные константы могут изображаться в виде числа с плавающей точкой. Представление в виде числа с плавающей точкой основано на том, что любое число может быть записано в алгебраической форме как произведение числа, меньшего 10, которое называется мантиссой, и степени десятки, именуемой порядком. В табл. 1.3 приведены примеры чисел, записанных в обычной форме, в алгебраической форме и форме с плавающей точкой.
Таблица 1.3. Примеры записи дробных чисел
Число |
Алгебраическая форма |
Форма с плавающей точкой |
|
1 000 000 -123.452 0,0056712 |
1х106 -1,23452x102 5,6712х10-3 |
1 .0000000000Е+06 -1 .2345200000Е+02 5,6712000000Е-03 |
Строковые и символьные константы
Строковые и символьные константы заключаются в кавычки. Ниже приведены примеры строковых констант:
Язык программирования Delphi1 'Delphi 7'
Здесь следует обратить внимание на константу ' 2.4'. Это именно символьная константа, т. е. строка символов, которая изображает число "две целые четыре десятых", а не число 2,4.
Логические константы
Логическое высказывание (выражение) может быть либо истинно, либо ложно. Истине соответствует константа True, значению "ложь" - константа False.
Именованная константа
Именованная константа -- это имя (идентификатор), которое в программе используется вместо самой константы.
Именованная константа, как и переменная, перед использованием должна быть объявлена. В общем виде инструкция объявления именованной константы выглядит следующим образом:
константа = значение;
где:
- константа -- имя константы;
- значение -- значение константы.
Именованные константы объявляются в программе в разделе объявления констант, который начинается словом const. Ниже приведен пример объявления именованных констант (целой, строковой и дробной).
const
Bound = 10;
Title = 'Скорость бега';
pi = 3.1415926;
После объявления именованной константы в программе вместо самой константы можно использовать ее имя.
В отличие от переменной, при объявлении константы тип явно не указывают. Тип константы определяется ее видом, например:
125 -- константа целого типа;
0.0 -- константа вещественного типа;
' выполнить ' -- строковая константа;
' \' -- символьная константа.
1.3 Обработка исключительных ситуаций в Delphi
Структурная обработка исключительных ситуаций
Структурная обработка исключительных ситуаций - это система, позволяющая программисту при возникновении ошибки (исключительной ситуации) связаться с кодом программы, подготовленным для обработки такой ошибки. Это выполняется с помощью языковых конструкций, которые как бы “охраняют” фрагмент кода программы и определяют обработчики ошибок, которые будут вызываться, если что-то пойдет не так в “охраняемом” участке кода. В данном случае понятие исключительной ситуации относится к языку и не нужно его путать с системными исключительными ситуациями (hardware exceptions), такими как General Protection Fault. Эти исключительные ситуации обычно используют прерывания и особые состояния “железа” для обработки критичной системной ошибки; исключительные ситуации в Delphi же независимы от “железа”, не используют прерываний и используются для обработки ошибочных состояний, с которыми подпрограмма не готова иметь дело. Системные исключительные ситуации, конечно, могут быть перехвачены и преобразованы в языковые исключительные ситуации, но это только одно из применений языковых исключительных ситуаций. При традиционной обработке ошибок, ошибки, обнаруженные в процедуре обычно передаются наружу (в вызывавшую процедуру) в виде возвращаемого значения функции, параметров или глобальных переменных (флажков). Каждая вызывающая процедура должна проверять результат вызова на наличие ошибки и выполнять соответствующие действия. Часто, это просто выход еще выше, в более верхнюю вызывающую процедуру и т.д. : функция A вызывает B, B вызывает C, C обнаруживает ошибку и возвращает код ошибки в B, B проверяет возвращаемый код, видит, что возникла ошибка и возвращает код ошибки в A, A проверяет возвращаемый код и выдает сообщение об ошибке либо решает сделать что-нибудь еще, раз первая попытка не удалась. Такая “пожарная бригада” для обработки ошибок трудоемка, требует написания большого количества кода, в котором можно легко ошибиться и который трудно отлаживать.
Одна ошибка в коде программы или переприсвоение в цепочке возвращаемых значений может привести к тому, что нельзя будет связать ошибочное состояние с положением дел во внешнем мире. Результатом будет ненормальное поведение программы, потеря данных или ресурсов, или крах системы.
Структурная обработка исключительной ситуации замещает ручную обработку ошибок автоматической, сгенерированной компилятором системой уведомления. В приведенном выше примере, процедура A установила бы “охрану” со связанным обработчиком ошибки на фрагмент кода, в котором вызывается B. B просто вызывает C. Когда C обнаруживает ошибку, то создает (raise) исключительную ситуацию. Специальный код, сгенерированный компилятором и встроенный в Run-Time Library (RTL) начинает поиск обработчика данной исключительной ситуации. При поиске “защищенного” участка кода используется информация, сохраненная в стеке. В процедурах C и B нет такого участка, а в A - есть. Если один из обработчиков ошибок, которые используются в A, подходит по типу для возникшей в C исключительной ситуации, то программа переходит на его выполнение. При этом, область стека, используемая в B и C, очищается; выполнение этих процедур прекращается. Если в A нет подходящего обработчика, то поиск продолжается в более верхнем уровне, и так может идти, пока поиск не достигнет подходящего обработчика ошибок среди используемых по умолчанию обработчиков в RTL. Обработчики ошибок из RTL только показывают сообщение об ошибке и форсированно прекращают выполнение программы. Любая исключительная ситуация, которая осталась необработанной, приведет к прекращению выполнения приложения.
Без проверки возвращаемого кода после каждого вызова подпрограммы, код программы должен быть более простым, а скомпилированный код - более быстрым. При наличии исключительных ситуаций подпрограмма B не должна содержать дополнительный код для проверки возвращаемого результата и передачи его в A. B ничего не должна делать для передачи исключительной ситуации, возникшей в C, в процедуру A - встроенная система обработки исключительных ситуаций делает всю работу. Данная система называется структурной, поскольку обработка ошибок определяется областью “защищенного” кода; такие области могут быть вложенными. Выполнение программы не может перейти на произвольный участок кода; выполнение программы может перейти только на обработчик исключительной ситуации активной программы.
Модель исключительных ситуаций в Delphi
Модель исключительных ситуаций в Object Pascal является невозобновляемой (non-resumable). При возникновении исключительной ситуации Вы уже не сможете вернуться в точку, где она возникла, для продолжения выполнения программы (это позволяет сделать возобновляемая (resumable) модель). Невозобновляемые исключительные ситуации разрушают стек, поскольку они сканируют его в поисках обработчика; в возобновляемой модели необходимо сохранять стек, состояние регистров процессора в точке возникновения ошибки и выполнять поиск обработчика и его выполнение в отдельном стеке. Возобновляемую систему обработки исключительных ситуаций гораздо труднее создать и применять, нежели невозобновляемую.
Предопределенные обработчики исключительных ситуаций
Ниже Вы найдете справочную информацию по предопределенным исключениям, необходимую для профессионального программирования в Delphi.
- Exception - базовый класс-предок всех обработчиков исключительных ситуаций.
- EAbort - “скрытое” исключение. Используйте его тогда, когда хотите прервать тот или иной процесс с условием, что пользователь программы не должен видеть сообщения об ошибке. Для повышения удобства использования в модуле SysUtils предусмотрена процедура Abort, определенная, как:
procedure Abort;
begin
raise EAbort.CreateRes(SOperationAborted) at ReturnAddr;
end;
- EComponentError - вызывается в двух ситуациях:
1) при попытке регистрации компоненты за пределами процедуры Register;
2) когда имя компоненты не уникально или не допустимо.
- EConvertError - происходит в случае возникновения ошибки при выполнении функций StrToInt и StrToFloat, когда конвертация строки в соответствующий числовой тип невозможна.
- EInOutError - происходит при ошибках ввода/вывода при включенной директиве {$I+}.
- EIntError - предок исключений, случающихся при выполнении целочисленных операций.
- EDivByZero - вызывается в случае деления на ноль, как результат RunTime Error 200.
- EIntOverflow - вызывается при попытке выполнения операций, приводящих к переполнению целых переменных, как результат RunTime Error 215 при включенной директиве {$Q+}.
- ERangeError - вызывается при попытке обращения к элементам массива по индексу, выходящему за пределы массива, как результат RunTime Error 201 при включенной директиве {$R+}.
- EInvalidCast - происходит при попытке приведения переменных одного класса к другому классу, несовместимому с первым (например, приведение переменной типа TListBox к TMemo).
- EInvalidGraphic - вызывается при попытке передачи в LoadFromFile файла, несовместимого графического формата.
- EInvalidGraphicOperation - вызывается при попытке выполнения операций, неприменимых для данного графического формата (например, Resize для TIcon).
- EInvalidObject - реально нигде не используется, объявлен в Controls.pas.
- EInvalidOperation - вызывается при попытке отображения или обращения по Windows-обработчику (handle) контрольного элемента, не имеющего владельца (например, сразу после вызова MyControl:=TListBox.Create(...) происходит обращение к методу Refresh).
- EInvalidPointer - происходит при попытке освобождения уже освобожденного или еще неинициализированного указателя, при вызове Dispose(), FreeMem() или деструктора класса.
- EListError - вызывается при обращении к элементу наследника TList по индексу, выходящему за пределы допустимых значений (например, объект TStringList содержит только 10 строк, а происходит обращение к одиннадцатому).
- EMathError - предок исключений, случающихся при выполнении операций с плавающей точкой.
- EInvalidOp - происходит, когда математическому сопроцессору передается ошибочная инструкция. Такое исключение не будет до конца обработано, пока Вы контролируете сопроцессор напрямую из ассемблерного кода.
- EOverflow - происходит как результат переполнения операций с плавающей точкой при слишком больших величинах. Соответствует RunTime Error 205.
- Underflow - происходит как результат переполнения операций с плавающей точкой при слишком малых величинах. Соответствует RunTime Error 206.
- EZeroDivide - вызывается в результате деления на ноль.
- EMenuError - вызывается в случае любых ошибок при работе с пунктами меню для компонент TMenu, TMenuItem, TPopupMenu и их наследников.
- EOutlineError - вызывается в случае любых ошибок при работе с TOutLine и любыми его наследниками.
- EOutOfMemory - происходит в случае вызовов New(), GetMem() или конструкторов классов при невозможности распределения памяти. Соответствует RunTime Error 203.
- EOutOfResources - происходит в том случае, когда невозможно выполнение запроса на выделение или заполнение тех или иных Windows ресурсов (например таких, как обработчики - handles).
- EParserError - вызывается когда Delphi не может произвести разбор и перевод текста описания формы в двоичный вид (часто происходит в случае исправления текста описания формы вручную в IDE Delphi).
- EPrinter - вызывается в случае любых ошибок при работе с принтером.
- EProcessorException - предок исключений, вызываемых в случае прерывания процессора- hardware breakpoint. Никогда не включается в DLL, может обрабатываться только в “цельном” приложении.
- EBreakpoint - вызывается в случае останова на точке прерывания при отладке в IDE Delphi. Среда Delphi обрабатывает это исключение самостоятельно.
- EFault - предок исключений, вызываемых в случае невозможности обработки процессором тех или иных операций.
- EGPFault - вызывается, когда происходит “общее нарушение защиты” - General Protection Fault. Соответствует RunTime Error 216.
- EInvalidOpCode - вызывается, когда процессор пытается выполнить недопустимые инструкции.
- EPageFault - обычно происходит как результат ошибки менеджера памяти Windows, вследствие некоторых ошибок в коде Вашего приложения. После такого исключения рекомендуется перезапустить Windows.
- EStackFault - происходит при ошибках работы со стеком, часто вследствие некорректных попыток доступа к стеку из фрагментов кода на ассемблере. Компиляция Ваших программ со включенной проверкой работы со стеком {$S+} помогает отследить такого рода ошибки.
- ESingleStep - аналогично EBreakpoint, это исключение происходит при пошаговом выполнении приложения в IDE Delphi, которая сама его и обрабатывает.
- EPropertyError - вызывается в случае ошибок в редакторах свойств, встраиваемых в IDE Delphi. Имеет большое значение для написания надежных property editors. Определен в модуле DsgnIntf.pas.
- EResNotFound - происходит в случае тех или иных проблем, имеющих место при попытке загрузки ресурсов форм - файлов .DFM в режиме дизайнера. Часто причиной таких исключений бывает нарушение соответствия между определением класса формы и ее описанием на уровне ресурса (например,вследствие изменения порядка следования полей-ссылок на компоненты, вставленные в форму в режиме дизайнера).
- EStreamError - предок исключений, вызываемых при работе с потоками.
- EFCreateError - происходит в случае ошибок создания потока (например, при некорректном задании файла потока).
- EFilerError - вызывается при попытке вторичной регистрации уже зарегистрированного класса (компоненты). Является, также, предком специализированных обработчиков исключений, возникающих при работе с классами компонент.
- EClassNotFound - обычно происходит, когда в описании класса формы удалено поле-ссылка на компоненту, вставленную в форму в режиме дизайнера. Вызывается, в отличие от EResNotFound, в RunTime.
- EInvalidImage - вызывается при попытке чтения файла, не являющегося ресурсом, или разрушенного файла ресурса, специализированными функциями чтения ресурсов (например, функцией ReadComponent).
- EMethodNotFound - аналогично EClassNotFound, только при несоответствии методов, связанных с теми или иными обработчиками событий.
- EReadError - происходит в том случае, когда невозможно прочитать значение свойства или другого набора байт из потока (в том числе ресурса).
- EFOpenError - вызывается когда тот или иной специфированный поток не может быть открыт (например, когда поток не существует).
- EStringListError - происходит при ошибках работы с объектом TStringList (кроме ошибок, обрабатываемых TListError).
Глава II. Учебные комплексы
2.1 Графические возможности Delphi
Delphi позволяет программисту разрабатывать программы, которые могут выводить графику: схемы, чертежи, иллюстрации.
Программа выводит графику на поверхность объекта (формы или компонента Image). Поверхности объекта соответствует свойство canvas. Для того чтобы вывести на поверхность объекта графический элемент (прямую линию, окружность, прямоугольник и т. д.), необходимо применить к свойству canvas этого объекта соответствующий метод. Например, инструкция Form1.Canvas.Rectangle (10,10,100,100) вычерчивает в окне программы прямоугольник.
Холст
Как было сказано ранее, поверхности, на которую программа может выводить графику, соответствует свойство Canvas. В свою очередь, свойство canvas -- это объект типа TCanvas. Методы этого типа обеспечивают вывод графических примитивов (точек, линий, окружностей, прямоугольников и т. д.), а свойства позволяют задать характеристики выводимых графических примитивов: цвет, толщину и стиль линий; цвет и вид заполнения областей; характеристики шрифта при выводе текстовой информации.
Методы вывода графических примитивов рассматривают свойство Canvas как некоторый абстрактный холст, на котором они могут рисовать (canvas переводится как "поверхность", "холст для рисования"). Холст состоит из отдельных точек -- пикселов. Положение пиксела характеризуется его горизонтальной (X) и вертикальной (Y) координатами. Левый верхний пиксел имеет координаты (0, 0). Координаты возрастают сверху вниз и слева направо (рис. 10.1). Значения координат правой нижней точки холста зависят от размера холста.
Рис. 2.1. Координаты точек холста
Размер холста можно получить, обратившись к свойствам Height и width области иллюстрации (image) или к свойствам формы: ClientHeight и Clientwidth.
Карандаш и кисть
Художник в своей работе использует карандаши и кисти. Методы, обеспечивающие вычерчивание на поверхности холста графических примитивов, тоже используют карандаш и кисть. Карандаш применяется для вычерчивания линий и контуров, а кисть -- для закрашивания областей, ограниченных контурами.
Карандашу и кисти, используемым для вывода графики на холсте, соответствуют свойства Реn (карандаш) и Brush (кисть), которые представляют собой объекты типа треп и TBrush, соответственно. Значения свойств этих объектов определяют вид выводимых графических элементов.
Карандаш
Карандаш используется для вычерчивания точек, линий, контуров геометрических фигур: прямоугольников, окружностей, эллипсов, дуг и др. Вид линии, которую оставляет карандаш на поверхности холста, определяют свойства объекта треп, которые перечислены в табл. 10.1.
Таблица 2.2. Свойства объекта треп (карандаш)
Свойство |
Определяет |
|||
Color |
Цвет линии |
|||
Width |
Толщину линии |
|||
Style |
Вид линии |
|||
Mode |
Режим отображения |
|||
Свойство Color задает цвет линии, вычерчиваемой карандашом. В табл. 10.2 перечислены именованные константы (тип TCoior), которые можно использовать в качестве значения свойства color.
Таблица 2.3. Значение свойства Color определяет цвет линии
Константа |
Цвет |
Константа |
Цвет |
|||
clBlack |
Черный |
clSilver |
Серебристый |
|||
clMaroon |
Каштановый |
clRed |
Красный |
|||
clGreen |
Зеленый |
clLime |
Салатный |
|||
clOlive |
Оливковый |
clBlue |
Синий |
|||
clNavy |
Темно-синий |
clFuchsia |
Ярко-розовый |
|||
clPurple |
Розовый |
clAqua |
Бирюзовый |
|||
clTeal |
Зелено-голубой |
clWhite |
Белый |
|||
clGray |
Серый |
Свойство width задает толщину линии (в пикселах). Например, инструкция Canvas. Pen. width: =2 устанавливает толщину линии в 2 пиксела.
Свойство style определяет вид (стиль) линии, которая может быть непрерывной или прерывистой, состоящей из штрихов различной длины. В табл. 10.3 перечислены именованные константы, позволяющие задать стиль линии. Толщина пунктирной линии не может быть больше 1. Если значение свойства Pen.width больше единицы, то пунктирная линия будет выведена как сплошная.
Таблица 2.4. Значение свойства Реn. туре определяет вид линии
Константа |
Вид линии |
|
psSolid |
Сплошная линия |
|
psDash |
Пунктирная линия, длинные штрихи |
|
psDot |
Пунктирная линия, короткие штрихи |
|
psDashDot |
Пунктирная линия, чередование длинного и короткого штрихов |
|
psDashDotDot |
Пунктирная линия, чередование одного длинного и двух коротких штрихов |
|
psClear |
Линия не отображается (используется, если не надо изображать границу области, например, прямоугольника) |
Свойство Mode определяет, как будет формироваться цвет точек линии в зависимости от цвета точек холста, через которые эта линия прочерчивается.
По умолчанию вся линия вычерчивается цветом, определяемым значением свойства Pen.Color.
Однако программист может задать инверсный цвет линии по отношению к цвету фона. Это гарантирует, что независимо от цвета фона все участки линии будут видны, даже в том случае, если цвет линии и цвет фона совпадают.
В табл. 10.4 перечислены некоторые константы, которые можно использовать в качестве значения свойства Pen.Mode.
Таблица 2.5. Значение свойства Реп. Mode влияет на цвет линии
Константа |
Цвет линии |
|
pmBlack |
Черный, не зависит от значения свойства Pen. Color |
|
pmWhite |
Белый, не зависит от значения свойства Pen. Color |
|
pmCopy |
Цвет линии определяется значением свойства Pen . Color |
|
pmNotCopy |
Цвет линии является инверсным по отношению к значению свойства Pen. Color |
|
pmNot |
Цвет точки линии определяется как инверсный по отношению к цвету точки холста, в которую выводится точка линии |
Кисть
Кисть (canvas.Brush) используется методами, обеспечивающими вычерчивание замкнутых областей, например геометрических фигур, для заливки (закрашивания) этих областей. Кисть, как объект, обладает двумя свойствами, перечисленными в табл. 10.5.
Таблица 2.6. Свойства объекта TBrush (кисть)
Свойство |
Определяет |
|
Color Style |
Цвет закрашивания замкнутой области Стиль (тип) заполнения области |
|
Область внутри контура может быть закрашена или заштрихована. В первом случае область полностью перекрывает фон, а во втором -- сквозь незаштрихованные участки области будет виден фон.
В качестве значения свойства Color можно использовать любую из констант типа TColor (см. список констант для свойства Pen.color в табл. 10.2). Константы, позволяющие задать стиль заполнения области, приведены в табл. 10.6.
Таблица 2.7. Значения свойства Brush, style определяют тип закрашивания
Константа |
Тип заполнения (заливки) области |
||
bsSolid |
Сплошная заливка |
||
bsClear |
Область не закрашивается |
||
bsHorizontal |
Горизонтальная штриховка |
||
bsVertical |
Вертикальная штриховка |
||
bsFDiagonal |
Диагональная штриховка с наклоном линий вперед |
||
bsBDiagonal |
Диагональная штриховка с наклоном линий назад |
||
bsCross |
Горизонтально-вертикальная штриховка, в клетку |
||
bsDiagCross |
Диагональная штриховка, в клетку |
2.2 Оконные элементы управления
Понятие окна Windows инкапсулировано в потомке TControl -- классе TWinControl. Такой компонент получает соответствующий атрибут _ дескриптор окна, определяемый свойством:
(Ro) property Handle: HWnd; С помощью этого дескриптора вы можете вызывать функции API Windows, если средств VCL вам недостаточно для решения задачи. Компоненты-потомки TWinControl -- в дальнейшем будем называть оконными элементами управления, а элементы управления, не имеющие дескриптора окна, -- не оконными.
Возможны ситуации, когда компонент уже создан, но еще не имеет дескриптора как окно. Два метода управляют созданием дескриптора:
function HandleAllocated:Boolean;
procedure HandleNeeded;
Первая сообщает о наличии выделенного дескриптора, а вторая при его отсутствии посылает запрос на его выделение. Такой метод должен применяться перед каждой операцией, требующей дескриптора.
Важным свойством TWinControl является то, что он может содержать другие -- дочерние -- элементы управления. Они упорядочены в виде списка. Если быть точным, то списков на самом деле два -- для не оконных и оконных дочерних элементов. Но "видны" они как один объединенный -- сначала первый, потом второй. Методы и свойства для работы с этим списком приведены в таблице:
(Ro) property Controls[Index: Integer]: TControl; |
Содержит список дочерних элементов. |
|
(Ro) property ControlCount: Integer; |
Содержит число элементов в списке. |
|
function ContainsControl(Control: TControl): Boolean; |
Проверяет наличие элемента в списке. |
|
function ControlAtPos(const Pos: TPoint; AllowDisabled: Boolean): TControl ; |
Отыскивает в списке элемент, которому принадлежит заданная точка (в системе координат собственной клиентской области). Флаг AllowDisabled показывает, разрешен ли поиск среди пассивных (свойство Enabled которых равно False) элементов. |
|
procedure InsertControl(AControl: TControl) ; |
Вставляет элемент в конец списка. |
|
procedure RemoveControl(AControl: TControl); |
Удаляет элемент из списка. |
|
procedure Broadcast(var Message); |
Рассылает всем дочерним элементам из списка сообщение Message. |
С каждым оконным компонентом можно связать контекстную помощь. Контекст помощи -- это индекс, указывающий на определенную информацию в файле справочной системы, связанном с приложением:
property HelpContext: THelpContext;
Когда компонент находится в фокусе, то при нажатии клавиши <F1> загружается система контекстной помощи, и пользователь сразу получает информацию, связанную с заданным контекстом. Если контекст равен нулю, то система пытается отыскать в цепочке родительских компонентов первый, имеющий ненулевой контекст.
Оконный компонент может управлять положением и размерами своих дочерних компонентов.
Прокрутку (скроллинг) элементов на интервал DeltaX, DeltaY осуществляет метод: procedure ScrollBy(DeltaX, DeltaY: Integer);
Прибегая к вызову этой процедуры, можно при желании осуществить прокрутку нестандартным способом, т. е. без привлечения полос прокрутки. Приведенный ниже фрагмент кода -- составная часть примера IMGSCROL на дискете-- позволяет "тащить" изображение Imagel вслед за мышью с нажатой кнопкой:
type
TMouseState = (msNormal, msDragging);
var
OldPos, NewPos, MaxShift: TPoint;
PMouseState : TMouseState;
procedure TFormI.ScrollMouseDown(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState; X, Y: Integers-begin
MaxShift.X := Imagel.Parent.Width - Imagel.Width;
MaxShift.Y := Imagel.Parent.Height - Imagel.Height;
if (MaxShift.X > 0) and (MaxShift.Y > 0) then Exit;
FMouseState := msDragging;
OldPos := Point(X, Y) ;
Screen.Cursor := crDrag;
end;
procedure TFormI.ScrollMouseMove(Sender : TObject;
Shift: TShiftState; X, Y: Integers-begin
if FMouseState = msDragging then begin
NewPos := Point(X - OldPos.X, Y - OldPos.Y) ;
if Imagel.Left + NewPos.X > 0 then NewPos.X := - Imagel.Left;
if Imagel.Left + NewPos.X < MaxShift.X
then NewPos.X := MaxShift.X - Imagel.Left;
if Imagel.Top + NewPos.Y > 0 then NewPos.Y := - Imagel.Top;
if Imagel.Top + NewPos.Y < MaxShift.Y
then NewPos.Y := MaxShift.Y - Imagel.Top;
Imagel.Parent.ScrollBy(NewPos.X, NewPos. Y) ;
end;
end;
procedure TFormI.ScrollMouseUp(Sender: TObject;
Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FMouseState -.= msNormal;
Screen.Cursor := crDefault;
end;
Обратите внимание, что прокрутка неоконного компонента Imagel осуществляется посредством вызова Image l.Parent.ScrollBy. Это свидетельствует о том, что конкретный родительский тип для этого безразличен. В примере изображение помещено на панель (TPanel). Впрочем, метод ScrollBy используется также и полосами прокрутки, которые есть в компоненте TScrollingWinControl и его потомках, например, в TForm.
В VCL предусмотрена возможность написания приложений, которые будут сохранять относительный размер и положение при всех разрешениях дисплея. Более подробно эти механизмы описаны в разделе, посвященном формам; для TWinControl упомянем лишь метод procedure ScaleBy(M, D: Integer); который изменяет масштаб элемента управления в M/D раз, при этом верхний левый угол остается неподвижным. Так же изменяются и размеры всех дочерних элементов. Соответственно изменяется и масштаб шрифта (свойство Font). Флаги csFixedWidth и csFixedHeight в свойстве ControlStyle предотвращают изменение ширины или высоты.
При изображении большинства оконных элементов управления используют эффект "трехмерности", создающий иллюзию приподнятости или вдавленное™ за счет подбора внешнего вида обрамления. Наличие "трехмерности" задается свойством: (РЙ property Ctl3D: Boolean;
Нужно уточнить, что это свойство есть не у всех компонентов. Для части компонентов трехмерность реализована средствами VCL; другая же часть (радиокнопки, флажки и др.) требует для создания трехмерного эффекта доступа к библиотеке CTL3DV2.DLL.
Шрифт, которым выводится текст, связанный с элементом управления: property Font: TFont;
Кисть, используемая для закрашивания рабочей области оконного элемента управления, представлена свойством: (Ro) property Brush: TBrush;
Она имеет цвет, содержащийся в свойстве Color (по умолчанию clWindow). На уровне TControl оно доступно только по чтению: property Color: TColor;
Подробно о последних двух типах см. в разделе "Графическая подсистема".
Реакция на события от мыши и клавиатуры.
Традиционно пользователь может предусмотреть реакцию на нажатие и отпускание любой из кнопок и перемещение курсора мыши. Эти три события обеспечивают интерфейс каждого элемента управления с мышью. Первые два из них имеют формат:
(р^ property OnMouseDown: TMouseEvent;
(Pb) property OnMouseUp: TMouseEvent;
TMouseEvent = procedure(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer) of object;
Параметры:
Sender -- элемент-источник сообщения (обычно равен Self);
Button -- идентификатор одной из кнопок;
TMouseButton = (mbLeft, mbRight, mbMiddle);
Shift -- множество, которое может содержать элементы:
ssAlt, ssCtrl, ssShift -- в зависимости от состояния этих клавиш;
ssLeft, ssRight, ssMiddle, ssDouble -- в зависимости от нажатия кнопок мыши (ssDouble -- нажать! и правая, и левая кнопки);
X, Y -- координаты нажатия (в системе координат клиентской области получателя).
При перемещении мыши возникает событие:
(Pb) property OnMouseMove: TMouseMoveEvent ;
TMouseMoveEvent = procedure(Sender: TObject; Shift: TShiftState;
X, Y: Integer) of object;
Использование сообщений от мьшш уже встречалось в примерах, приведенных вьппе (например, см. разд. "Положение, размеры и выравнивание элементов управления"). Два события извещают о щелчке и двойном щелчке левой кнопкой мыши над компонентом:
(pt) property OnClick: TNotifyEvent;
(Pb) property OnDblClick: TNotifyEvent;
Отменить генерацию этих событий можно, удалив флаг csClickEvents из слова состояния элемента (ControlStyle). Для некоторых компонентов (например, кнопок) OnClick возникает еще и при нажатии определенных клавиш на клавиатуре, а также вследствие вызова метода Click.
События, связанные с мышью, могут быть получены потомками TControl. В отличие от них, реакцию на события от клавиатуры могут иметь только оконные элементы управления ("могут", т. к. на уровне TControl и TWinControl эти события только описаны, но не опубликованы). Таким образом, есть компоненты (в том числе в Палитре компонентов), не имеющие связи с этими событиями из-за ее ненадобности. Впрочем, их меньшинство, и материал в этом разделе обобщен вполне обоснованно.
Нажатие и отпускание клавиш клавиатуры могут инициировать следующие события:
§ property OnKeyDown: TKeyEvent;
property OnKeyUp: TKeyEvent;
eyEvent = procedure(Sender: TObject; var Key: Word;
Shift: TShiftState) of object;
Генерация этих событий встроена в обработчики сообщений Windows WMJCEYDOWN, WMJSYSKEYDOWN и WM_KEYUP, WM_SYSKEYUP соответственно. Обработчику передаются:
Sender -- источник сообщения;
Shift -- состояние специальных клавиш и кнопок мыши во время нажатия (отпускания);
Key -- код нажатой клавиши, представляющий собой виртуальный код клавиши Windows (константы вида VK_XX, например, VK_F1, VK_ESCAPE и т. п.). Обратите внимание, что Key является var-параметром; т. е. его значение может быть изменено программистом.
Другое событие, возникающее вследствие нажатия клавиши:
property OnKeyPress :. TKeyPressEvent;
TKeyPressEvent = procedure(Sender: TObject; var Key: Char) of object;
Это событие возникает при вводе с клавиатуры символа ASCII, т. е. оно не генерируется, например, при нажатии функциональных клавиш или <CapsLock>. Обработчик события вызывается при нажатии буквенных (в т. ч. вместе с <Shift>), цифровых клавиш, комбинаций <Ctri>+<A> .. <Ctd>+<Z> (коды ASCII #1..#26), <Enter>, <Esc>, <Backspace>, <Ctrl>+<Break> (код #3) и некоторых других. Также код ASCII можно сгенерировать, нажав <А11>+<десятичньш код символа> на числовой клавиатуре (Numeric Pad).
Событие OnKeyPress соответствует сообщению Windows WM_CHAR.
Все сообщения клавиатуры поступают тому элементу управления, который в данный момент имеет фокус ввода. Однако из этого правила возможно одно исключение. Если у формы, которая содержит этот элемент управления, свойство (Pb) property KeyPreview: boolean;
установлено в True, то сначала все три вида сообщений поступают к ее обработчикам, и только потом -- к элементу управления. Если при этом в них обнулить параметр Key, то в элемент сообщение не поступит вообще. В приведенном ниже примере клавиша <F5> резервируется для изменения состояния формы:
procedure TFormI.FormCreate(Sender: TObject);
begin KeyPreview := True;
end;
procedure TFonnl.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin if Key = VK_F5 then
begin
if ssCtrl in Shift then WindowState := wsNormal
else if Shift = [] then
WindowState := wsMaximized;
Key : = 0 ;
end;
end;
2.3 Простые операторы
Оператор - языковая конструкция, представляющая описание команды или комплекса команд по обработке и преобразованию данных. Все операторы делятся на две части - простые операторы и структурные операторы.
К простым относятся: оператор присваивания, оператор безусловного перехода, составной оператор, оператор процедур, специальные операторы.
Оператор присваивания.
В параграфе 1.4 было дано краткое определение этого оператора - одного самых простых и наиболее часто используемых операторов. Напомним, что его синтаксис имеет вид
x := y;
где x - имя переменной или функции; y - совместимое по типу выражение (о совместимости типов см. гл. 8). Символы ":=" обозначают операцию присваивания, в соответствии с которой вычисленное значение выражения y присваивается переменной x.
Примеры операторов присваивания (комментарии показывают присвоенные значения):
Var
Ch: Char;
S: String[5];
Q: String[18];
L, J: Integer;
P: Byte;
R: Real;
B: Boolean;
Rec: Record
A: Word;
B: String[20];
End;
Оператор присваивания |
Значение |
|
Q:= 'd:\Dir1\Word\a.txt'; S:= Q; Q:= S+'r\'; Ch:=Q[2]; L:= 450; P:= L; J:= 100; R:= -L / J; J:=-L / J; J:=-L - 200; B:= J > L; B:= (J < L) and (Q[5] = 'i'); Rec.A:= J-20; Rec.B:= 20; Rec.B:= S[1]+S[3]+'\d'; |
'd:\Dir1\Word\a.txt' 'd:\Di' 'd:\Dir\' ':' 450 Ошибка, т. к. max P = 255 100 -4.5 Ошибка. Несоответствие типов 250 False True 230 Ошибка. Несоответствие типов 'd\\d' |
Оператор безусловного перехода.
Этот оператор выполняет передачу управления оператору, которому предшествует метка. Синтаксис оператора: Goto Метка;
Язык допускает в качестве меток использовать имя или значение целого типа из диапазона 1 .. 9999.
При использовании операторов перехода необходимо придерживаться следующих правил:
1. Все метки, используемые в блоке, должны быть описаны словом Label.
Пример оператора описания меток:
Label 1, 2, Met1, Met2, Met3;
2. Метка должна располагаться в том же блоке, что и оператор, который ею помечен.
3. Недопустим переход к метке внутрь структурного оператора (например, внутрь цикла, минуя его заголовок). Компилятор не реагирует на эту ситуацию, однако поведение программы может быть непредсказуемо. Недопустимы также вход или выход по метке в процедурах или функциях.
Оператор обращения к процедуре.
Этот оператор вызывает активизацию операторов, расположенных в теле процедуры (см. параграф 15.1). После выполнения процедуры управление передается к оператору, расположенному вслед за оператором процедуры.
При вызове процедуры её формальным параметрам должны строго соответствовать по совместимости типов и количеству фактические параметры.
Примеры обращения к процедурам:
Val (s, r, Code);
Sort (a, n * 2);
SaveParameters;
Обращение к функции.
Следует подчеркнуть, что не существует специального оператора обращения к функции (см. параграф 15.1). Обычно такое обращение производится посредством другого оператора, часто оператора присваивания.
Обращение к функции активизирует ее внутренние операторы точно так же, как это происходит в процедурах. Принципиальное отличие между выполнением процедуры и функции состоит в следующем:
- после выполнения оператора процедуры управление передается к следующему за ним оператору;
- после выполнения функции управление вновь передается в оператор, который содержит обращение к этой функции, с целью передачи в него вычисленного значения функции и для завершения вычислений внутри этого оператора.
Поясним это на примере оператора присваивания, содержащего обращение к функции Func8: G:= 2 * Pi * Func8(m, n, a) / Sqr (z);
При выполнении этого оператора сначала происходит обращение к функции Func8. После выполнения операторов, составляющих тело этой функции, вычисленное значение возвращается в этот оператор, где оно используется для выполнения дальнейших вычислений внутри оператора.
Заключение
Delphi позволяет легко и просто включать в программу такие мультимедийные объекты, как звуки, видео и музыку. В данном уроке обсуждается, как это сделать, используя встроенный в Delphi компонент TMediaPlayer. Подробно рассматриваются управление этим компонентом в программе и получение информации о текущем состоянии. В данный момент и в данном месте, наверное, лучше дать по возможности наиболее общее определение и сказать, что “мультимедиа” - это термин относящийся к почти всем формам анимации, звукам, видео, которые используются на компьютере. Давая такое общее определение, нужно сказать, что в данном уроке мы имеем дело с подмножеством мультимедиа, которое включает:
1. Показ видео в формате Microsoft's Video for Windows (AVI).
2. Воспроизведение звуков и музыки из MIDI и WAVE файлов.
Данную задачу можно выполнить с помощью динамической библиотеки Microsoft Multimedia Extensions для Windows (MMSYSTEM.DLL), методы которой инкапсулированы в компоненте TMediaPlay, находящийся на странице System Палитры Компонент Delphi. Для проигрывания файлов мультимедиа может потребоваться наличие некоторого оборудования и программного обеспечения. Так для воспроизведения звуков нужна звуковая карта. Для воспроизведения AVI в Windows 3.1 (или WFW) требуется установить ПО Microsoft Video. В Delphi есть компонент TMediaPlayer, который дает Вам доступ ко всем основным возможностям программирования мультимедиа. Данный компонент очень прост в использовании. Фактически, он настолько прост, что многим начинающим программистам будет проще создать свою первую программу, проигрывающую видео или музыку, нежели показывающую классическую надпись "Hello World".
Простоту использования можно воспринимать двояко:
- С одной стороны - это дает возможность любому создавать мультимедиа приложения.
- С другой стороны, можно обнаружить, что в компоненте реализованы не все возможности. Если Вы захотите использовать низкоуровневые функции, то придется копаться достаточно глубоко, используя язык Delphi.
В данном уроке не описываются подробности внутренних вызовов мультимедийных функций при работе компонента. Все что нужно знать - это то, что компонент называется TMediaPlayer, и что он дает доступ к набору подпрограмм, созданных Microsoft и называемых Media Control Interface (MCI). Эти подпрограммы дают программисту простой доступ к широкому кругу устройств мультимедиа. Собственно работа с TMediaPlayer интуитивно понятна и очевидна.
Список используемой литературы
1. Методика преподавания информатики: Учеб. пособие для студ. пед.вузов / М.П.Лапчик, И.Г.Семакин, Е.Х.Хеннер; Под общей ред. М.П.Лапчика.-М.:Издательский центр "Академия",2001.-624с.
2. Острейковский В.А Информатика:Учеб.для вузов.-М.:Высш.шк.,2001.-511с.
3. Бочкин А.И. Методика преподавания информатики: Учеб.пособие.-Минск:Вышэйш.шк..1998.-451с.
4. Гейн А.Г., Сенокосов А.И., Шолохович В.Ф. Информатика. Классы 7-9.-М.:Дрофа,1998.-387с.
5. Кузнецов А.А., Апатова Н.В. Основы информатики: 8-9кл.-М.:Дрофа,1999.-451с.
6. Лапчик М.П. Информатика и информационные технологии в системе общего и профессионального образования: Монография.-Омск,1999.-540 с.
7. Новые педагогические и информационные технологии в системе образования: Учеб.пособие/ Под ред. Е.С.Полат и др.-М.:Издательский центр "Академия",2000.-595с.
8. Семакин И.Г.,Вараксин Г.С. Структурированный конспект базового курса информатики.-М.: Лаборатория Базовых Знаний,2000.-389с.
9. Семакин И.Г., Шеина Т.Ю. преподавание базового курса информатики в средней школе: Метод. пособие.-М.: Лаборатория Базовых Знаний,2000.-423с.
10. Угринович Н.Д. Информатика и информационные технологии: Учеб. пособие-М.,2000.-432с.
Приложение
Следующая программа ведет простую базу данных. При каждом ее запуске на экране появляется диалоговое окно (рис. ), в поля которого пользователь может ввести дату и температуру воздуха.
Рис. 1. Диалоговое окно программы База данных "Погода"
Дата вводится в поле Edit1, температура -- в поле Edit2. Текст программы приведен ниже:
Простая база данных (запись в файл)
unit pogoda_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit; // дата
Edit2: TEdit; // температура
Button1: TButton; // кнопка Добавить
Label1: TLabe1;
Label2: TLabe1;
procedure FormActivate(Sender: TObject);
procedure ButtonlClick(Sender: TObject);
procedure FormClose(Sender: TObject;
var Action: TCloseAction); private
{ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
DBNAME = 'a:\pogoda. db';
var
db: TextFile; // файл -- база данных
procedure TForm1.FormActivate(Sender: TObject);
begin
AssignFile(db, DBNAME);. {$I-}
Append(db); if IOResult = 0 then
begin
Edit1.Text := DateToStr(Date); // получить текущую дату
Edit2.SetFocus; // курсор в поле Edit2
end
else begin
Rewrite(db); if IOResult <> 0 then begin
// сделать недоступными поля ввода // и командную кнопку
Edit1.Enabled := False; Edit2.Enabled := False;
Buttonl.Enabled := False; ShowMessage('Ошибка создания '+DBNAME);
end;
end;
end;
// щелчок на кнопке Добавить
procedure TForml.Button1Click(Sender: TObject);
begin
if (Length(edit1.text)=0) or (Length(edit2.text)=0)
then ShowMessage('Ошибка ввода данных.'
+#13+'Bce поля должны быть заполнены.')
else writeln(db, editl.text,' ',edit2.text);
end;
// Событие OnClose возникает при закрытии формы
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
CloseFile(db); // закрыть файл БД
end;
end.
Файл базы данных открывает процедура FormActivate, которая обрабатывает событие onActivate. Событие OnActivate возникает в момент активизации формы, поэтому процедура запускается автоматически, при активизации формы приложения. Если операция открытия файла завершается успешно, то в поле Edit1 записывается текущая дата. Информация о текущей дате возвращает функция Date. Для преобразования возвращаемого функцией Date значения (числа типа Double) в удобную для восприятия форму используется функция Dateiostr. После записи даты в поле Editi процедура обработки события onActivate с применением метода setFocus устанавливает курсор в поле ввода температуры. Если в процессе открытия или создания нового файла возникает ошибка, то процедура делает недоступной кнопку Добавить и выводит информационное сообщение.
Процедура TForm1.Button1Click (процедура обработки события onclick) запускается нажатием кнопки Добавить (Button1). В результате введенная информация записывается в базу данных -- файл pogoda.db. Перед выполнением записи программа проверяет, все ли поля формы заполнены, и, если не все, то выводит информационное сообщение. В результате работы процедуры в конец файла pogoda.db будет добавлена строка, содержащая дату (число, месяц, год) и температуру. В данной программе используется инструкция writein, а не write, для того чтобы данные за каждый день располагались в базе данных на отдельной строке.
Обратите внимание, что список вывода инструкции writein состоит из трех элементов. После вывода в файл даты (Edit1.text) в файл записывается пробел, а затем-- температура (edit2.txt). Если температуру записать в файл сразу после даты, то числа, соответствующие году и температуре, сольются в одну последовательность цифр. Закрывает базу данных процедура TFormi.Formciose, которая обрабатывает событие enclose, возникающее при закрытии формы приложения. После нескольких запусков программы файл pogoda.db может быть, например, таким:
Подобные документы
Изучение общей структуры языка программирования Delphi: главные и дополнительные составные части среды программирования. Синтаксис и семантика языка программирования Delphi: алфавит языка, элементарные конструкции, переменные, константы и операторы.
курсовая работа [738,1 K], добавлен 17.05.2010Средства языка программирования Delphi. Структурные типы данных. Строковые переменные, массивы, множества, файлы. Механизм классов в C++. Интерфейсный и описательный обзоры классов в Delphi. Работа с текстовыми и бинарными файлами прямого доступа.
курсовая работа [990,4 K], добавлен 07.08.2012Delphi как среда разработки программ, ориентированных на работу в Windows. Назначение и преимущество использования электронных учебников. Описание возможностей среды Delphi 5 для разработки электронного учебника. Варианты применения служб Internet.
дипломная работа [3,6 M], добавлен 13.07.2011Сущность программирования с использованием среды Delphi 7 и ее основные графические возможности. Структура автономно компилируемого программного модуля и его принципы. Основные приемы работы с графическими процедурами, построение дуги, круга и эллипса.
курсовая работа [138,2 K], добавлен 16.12.2011Borland Delphi 7 как универсальный инструмент разработки, применяемый во многих областях программирования, функции: добавление информации об абитуриентах в базу данных, формирование отчетов. Рассмотрение и характеристика основных компонентов Delphi.
контрольная работа [3,6 M], добавлен 18.10.2012Теоретические основы объектно-ориентированного языка программирования Delphi, изучение среды визуального проектирования приложений. Определение 40-го числа Фибоначчи, составление листинга и блок-схемы программы, тестирование ее на работоспособность.
курсовая работа [261,1 K], добавлен 25.03.2015Предмет объектно-ориентированного программирования и особенности его применения в средах Паскаль, Ада, С++ и Delphi. Интегрированная среда разработки Delphi: общее описание и назначение основных команд меню. Процедуры и функции программы Delphi.
курсовая работа [40,8 K], добавлен 15.07.2009Основы программирования, работа в консольном режиме Delphi. Правила оформления комментариев. Типы данных, используемые в консольном режиме. Текстовый редактор Delphi Memo. Пример загрузки текстового файла. Примеры решения и оформления простейших задач.
отчет по практике [2,1 M], добавлен 11.03.2014Общая характеристика системы программирования Delphi, а также принципы создания ее компонентов. Описание значений файлов приложения, созданного с помощью Delphi. Структура и свойства библиотеки визуальных компонентов (Visual Component Library или VCL).
отчет по практике [1,1 M], добавлен 07.12.2010Delphi - среда быстрой разработки, в которой в качестве языка программирования используется типизированный объектно-ориентированный язык Delphi. Варианты программного пакета. Особенности работы, вид экрана после запуска. Описание структуры программы.
курсовая работа [1,3 M], добавлен 25.11.2014