Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методич Делфи.doc
Скачиваний:
248
Добавлен:
13.04.2015
Размер:
688.64 Кб
Скачать

1.2. Контрольные вопросы

1. Что такое Delphi.

2. Какие технологии включает Delphi?

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

4. Опишите главные окна Delphi.

5. Сохранение проекта Delphi.

6. Структура программы Delphi.

7. Как задать переменную в Delphi?

1.3. Задания

1. Написать программу, вычисляющую частное от деления двух целых чисел.

2. Даны два числа. Написать программу, определяющую среднее арифметическое этих чисел.

3. Написать программу, которая суммирует произвольное количество целых чисел.

4. Написать программу, которая определяет площадь прямоугольника со сторонами a и b.

5. Написать программу, которая определяет периметр прямоугольника со сторонами a и b.

6. Написать программу, которая определяет произведение двух отрицательных чисел.

7. Даны катеты прямоугольного треугольника. Написать программу, вычисляющую гипотенузу.

8. Даны основания и высота трапеции. Написать программу, вычисляющую ее площадь.

9. Написать программу, определяющую площадь прямоугольного параллелепипеда.

10. Написать программу, определяющую площадь поверхности круглого конуса.

Тема № 2 компоненты delphi

Цель работы: научиться создавать форму, использовать компоненты Delphi.

2.1. Теоретическая часть

Объект - совокупность свойств, методов, событий. Объект как бы состоит из методов, свойств и событий, и они обеспечивают его полноценную работу. Представим себе кнопку. Она обладает:

свойствами (цвет, текст на кнопке, шрифт текста и т. д.);

событиями (например, нажатие на кнопку);

методами (например, метод прорисовки текста, фокуса и т. д.).

Если все это объединить, то получается автономный объект, который может работать в различных условиях. В этом случае достаточно только установить кнопку на форме, и она уже готова к применению.

Свойства - это переменные, которые влияют на состояние объекта.

Методы - это те же процедуры и функции, т. е. это то, что объект умеет делать. Например, объект может иметь процедуру для вывода какого-то текста на экран. Эта процедура и есть метод, который принадлежит объекту.

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

Рассмотрим пример. Пусть пользователь нажал на кнопку. В этом случае она, как объект, генерирует соответствующее событие. В результате этого может быть вызвана процедура-обработчик, которую вы назначили кнопке при возникновении данного события. В этом случае не требуется никакая дополнительная информация, поэтому объект не будет пересылать вам никаких параметров, кроме указателя на самого себя. Однако, если нужно обработать событие, связанное с перемещением курсора мыши, дело будет обстоять несколько иначе. В этом случае объект будет генерировать событие и автоматически передавать вам новые координаты X и Y курсора, поэтому процедура должна быть объявлена с соответствующими параметрами, чтобы можно было принять их от объекта.

Компоненты в Delphi — это особые объекты, которые являются строительными кирпичиками среды визуальной разработки и приспособлены к визуальной установке свойств.

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

Компоненты располагаются на соответствующих вкладках палитры компонентов на главном окне. Все основные компоненты Delphi находятся на первых четырёх вкладках (при стандартной их расстановке). Их названия всплывают в виде подсказок при наведении мышки на пиктограммы. Чтобы перенести компонент на форму, нужно щёлкнуть на нем мышкой, и затем щёлкнуть в том месте формы, где его предполагается разместить.

Таблица 1 - Основные элементы палитры компонентов Delphi

Пикто-грамма

Имя

Назначение

Вкладка «Standard»

MainMenu

Главное меню программы. Компонент способен создавать и обслуживать сложные иерархические меню.

PopupMenu

Всплывающее меню. Обычно это меню появляется после нажатия правой кнопкой мыши.

Label

Метка. Используется для размещения не очень длинных сообщений в виде статического текста

Edit

Строка ввода. Предназначена для ввода пользователем текстовой информации в виде одной строки.

Memo

Многострочный текстовый редактор. Используется для ввода и отображения многострочного текста без функций форматирования.

Button

Командная кнопка. Используется для реализации в программе команд с помощью обработчика события onclick этого компонента.

CheckBox

Независимый переключатель. Используется его свойство Checked (отмечено), имеющее значения true или false, меняющееся при щелчке мышью.

RadioButton

Зависимый переключатель. Используется для выбора одного из нескольких вариантов. Для этого компонент объединяется как минимум с одним или компонентом в группу. Щелчок по компоненту приводит к его выделению и снятию выделения ранее выбранного компонента.

ListBox

Список выбора. Содержит список предлагаемых вариантов (опций) и даёт возможность проконтролировать текущий выбор.

ComboBox

"Выпадающий" список выбора. Представляет собой комбинацию компонентов Edit и ListBox.

GroupBox

Контейнер группы компонентов. Используется для группировки нескольких связанных по смыслу компонентов.

RadioGroup

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

Panel

Панель. Этот компонент, как и GroupBox, служит для объединения нескольких компонентов.

Вкладка «Additional»

StringGrid

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

Bevel

Фаска. Имеет декоративное назначение.

Splitter

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

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

Обычно на форму помещается один компонент MainMenu. В этом случае его имя автоматически заносится в свойство формы Menu. Основное свойство компонента - Items. Его заполнение производится с помощью Конструктора Меню, вызываемого двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне Инспектора Объектов.

Из контекстного меню вы можете также выполнить команду "Create Submenu", позволяющую ввести подменю в выделенный раздел.

Свойство Caption обозначает надпись раздела. Если вы в качестве значения Caption очередного раздела введен символ минус «-», то вместо раздела в меню появится разделитель.

Свойство Shortcut определяет клавиши быстрого доступа к разделу меню – «горячие» клавиши, с помощью которых пользователь, не заходя в меню, может в любой момент вызвать выполнение процедуры, связанной с данным разделом.

PopupMenu - контекстное меню привязано к конкретным компонентам. Оно всплывает, если во время, когда данный компонент в фокусе, пользователь щелкнет правой кнопкой мыши. Формирование контекстного всплывающего меню производится с помощью Конструктора Меню, вызываемого двойным щелчком на PopupMenu, точно так же, как это делалось для главного меню.

Label - используется для отображения различных надписей на форме. Отображаемый текст определяется значением свойства Caption. Его можно устанавливать в процессе проектирования или задавать и изменять программно во время выполнения приложения. Например: Label1.Caption := 'Новый текст';

Если требуется отобразить числовую информацию, можно воспользоваться функциями FloatToStr и IntToStr, переводящими соответственно числа с плавающей запятой и целые в строку. Для формирования текста, состоящего из нескольких фрагментов, можно использовать операцию «+», которая для строк означает их склеивание. Например, если в программе имеется целая переменная I, отображающая число сотрудников некоторой организации, то вывести в метку Label1 информацию об этом можно оператором: Label1.Caption := 'Число сотрудников: '+IntToStr(I);

В Label имеется свойство Wordwrap – допустимость переноса слов длинной надписи, превышающей длину компонента, на новую строчку. Чтобы такой перенос мог осуществляться, надо установить свойство WordWrap в true, свойство AutoSize в false (чтобы размер компонента не определялся размером надписи) и сделать высоту компонента такой, чтобы в нем могло поместиться несколько строк. Если WordWrap не установлено в true при AutoSize равном false, то длинный текст, не помещающийся в рамке метки, просто обрезается.

Edit – строка ввода. В компоненте Edit вводимый и выводимый текст содержится в свойстве Text. Это свойство можно устанавливать в процессе проектирования или задавать программно.

Свойство AutoSelect определяет, будет ли автоматически выделяться весь текст при передаче фокуса в окно редактирования. Имеются также свойства только времени выполнения SelLength, SelStart, SelText, определяющие соответственно длину выделенного текста, позицию перед первым символом выделенного текста и сам выделенный текст. Если вы хотите, чтобы пользователь мог вводить в окно редактирования Edit только цифры и символ точки, вы можете в обработчик события OnKeyPress этого компонента вставить следующий код: if not (Key in ['0'..'9', ',']) then Key := #0;

Свойство MaxLength определяет максимальную длину вводимого текста. Если MaxLength = 0, то длина текста не ограничена.

Свойство Modified, доступное только во время выполнения, показывает, проводилось ли редактирование текста в окне.

Свойство PasswordChar позволяет превращать окно редактирования в окно ввода пароля. По умолчанию значение PasswordChar равно #0 – нулевому символу. В этом случае это обычное окно редактирования. Но если в свойстве указать иной символ (например, символ звездочки «*»), то при вводе пользователем текста в окне будут появляться именно эти символы, а не те, которые вводит пользователь.

Memo - является компонентом для редактирования многострочного текста. В компоненте Memo формат (шрифт, его атрибуты, выравнивание) одинаков для всего текста и определяется свойством Font. Основное свойство компонента Memo - Lines, содержащее текст окна в виде списка строк и имеющее тип TStrings. Весь текст, представленный одной строкой типа String, внутри которой используются разделители типа символов возврата каретки и перевода строки, содержится в свойстве Text.

Доступ к отдельной строке текста можно получить с помощью свойства Strings[Index: Integer]. Индексы, как и везде в Delphi, начинаются с 0. Так что Memo1.Lines.Strings[0] - это текст первой строки. Учтите, что если окно редактирования изменяется в размерах при работе с приложением и свойство WordWrap = true, то индексы строк будут изменяться при переносах строк, так что в этих случаях индекс мало о чем говорит.

Свойство только для чтения Count указывает число строк в тексте.

Для очистки текста в окне надо выполнить метод Clear.

Для занесения новой строки в конец текста окна редактирования можно воспользоваться методами Add или Append свойства Lines. Для загрузки текста из файла применяется метод LoadFromFile. Сохранение текста в фале осуществляется методом SaveToFile.

Загрузка в окно Memo1 текста из файла может осуществляться командой:

Memo1.Lines.LoadFromFile ('text.txt');

Сохранение текста в файле может осуществляться командой:

Memo1.Lines.SaveToFile('text.txt');

Button - простейший и наиболее часто используемый компонент. Основное с точки зрения внешнего вида свойство кнопки - Caption (надпись). В надписях кнопок можно предусматривать использование клавиш ускоренного доступа, выделяя для этого один из символов надписи. Перед символом, который должен соответствовать клавише ускоренного доступа, ставится символ амперсанта «&». Этот символ не появляется в надписи, а следующий за ним символ оказывается подчеркнутым. Тогда пользователь может вместо щелчка на кнопке нажать в любой момент клавишу Alt совместно с клавишей выделенного символа.

Например, если в вашем приложении имеется кнопка выполнения какой-то операции, вы можете задать ее свойство Caption равным «&Выполнить». На кнопке эта надпись будет иметь вид «Выполнить». И если пользователь нажмет клавиши Alt+В, то это будет эквивалентно щелчку на кнопке.

CheckBox - индикаторы с флажком (независимый переключатель) используются в приложениях в основном для того, чтобы пользователь мог включать и выключать какие-то опции, или для индикации состояния. При каждом щелчке пользователя на индикаторе его состояние изменяется, проходя в общем случае последовательно через три значения: выделение (появление черной галочки), промежуточное (серое окно индикатора и серая галочка) и не выделенное (пустое окно индикатора). Этим трем состояниям соответствуют три значения свойства компонента State: cbChecked, cbGrayed, cbUnchecked. Впрочем, эти три состояния допускаются только при значении другого свойства AllowGrayed равном true. Если же AllowGrayed = false (значение по умолчанию), то допускается только два состояния: выделенное и не выделенное.

Проверять состояние индикатора можно не только по значению State, но и по значению свойства Checked. Если Checked равно true, то индикатор выбран, т.е. State = cbChecked. Если Checked равно false, то State равно cbUnchecked или cbGrayed. Установка Checked в true во время проектирования или выполнения автоматически переключает State в cbChecked.

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

RadioGroup – это панель группы радиокнопок, которая может содержать регулярно расположенные столбцами и строками радиокнопки. А надписи кнопок и их количество определяются свойством Items, имеющим тип TStrings. Щелкнув на кнопке с многоточием около этого свойства в окне Инспектора Объектов, вы попадете в редактор списков строк.

В случаях, когда желательно нерегулярное расположение кнопок целесообразно использовать RadioButton, сгруппированные панелью GroupBox. Панель GroupBox выглядит на форме так же, как RadioGroup, и надпись в ее верхнем левом углу также определяется свойством Caption. Эта панель сама по себе пустая. Ее назначение – служить контейнером для других управляющих элементов, в частности, для радиокнопок RadioButton.

ListBox - компонент, обеспечивающий выбор из списка. Компоненты ListBox и ComboBox отображают списки строк. Они отличаются друг от друга прежде всего тем, что ListBox только отображает данные и позволяет пользователю выбрать из них то, что ему надо, а ComboBox позволяет также редактировать данные. Основное свойство обоих компонентов, содержащее список строк, - Items, имеющее рассмотренный ранее тип TStrings. Добавление строк осуществляется с помощью метода Add свойства Items: ListBox.Items.Add('текст строки').

В компоненте ListBox имеется свойство MultiSelect, разрешающее пользователю множественный выбор в списке.

ComboBox «выпадающий» список выбора. Стиль изображения этого компонента определяется свойством Style, которое может принимать следующие основные значения: csDropDown - выпадающий список со строками одинаковой высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст; csSimple - развернутый список со строками одинаковой высоты и с окном редактирования, позволяющим пользователю вводить или редактировать текст; csDropDownList - выпадающий список со строками одинаковой высоты, не содержащий окна редактирования.

Panel, Splitter, GroupBox, Bevel

Panel – панели, используются наиболее широко. С их помощью компонуются различные элементы интерфейса (кнопки, окна редактирования, списки), функционально связанные друг с другом. Внешний вид панели Panel определяется совокупностью параметров BevelInner - стиль внутренней части панели, BevelOuter - стиль внешней части панели, BevelWidth - ширина внешней части панели, BorderStyle - стиль бордюра, BorderWidth - ширина бордюра.

Splitter предназначен для перестроения размеров панелей пользователем (как в проводнике Windows). Рассмотрим это на примере. Пусть вы хотите иметь в приложении форму, содержащую 2 панели. Для этого вам необходимо разместить на форме Panel, выставить ей свойство Align в значение alTop, далее поместить на форму Splitter и также установить Align в значение alTop и, наконец, поместить на форму еще одну Panel, но ей уже задать Align – alClient. При изменении размеров такого окна будет меняться размер нижней панели, а расстояние между панелями можно менять перетаскиванием Splitter-a.

GroupBox – контейнер группы компонентов, не имеет таких широких возможностей задания различных стилей оформления, как Panel. Но имеет встроенную рамку с надписью, которая обычно используется для выделения на форме группы функционально объединенных компонентов. Никаких особых свойств, отличных от уже рассмотренных, панель GroupBox не имеет.

Bevel формально не является панелью, он не может служить контейнером для компонентов. Однако зрительно компонент Bevel может использоваться как подобие панели. Стиль отображения Bevel определяется свойством Style, которое может принимать значения bsLowered – утопленный, и bsRaised – приподнятый. А контур компонента определяется свойством Shape, которое может принимать значения: bsBox – прямоугольник, bsFrame – рамка, bsSpacer – пунктирная рамка.

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

StringGrid.Cells[ACol, ARow: Integer]: string - строка, содержащаяся в ячейке с индексами столбца и строки ACol и ARow.

Свойства ColCount и RowCount определяют соответственно число столбцов и строк, свойства FixedCols и FixedRows - число фиксированных, не прокручиваемых столбцов и строк. Цвет фона фиксированных ячеек определяется свойством FixedColor. Свойства LeftCol и TopRow определяют соответственно индексы первого видимого на экране в данный момент прокручиваемого столбца и первой видимой прокручиваемой строки.

Например, оператор

Label1.Caption:='Выбрана ячейка '+IntToStr(ARow)+':'+IntToStr(ACol);

выдаст в метку Label1 номер выбранной ячейки. А оператор

Label1.Caption :=StringGrid1.Cells [ACol, ARow];

выведет в ту же метку текст выделенной ячейки.