Delphi red.ppt
- Количество слайдов: 50
Delphi Среда визуального проектирования
Среда Delphi
визуальное проектирование определение поведения
Часто используемые события On. Activate — при получении формой фокуса ввода; On. Click, On. Dbl. Click — при одинарном и двойном щелчке мышью; On. Close — при закрытии формы; On. Create — при создании формы; On. Key. Down, On. Key. Up — при нажатии и отпускании любой клавиши и их сочетаний; On. Key. Press — при нажатии клавиши, имеющей код ASCII; On. Mouse. Down, On. Mouse. Up — при нажатии и отпускании кнопки мыши; On. Mouse. Move — при перемещении мыши; On. Paint — при необходимости отрисовки формы.
Описание основных файлов. dpr — файл проекта. . pas — исходный код модуля или формы. . dfm — файл формы. . cfg, . dsk, . dof — файлы настроек компилятора, среды и проекта. . res — файл ресурсов (создается автоматически). . exe — исполняемый файл созданного приложения. . ~dp, . ~pa, . ~df — резервные файлы проекта, модуля и формы.
Целый тип Язык Delphi поддерживает семь целых типов данных: shortint, smailint, Longint, Int 64, Byte, word и Longword. Тип Диапазон Формат Shortint -128… 127 8 битов Smallint -32 768 … 32 767 16 битов Longint -2 147 483 648 … 2 147 483 32 бита 647 Int 64 -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 поддерживает шесть вещественных типов: Real 48, Single, Double, Extended, Comp, Currency. Тип Диапазон Значащих Байтов цифр Real 48 Single 2. 9 x 10 -39 -1. 7 x 1038 1. 5 x 10 -45 -3. 4 х 1038 11 -12 7 -8 06 04 Double Extended Comp Currency 5. 0 x 10 -324 -1. 7 x 10308 3. 6 x 10 -4951 -1. 1 х104932 263+1 - 263 -1 -922 337 203 685 477. 5808 … 922 337 203 685 477. 5807 15 -16 19 -20 08 10 08 08 Язык Delphi поддерживает и наиболее универсальный вещественный тип - Real, который э квивалентен Double.
Символьный тип Язык Delphi поддерживает два символьных типа: Ansichar и Widechar: тип Ansichar — это символы в кодировке ANSI, которым соответствуют числа в диапазоне от 0 до 255; тип widechar — это символы в кодировке Unicode, им соответствуют числа от 0 до 65 535. Object Pascal поддерживает и наиболее универсальный символьный тип - Char, который эквивалентен Ansichar.
Строковый тип Язык Delphi поддерживает три строковых типа: shortstring, Longstring Wide. String: тип shortstring представляет собой статически размещаемые в памяти компьютера строки длиной от 0 до 255 символов; тип Longstring представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти; тип Wide. String представляет собой динамически размещаемые в памяти строки, длина которых ограничена только объемом свободной памяти. Каждый символ строки типа Wide. String является Unicode-символом. В языке Delphi для обозначения строкового типа допускается использование идентификатора string, который эквивалентен типу shortstring.
Логический тип Логическая величина может принимать одно из двух значений True (истина) или False (ложь). В языке Delphi логические величины относят к типу Boolean. Примеры записи дробных чисел Число 1 000 -123. 452 0. 0056712 Алгебраическая форма 1 х106 -1, 23452 x 102 5, 6712 х10 -3 Форма с плавающей точкой 1. 00000 Е+06 -1. 2345200000 Е+02 5. 6712000000 Е-03
Стандартные функции Для выполнения часто встречающихся вычислений и преобразований язык Delphi предоставляет программисту ряд стандартных функций. Значение функции связано с ее именем. Поэтому функцию можно использовать в качестве операнда выражения, например в инструкции присваивания. k: =Sqrt(n), где Sqrt — функция вычисления квадратного корня, п — переменная, которая содержит число, квадратный корень которого надо вычислить. Функция характеризуется типом значения и типом параметров. Тип переменной, которой присваивается значение функции, должен соответствовать типу функции.
Функции преобразования наиболее часто используются в инструкциях, обеспечивающих ввод и вывод информации. Например, для того чтобы вывести в поле вывода (компонент Label) диалогового окна значение переменной типа real, необходимо преобразовать число в строку символов, изображающую данное число. Например, команда Label 1. caption : = Fioat. Tostr(x) выводит значение переменной х в поле Label 1.
Функции преобразования Функция Int. To. Str (k) Значение функции Целое число k преобразует в строку, являющуюся изображением этого числа k. Float. To. Str (n) Вещественное число n преобразует в строку, являющуюся изображением этого числа n. Float. To. Str. F (n, f, k, m) Вещественное число n преобразует в строку f — формат (способ изображения); k — точность (нужное общее количество цифр); m — количество цифр после десятичной точки Str. To. Int (s) Получает целое число, изображением которого является строка s Str. To. Float (s) Получает вещественное число, изображением которого является строка s
Ввод данных Чаще всего ввод данных происходит из 1. поля редактирования (компонент Edit) 2. окна ввода.
Ввод из поля редактирования Поле редактирования — это компонент Edit. Ввод данных из поля редактирования осуществляется обращением к свойству Text. диалоговое окна программы пересчета веса из фунтов в килограммы Компонент Edit 1 используется для ввода данных Компонент Edit 1 используется для ввода исходных данных. Команда ввода данных в этом случае будет иметь вид: Funt : = Str. To. Float(Editl. Text);
Ввод из окна ввода Окно ввода — это стандартное диалоговое окно, которое появляется на экране в результате вызова функции input. Box. Значение функции input. Box — строка, которую ввел пользователь. Команда ввода данных с использованием функции input. Box: Переменная : = Input. Box(Заголовок, Подсказка, Значение); где: Переменная — переменная строкового типа, значение которой должно быть получено от пользователя; Заголовок — текст заголовка окна ввода; Подсказка — текст поясняющего сообщения; Значение — текст, который будет находиться в поле ввода, когда окно ввода появится на экране.
Команды, которая получает исходные данные для программы пересчета веса из фунтов в килограммы: s: =Input. Box('Фунты-килограммы', 'Введите вес в фунтах', '0'); Окно ввода, соответствующее этой команде Значение функции input. Box строкового (string) типа. Для получения числовой величины нужно воспользоваться соответствующей функции преобразования. Например: s: =Input. Box('Фунты-килограммы1, 'Введите вес в фунтах', ’ 0'); funt : = Str. To. Float(s);
Вывод в окно сообщения Окна сообщений используются для привлечения внимания пользователя. При помощи окна сообщения программа может, к примеру, проинформировать об ошибке в исходных данных или запросить подтверждение выполнения необратимой операции, например, удаления файла. Вывести на экран окно с сообщением можно при помощи процедуры Show. Message или функции Message. Dlg.
Процедура Show. Message выводит на экран окно с текстом и командной кнопкой ОК. В общем виде инструкция вызова процедуры Show. Message выглядит так: Show. Message(Сообщение); где сообщение — текст, который будет выведен в окне. Show. Message('Введите вес в фунтах. '); В заголовке окна сообщения, выводимого процедурой Show. Message, указано название приложения.
Функция Message. Dlg более универсальная. Она позволяет поместить в окно с сообщением один из стандартных значков, например "Внимание", задать количество и тип командных кнопок и определить, какую из кнопок нажал пользователь. Окно, выведенное в результате выполнения команды: r: =Message. Dlg('Файл '+ FName + ' будет удален. ', mt. Warning, [mb. Ok, mb. Cancel] , 0) ;
Константы типа сообщения функции Message. Dlg Константа mt. Warning Тип сообщения Внимание mt. Error Ошибка mt Information Значок Информация mt. Confirmation Подтверждение mt. Custom Обычное Без значка
Главная программа • program Project 1; • uses Forms, • Unit 1 in 'Unit 1. pas' {Form 1}, • Unit 2 in 'Unit 2. pas' {Form 2}; • {$R *. res} • { Здесь можно поместить описания констант, переменных, • подпрограмм, доступных в пределах этого файла } • begin • Application. Initialize; • Application. Create. Form(TForm 1, Form 1); • Application. Create. Form(TForm 2, Form 2); • Application. Run; • end.
Структура модуля • unit <имя модуля>; • interface // Открытый интерфейс модуля • • implementation // Реализация модуля • • initialization { не обязательный } • finalization { не обязательный } • end.
Модуль с пустой формой • unit Unit 1; • interface • uses Windows, Messages, Sys. Utils, Variants, Classes, Graphics, Controls, Forms, Dialogs; • type • TForm 1 = class(TForm) • private • public • end; • var • Form 1: TForm 1; • implementation • {$R *. dfm} • end.
Графические возможности Delphi позволяет программисту разрабатывать программы, которые могут выводить графику: схемы, чертежи, иллюстрации. Программа выводит графику на поверхность объекта (формы или компонента Image). Поверхности объекта соответствует свойство canvas. Для того чтобы вывести на поверхность объекта графический элемент (прямую линию, окружность, прямоугольник и т. д. ), необходимо применить к свойству canvas этого объекта соответствующий метод. Например, для вычерчивания в окне программы прямоугольника, задается команда: Form 1. Canvas. Rectangle (10, 100, 100) Объект Свойство Метод
Свойство canvas — это объект типа TCanvas. Методы этого типа обеспечивают вывод графических примитивов (точек, линий, окружностей, прямоугольников и т. д. ), Свойства задают характеристики выводимых графических примитивов: цвет, толщину и стиль линий; цвет и вид заполнения областей; характеристики шрифта при выводе текстовой информации. (0, 0) Х У Холст состоит из отдельных точек — пикселов. Положение пиксела характеризуется его координатами (X, Y). Левый верхний пиксел имеет координаты (0, 0). Координаты возрастают сверху вниз и слева направо. Значения координат правой нижней точки холста зависят от размера холста. Размер холста можно получить, обратившись к свойствам Height и width области иллюстрации (image) или к свойствам формы: Client. Height и Clientwidth.
Значение свойства Color определяет цвет линии Константа Цвет cl. Black Черный cl. Navy Темно-синий cl. Silver Серебристый cl. Fuchsia Ярко-розовый cl. Maroon Каштановый cl. Purple Розовый cl. Red Красный cl. Aqua Бирюзовый cl. Green Зеленый cl. Teal Зелено-голубой cl. Lime Салатный cl. White Белый cl. Olive Оливковый cl. Gray Серый cl. Blue Синий Свойство width задает толщину линии (в пикселах). Например, инструкция Canvas. Pen. width: =2 устанавливает толщину линии в 2 пиксела.
Значение свойства Реn. Style определяет вид линии Константа Вид линии ps. Solid Сплошная линия ps. Dash Пунктирная линия, длинные штрихи ps. Dot Пунктирная линия, короткие штрихи ps. Dash. Dot Пунктирная линия, чередование длинного и короткого штрихов ps. Dash. Dot ps. Clear Пунктирная линия, чередование одного длинного и двух коротких штрихов Линия не отображается (используется, если не надо изображать границу области, например, прямоугольника)
Значение свойства Реп. Mode влияет на цвет линии Свойство Mode определяет, как будет формироваться цвет точек линии в зависимости от цвета точек холста, через которые эта линия прочерчивается. Константа Цвет линии Черный, не зависит от значения свойства Pen. Color pm. Black Белый, не зависит от значения свойства Pen. Color Цвет линии определяется значением свойства Pen. Color pm. White pm. Copy pm. Not Цвет линии является инверсным по отношению к значению свойства Pen. Color Цвет точки линии определяется как инверсный по отношению к цвету точки холста, в которую выводится точка линии
Значения свойства Brush. Style определяют тип закрашивания Константа bs. Solid bs. Clear bs. Horizontal Тип заполнения (заливки) области Сплошная заливка Область не закрашивается Горизонтальная штриховка bs. Vertical Вертикальная штриховка Диагональная штриховка с наклоном линий вперед bs. FDiagonal bs. BDiagonal bs. Cross bs. Diag. Cross Диагональная штриховка с наклоном линий назад Горизонтально-вертикальная штриховка, в клетку Диагональная штриховка, в клетку
Пример стилей заполнения областей,
Вывод текста Для вывода текста на поверхность графического объекта используется метод Text. Out. Инструкция вызова метода Text. Out в общем виде выглядит следующим образом: Объект. Canvas. Text. Out(x, у, Текст) где: объект — имя объекта, на поверхность которого выводится текст; х, у — координаты точки графической поверхности, от которой выполняется вывод текста (рис. 10. 3); Текст — переменная или константа символьного типа, значение которой определяет выводимый методом текст.
Свойства объекта TFont Шрифт определяется значением свойства Font объекта canvas. Свойство Font представляет собой объект типа TFont. Свойство Определяет Name Используемый шрифт. В качестве значения следует использовать название шрифта, например Arial Size Размер шрифта в пунктах (points). Пункт— это единица измерения размера шрифта, используемая в полиграфии. Один пункт равен 1/72 дюйма Style Стиль начертания символов. Константы: fs. Bold (полужирный), fsltalic (курсив), f s. Underline (подчеркнутый), f s. Strike. Out (перечеркнутый). Можно комбинировать необходимые стили. Например, Объект. Canvas. Font. Style : = [fs. Bold, fs Italic] Color Цвет символов. В качестве значения можно использовать константу типа Tcolor
Методы вычерчивания графических примитивов Любая картинка, чертеж, схема могут рассматриваться как совокупность графических примитивов: точек, линий, окружностей, дуг и др. Таким образом, для того чтобы на экране появилась нужная картинка, программа должна обеспечить вычерчивание (вывод) графических примитивов, составляющих эту картинку. Вычерчивание графических примитивов на поверхности компонента (формы или области вывода иллюстрации) осуществляется применением соответствующих методов к свойству Canvas этого компонента.
Точка Поверхности, на которую программа может осуществлять вывод графики, соответствует объект Canvas. Свойство Pixels, представляющее собой двумерный массив типа TColor, содержит информацию о цвете каждой точки графической поверхности. Используя свойство Pixels, можно задать требуемый цвет для любой точки графической поверхности, т. е. "нарисовать" точку. Например, инструкция Form 1. Canvas. Pixels[10, 10]: =cl. Red окрашивает точку поверхности формы в красный цвет. Размерность массива Pixels определяется размером графической поверхности. Свойство Pixels можно использовать для построения графиков.
Линия Вычерчивание прямой линии осуществляет метод Linе. То, инструкция вызова которого в общем виде выглядит следующим образом: Компонент. Canvas. Line. To(x, у) Метод Linе. То вычерчивает прямую линию от текущей позиции карандаша в точку с координатами, указанными при вызове метода. Начальную точку линии можно задать, переместив карандаш в нужную точку графической поверхности. Сделать это можно при помощи метода Move. To, указав в качестве параметров координаты нового положения карандаша. Вид линии (цвет, толщина и стиль) определяется значениями свойств объекта Pen графической поверхности, на которой вычерчивается линия.
Прямоугольник вычерчивается методом Rectangle, инструкция вызова которого в общем виде выглядит следующим образом: Объект. Canvas. Rectangle(x 1, y 1, x 2, y 2) где: объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание; x 1, y 1 и х2, у2 — координаты левого верхнего и правого нижнего углов прямоугольника.
Прямоугольник со скругленными углами Метод Round. Rec тоже вычерчивает прямоугольник, но со скругленными углами. Объект. Canvas. Round. Rec(x 1, y 1, х2, у2, х3, у3) где: x 1, y 1, х2, у2 -- параметры, определяющие положение углов прямоугольника, в который вписывается прямоугольник со скругленными углами; х3 и у3 — размер эллипса, одна четверть которого используется для вычерчивания скругленного угла.
Окружность и эллипс Метод Ellipse вычерчивает эллипс или окружность, в зависимости от значений параметров. Инструкция вызова метода в общем виде выглядит следующим образом: Объект. Canvas. Ellipse(x 1, y 1, х2, у2); где: объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание; x 1, y 1, х2, у2 — координаты прямоугольника, внутри которого вычерчивается эллипс или, если прямоугольник является квадратом, окружность
Дуга Вычерчивание дуги выполняет метод Arc: Объект. Canvas. Arc(x 1, y 1, х2, у2, х3, у3, х4, у4), где: x 1, y 1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является вычерчиваемая дуга; х3, у3 — параметры, определяющие начальную точку дуги; х4, у4 — параметры, определяющие конечную точку дуги. Начальная (конечная) точка — это точка пересечения границы эллипса и прямой, проведенной из центра эллипса в точку с координатами (х3, у3) и (х4, у4). Дуга вычерчивается против часовой стрелки от начальной точки к конечной
Сектор Метод Pie вычерчивает сектор эллипса или круга. Объект. Canvas. Pie(x 1, y 1, x 2, y 2, х3, у3, х4, у4) где: x 1, y 1, х2, у2 — параметры, определяющие эллипс (окружность), частью которого является сектор; х3, у3, х4, у4 — параметры, определяющие координаты конечных точек прямых, являющихся границами сектора. Начальные точки прямых совпадают с центром эллипса (окружности). Сектор вырезается против часовой стрелки от прямой, заданной точкой с координатами (х3, у3), к прямой, заданной точкой с координатами (х4, у4)
Условный оператор if {условие} then begin Команда 1; Команда 2; Команда 3 end; if {условие} then begin {. . . } {команды, если условие выполняется} {. . . } end else begin {. . . } {команды, если условие не выполняется} {. . . } end;
В качестве примера создадим программу расчёта сопротивления электрической цепи, состоящей из двух сопротивлений. Предоставим возможность выбора типа соединения - последовательное или параллельное. Для начала создадим интерфейс. Разместим на форме 2 поля TEdit для ввода величин сопротивлений (Edit 1, Edit 2). Для выбора типа соединения разместим 2 TRadio. Button с соответствующими надписями (Radio. Button 1, Radio. Button 2). Результат будем выводить в TLabel (Label 1), а вычисления будем производить при нажатии на кнопку TButton (Button 1). Получиться должно примерно следующее: Далее дважды щёлкаем по кнопке и пишем обработчик.
procedure TForm 1. Button 1 Click(Sender: TObject); var R 1, R 2, R: Real; begin R 1: =Str. To. Float(Edit 1. Text); R 2: =Str. To. Float(Edit 2. Text); if Radio. Button 1. Checked then R: =R 1+R 2 else R: =(R 1*R 2)/(R 1+R 2); Label 1. Caption: ='Сопротивление цепи: '+Float. To. Str(Round. To(R, -2))+' Ом' end;
Пример программы с использованием оператора выбора. procedure TForm 1. Button 1 Click(Sender: TObject); var Month: Integer; begin Month: =Str. To. Int(Edit 1. Text); case Month of 1, 2, 12: Show. Message('Зима'); 3. . 5: Show. Message('Весна'); 6. . 8: Show. Message('Лето'); 9. . 11: Show. Message('Осень') else Show. Message('Число должно быть от 1 до 12. ') end;
FOR переменная-счётчик : = начальное_значение [TO / DOWNTO] конечное_значение DO {Действия} Пример Рассмотрим пример, речь о котором шла в начале статьи, только немного усложним его - будем выводить не только числа от 1 до 100, но и их квадраты
procedure TForm 1. Button 1 Click(Sender: TObject); var i: Integer; begin Memo 1. Lines. Clear; for i : = 1 to 100 do Memo 1. Lines. Add(Int. To. Str(i)+': '+Int. To. Str(Sqr(i))) end;


