Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьшения длины пробега и улучшения маневрирования ВС при...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
Топ:
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного...
Интересное:
Лечение прогрессирующих форм рака: Одним из наиболее важных достижений экспериментальной химиотерапии опухолей, начатой в 60-х и реализованной в 70-х годах, является...
Принципы управления денежными потоками: одним из методов контроля за состоянием денежной наличности является...
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Дисциплины:
2017-11-28 | 292 |
5.00
из
|
Заказать работу |
|
|
Процедура(функция) описывается внутри модуля. Если требуется, чтобы процедура(функция) была доступна для других модулей, в части Interface необходимо описать ее заголовок, а в части Implementation описать ее реализацию, например:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm1 = class(TForm)
private
{ Private declarations }
public
{ Public declarations }
end;
{описание заголовка функции, которая будет доступна для других модулей}
function min(a,b:real):real;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ описание функции }
function min(a,b:real):real;
begin
if a>b then
min:=a
else min:=b;
end;
end.
Если процедура(функция) будет использоваться только в данном модуле, не требуется описание ее заголовка в секции Interface.
Передача параметров по ссылке и по значению
Любой из формальных параметров подпрограммы может быть либо:
1) параметром-значением (передача по значению)
2) параметром переменной (передача по ссылке)
3) параметром-константой (передача по ссылке)
Например, в следующем описании процедуры:
procedure MyProc(var a:real; b:integer; const c:string);
задан список формальных параметров где
a - передается по ссылке, для этого используется ключевое слова var;
b - передается по значению;
c - передается по ссылке, для этого используется ключевое слова const.
При передаче по значению параметр вычисляется, копируется во временную память и передается подпрограмме, т.е. передается копия параметра, поэтому на выходе из подпрограммы значение параметра не меняется. Например:
procedure A(c:real);
begin
....
c:=c+10;
...
end;
Использование процедуры:
c:=5;
A(c);
При выходе из процедуры А переменная c - будет равна 5.
При использовании параметра-переменной передается адрес переменной. Поэтому на выходе из подпрограммы ее значение может быть изменено. Например:
|
procedure Double(var c:real);
begin
c:=c*2;
end;
Использование процедуры:
a:=10;
Double(a);
После выхода из процедуры значение переменной A изменится и будет равно 20.
Параметр-константа будет использоваться в подпрограмме только для считывания данных, любые изменения параметра-константы запрещены. Параметр-константа передается по адресу. Использование такого параметра позволяет организовать эффективную обработку соответствующего параметра, не беспокоясь о возможных изменениях его значения. Например:
Procedure Sum(const A: integer);
Процедуре Sum передается параметр A, который нельзя менять в теле процедуры.
Контрольные вопросы
Задание для самостоятельной работы
1. Написать функцию Procent, которая возвращает процент от полученного в качестве аргумента числа.
2. Написать функцию Doxod, которая вычисляет доход по вкладу. Исходными данными для функции являются: величина вклада, процентная ставка (годовых) и срок вклада(количество дней). Формула вычисления вклада может быть такой:
Доход=вклад*(проц_ставка/360*срок
3. Написать функцию, которая для веденного числа возвращает сумму его цифр.
4. Написать программный код для игры «Летающие тарелки», который определяет, было ли столкновение снаряда с летающей тарелкой, и если было, убирает тарелку с экрана и увеличивает счет игры. Оформить этот программный код в виде процедуры или функции.
Занятие12. Еще про компоненты
Еще раз про списки
|
Как было уже рассмотрено в занятии 4, Delphi предлагает два вида списков:
· Прокручиваемый список – ListBox;
· Выпадающий список – ComboBox.
Оба вида списков располагаются на вкладке Standart. Списки имеют много общих свойств и методов, но отличаются внешним видом, кроме того, список ComboBox является полем редактирования со списком, т.е. он объединяет возможности редактирования и выбора из списка.
Свойство Items у обоих видов списков является объектом типа TString со своими свойствами и методами. Иными словами, Items это символьный массив с набором методов, позволяющим работать со строками списка, т.е. добавлять, удалять, вставлять строки и т.д. Набор основных методов класса TString приведен в таблице:
Метод | Описание |
Add(const S: string): Integer | Добавить строку, передаваемую в качестве входного параметра, в конец списка |
Insert(Index: Integer; const S: string); | Вставить строку S в позицию, задаваемую параметром Index. Нумерация строк начинается с нуля. |
Delete(Index: Integer) | Удалить строку, позиция которой указана в параметре Index |
Exchange(Index1, Index2: Integer) | Поменять местами два элемента списка, позиции которых указаны параметрами Index1 и Index2 |
Clear | Очистить список |
Заполнение списков данными часто удобно производить на этапе выполнения программы программным путем.
Для демонстрации этого рассмотрим несложное приложение, назовем его «Работа со списками». Это приложение позволит программным путем изменять список ListBox. Внешний вид приложения может быть, например, таким:
|
В поле Edit1:TEdit будет вводиться значение нового элемента списка. По кнопке «Добавить» - введенный элемент добавляется в конец списка. По кнопке «Вставить» - элемент вставляется перед текущей позицией курсора. По кнопке «Удалить» - удаляется элемент, на котором установлен курсор. По кнопке «Очистить» - все элементы списка удаляются.
Используя методы объекта Items списка, напишем программный код на события OnClick кнопок.
Для кнопки «Добавить» программный код будет иметь вид:
ListBox1.Items.Add(Edit1.Text);
Для кнопки «Вставить» программный код будет иметь вид:
ListBox1.Items.Insert(ListBox1.ItemIndex, Edit1.Text);
Здесь первый параметр задает порядковый номер элемента, перед которым вставляется элемент, второй параметр – задает этот элемент.
Для кнопки «Удалить» программный код будет иметь вид:
ListBox1.Items.Delete(ListBox1.ItemIndex);
|
Для кнопки «Очистить» программный код будет иметь вид:
ListBox1.Items.Clear;
Функция MessageDlg
При удалении элемента необходимо спросить у пользователя подтверждения на удаление элемента. Для этого будем использовать встроенную функцию MessageDlg, которая позволяет выводить в окне сообщение пользователю и получать от пользователя ответ. Внешний вид окна приведен на рисунке:
Заголовок функции имеет следующий вид:
function MessageDlg(const Msg: string; DlgType: TMsgDlgType; Buttons: TMsgDlgButtons;
HelpCtx: Longint): Word;
Как видно из заголовка функция имеет четыре входных параметра:
Msg – задает текст сообщения;
DlgType – задает тип сообщения, фактически задает пиктограмму (картинку) в окне;
Buttons – задает набор кнопок в окне;
HelpCtx – используется для задания файла помощи.
Для параметра DlgType возможны следующие варианты:
Значение | Описание |
mtWarning | Задает пиктограмму с изображением желтого восклицательного знака |
MtError | Задает пиктограмму с изображением красного стоп-сигнала |
mtInformation | Задает пиктограмму с изображением голубой буквы i с точкой |
mtConfirmation | Задает пиктограмму с изображением зеленого знака вопроса |
MtCustom | Не содержит пиктограммы |
Для задания кнопок, как правило, используются следующие константы:
Значение | Описание |
mbYesNoCancel | Три кнопки “Yes”, “No”, “Cancel” |
mbOKCancel | Две кнопки “Ok” и “Cancel” |
mbAbortRetryIgnore | Три кнопки “Abort”, “Retry”, “Ignore” |
Для определения возвращаемого функцией значения используются константы:
Выбранная кнопка | Возвращаемое значение |
mbOK | mrOk |
mbYes | mrYes |
mbNo | mrNo |
mbCancel | mrCancel |
mbAbort | mrAbort |
mbRetry | mrRetry |
mbIgnore | mrIgnore |
Давайте изменим программный код на событие кнопки «Удалить» примера предыдущего пункта, добавив использование функции MessgaeDlg. Программный код будет иметь такой вид:
if MessageDlg('Вы уверены?', mtConfirmation, mbOkCancel, 0) = mrOk then
ListBox1.Items.Delete(ListBox1.ItemIndex);
Теперь, в случае если пользователь ошибочно нажмет на кнопку «Удалить», удаление будет произведено, если только пользователь его подтвердит.
Задание для самостоятельной работы
1. Создать прокручиваемый список с возможностью множественного выделения элементов. Отобразить выбор пользователя с помощью функции ShowMessage.
|
2. Даны два прокручиваемых списка. По кнопкам организовать перемещение элементов из одного списка в другой. По кнопке «>» выделенный элемент левого списка переносится в конец правого списка. По кнопке «<», наоборот, выделенный элемент правого списка переносится в конец левого списка. По кнопке «>>» все элементы левого списка переносятся в конец правого списка, соответственно по кнопке «<<» - все элементы правого списка переносятся в конец левого списка, как показано на рисунке:
.
|
|
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...
© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!