Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Передача параметров

В Delphi процедурам и функциям (а, следовательно, и методам классов) могут передаваться параметры для того, чтобы обеспечить их необходимой для работы информацией. Программа PARAMS демонстрирует, как использовать передачу параметров в методы Delphi. Кроме того, мы узнаем, как:

создавать свои собственные процедуры

добавлять процедуру в класс, формируя метод класса

вызывать одну процедуру из другой.

Программа PARAMS позволяет Вам вводить фразы в строки редактирования. После нажатия кнопки “Вызов процедуры WriteAll” строка из управляющего элемента EditSource скопируется в шесть управляющих элементов - строк редактирования, как показано на Рис. 8-D.

Далее мы не будем подробно останавливаться на том, как размещать компоненты на форме - считаем, что это Вы уже умеете. После того как Вы разместили на форме семь компонентов Edit, переименуйте с помощью Инспектора Объектов седьмой компонент (Edit7) в EditSource. Положите на форму компонент Button, и в Object Inspector измените его заголовок (свойство Caption) на “Вызов процедуры WriteAll” (естественно, Вы можете заменить его шрифт, цвет и т.д.). Рис. 8-D: Программа PARAMS

позволяет вызовом одной процедуры

заполнить 6 строк редактирования

После завершения проектирования формы класс TForm1 будет выглядеть следующим образом:

TForm1 = class (TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

EditSource: TEdit;

Button1: TButton;

end;

Следующий шаг состоит в добавлении метода, вызываемого по нажатию пользователем кнопки Button1. Это, напомним, можно сделать двумя способами:

· Перейти в Инспекторе Объектов на страничку “Events” (предварительно выбрав компонент Button1 на форме), выбрать слово OnClick и дважды щелкнуть мышкой на пустой строчке справа от него

· Просто дважды щелкнуть на компоненте Button1 на форме.

 

Delphi сгенерирует следующую “заготовку”:

procedure TForm1.Button1Click(Sender: TObject);

begin

end;

 

Цель программы PARAMS - научить Вас писать процедуры и передавать в них параметры. В частности, программа PARAMS реагирует на нажатие кнопки Button1 путем вызова процедуры WriteAll и передачи ей в качестве параметра содержимого строки редактирования EditSource (EditSource.Text).

 

procedure TForm1.Button1Click(Sender: TObject);

begin

WriteAll(EditSource.Text);

end;

 

Важно понять, что объект EditSource является экземпляром класса TEdit и, следовательно, имеет свойство Text, содержащее набранный в строке редактирования текст. Как Вы уже, наверное, успели заметить, по умолчанию свойство Text содержит значение, совпадающее со значением имени компонента (Name) - в данном случае “EditSource”. Свойство Text Вы, естественно, можете редактировать как в режиме проектирования, так и во время выполнения.

Текст, который должен быть отображен в шести строках редактирования, передается процедуре WriteAll как параметр. Чтобы передать параметр процедуре, просто напишите имя этой процедуры и заключите передаваемый параметр (параметры) в скобки - вот так:

 

WriteAll(EditSource.Text);

 

Заголовок этой процедуры выглядит следующим образом:

 

procedure TForm1.WriteAll(NewString: String);

 

где указано, что передаваемый процедуре параметр NewString должен иметь тип String.

Вспомним, что задача процедуры WriteAll состоит в копировании содержимого строки редактирования EditSource в шесть других строк редактирования Edit1-Edit6. Поэтому процедура должна выглядеть следующим образом:

 

procedure TForm1.WriteAll(NewString: String );

begin

Edit1.Text:= NewString;

Edit2.Text:= NewString;

Edit3.Text:= NewString;

Edit4.Text:= NewString;

Edit5.Text:= NewString;

Edit6.Text:= NewString;

end;

 

Поскольку процедура WriteAll не является откликом на какое-либо событие в Delphi, то ее нужно полностью написать “вручную”. Простейший способ сделать это - скопировать заголовок какой-либо уже имеющейся процедуры, исправить его, а затем дописать необходимый код.

 

Возвратимся еще раз к заголовку процедуры. Заголовок состоит из пяти частей:

 

procedure TForm1.WriteAll(NewString: String);

 

Первая часть - зарезервированное слово “ procedure ”; пятая часть - концевая точка с запятой “;”. Обе эти части служат определенным синтаксическим целям, а именно: первая информирует компилятор о том, что определен синтаксический блок “процедура”, а вторая указывает на окончание заголовка (собственно говоря, все операторы в Delphi должны заканчиваться точкой с запятой).

Вторая часть заголовка - слово “TForm1”, которое квалифицирует то обстоятельство, что данная процедура является методом класса TForm1.

Третья часть заголовка - имя процедуры. Вы можете выбрать его любым, по вашему усмотрению. В данном случае мы назвали процедуру “WriteAll”.

Четвертая часть заголовка - параметр. Параметр декларируется внутри скобок и, в свою очередь, состоит из двух частей. Первая часть - имя параметра, вторая - его тип. Эти части разделены двоеточием. Если Вы описываете в процедуре более чем один параметр, нужно разделить их точкой с запятой, например:

procedure Example(Param1: String; Param2: String);

После того как Вы создали “вручную” заголовок процедуры, являющейся методом класса, Вы должны включить его в декларацию класса, например, путем копирования (еще раз напомним, что для методов, являющихся откликами на дельфийские события, данное включение производится автоматически):

TForm1 = class (TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

EditSource: TEdit;

Button1: TButton;

procedure Button1Click(Sender: TObject);

procedure WriteAll(NewString: String);

end;

В данном месте нет необходимости оставлять в заголовке метода слово “TForm1”, так как оно уже присутствует в описании класса.

Листинг 8-C показывает полный текст головного модуля программы PARAMS. Мы не включили сюда файл проекта, поскольку, как уже упоминалось, он практически одинаков для всех программ.

Листинг 8-C: Исходный код головного модуля программы PARAMS показывает, как использовать строки редактирования и как передавать параметры.

Unit Main;

interface

uses

WinTypes, WinProcs, Classes,

Graphics, Controls,

Printers, Forms, StdCtrls;

type

TForm1 = class (TForm)

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

EditSource: TEdit;

Button1: TButton;

procedure Button1Click(Sender: TObject);

procedure WriteAll(NewString: String);

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.WriteAll(NewString: String);

begin

Edit1.Text:= NewString;

Edit2.Text:= NewString;

Edit3.Text:= NewString;

Edit4.Text:= NewString;

Edit5.Text:= NewString;

Edit6.Text:= NewString;

end;

 

Рис. 8-E: Внешний вид программы CONTROL2

procedure TForm1.Button1Click(Sender: TObject);

begin

WriteAll(EditSource.Text);

end;

end.

 

При экспериментах с программой PARAMS Вы можете попробовать изменить имена процедур и параметров. Однако, следует помнить, что ряд слов в Delphi являются зарезервированными, и употреблять их в идентификаторах (именах процедур, функций, переменных, типов, констант) не разрешается - компилятор сразу же обнаружит ошибку. К ним относятся такие слова, как “procedure”, “string”, “begin”, “end” и т.п.; полный же список их приведен в on-line справочнике Delphi.

Не старайтесь запомнить сразу все зарезервированные слова - компилятор “напомнит” Вам о неправильном их использовании выдачей сообщения типа “Identifier expected.” (Ожидался идентификатор, а обнаружено зарезервированное слово).

<== предыдущая лекция | следующая лекция ==>
IV. Типология социального характера Д. Рисмена | Для уравнения Пуассона
Поделиться с друзьями:


Дата добавления: 2014-01-14; Просмотров: 636; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.027 сек.