Разное
Облака / Clouds
The bast cloud service
Get 20 GB free!!!
Support WebDav.
Show more >>
time-tested cloud storage
Support WebDav.
Последние книги
Самое популярное
Все бесплатно
Все ссылки на файлы, расположенные на страницах сайта, добавлены пользователями и доступны для бесплатного скачивания. За содержание этих файлов администрация сайта ответственности не несет.
Навигация
Вопросы
Объект экрана — Screen
Категория: Компоненты
Категория: Компоненты
Что такое хук (hook)?
Категория: Приложение
Категория: Приложение
Получение списка всех сетевых дисков из Delphi
Категория: Интернет и Сети
Категория: Интернет и Сети
Создание и удаление полей
Категория: Базы данных
Категория: Базы данных
Получить изображение формы в виде Bitmap и поместить его в буфер обмена
Категория: Компоненты
Категория: Компоненты
Компоненты CoolBar и ControlBar
Категория: Компоненты
Категория: Компоненты
Перегенерировать все индексы Dbase
Категория: Базы данных
Категория: Базы данных
Удалить или оставить симолы
Категория: Текст и строки
Категория: Текст и строки
Создание ярлыка на Рабочем столе
Категория: Приложение
Категория: Приложение
Пароль на ADO
Категория: Базы данных
Категория: Базы данных
Delphi - Справочник: Procedure
Procedure
|
1 Procedure Name; {Directives;} 2 Procedure Name(Parameters); {Directives;} 3 type Name = Procedure{(Parameters)} {of object}; |
Ключевое слово (Unit System)
|
Определяет подпрограмму, которая не возвращает значение
|
Описание:
|
Ключевое слово Procedure определяет подпрограмму, которая не возвращает значение. Версия 1: Определяет процедуру, которая работает без параметров. Версия 2: Определяет процедуру, которой передаётся один или более параметров. Когда процедура определена в классе, она обычно называют Методом. Пока используется директива Overload, одно и то же имя может использоваться больше чем в одной процедуре. Reintroduce : Переопределяет подавленную функцию Overload : Позволяет иметь одинаковые названия для 2 или более функций Virtual : Может быть переопределен в дочернем классе Override : Переопределяет родительский метод класса Abstract : Вызывает дочерний класс для выполнения Версия 3: Определяет процедуру как тип данных. Это позволяет процедуре быть переданным как параметр, и использоваться как переменная. Определение типов определяет только конфигурацию процедуры - а не название. Переменной данного типа можно присвоить имя любой процедуры с её конфигурацией. Когда присвоено, имя переменной может быть обработано, как будто это название процедуры. См. код примера. Опция Of Object позволяет Вам обращаться к объектному методу. Обращайтесь к переменной такого типа, как будто Вы вызываете объектный метод непосредственно. См. второй пример. |
Пример кода: Простой пример
|
//Пример кода : Простой пример // Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем Unit1 и с формой // названную Form1, которая имеет событие OnCreate названное FormCreate. unit Unit1; interface uses // Модуль System не нуждается в определении Forms, Dialogs; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} // Вложение определений формы Procedure ShowSum(a, b : Integer); var total : Integer; begin // Сложение двух чисел total := a + b; // Показ суммы ShowMessageFmt('%d + %d = %d',[a,b,total]); end; // Подпрограмма On Create основной формы - наша основная программа procedure TForm1.FormCreate(Sender: TObject); begin // Показ суммы нескольких пар чисел ShowSum(1,2); ShowSum(245,62); end; end. //Пример кода : Иллюстрирование Procedure и Procedure type // Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем Unit1 и с формой // названную Form1, которая имеет событие OnCreate названное FormCreate. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type // Сам класс формы TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} // В строку функций Procedure ShowMsg(msg : string); begin ShowMessage(msg); end; Procedure ShowLongMsg(msg : string); begin ShowMessage('Текст сообщения = '+msg); end; // Основная линия кода procedure TForm1.FormCreate(Sender: TObject); type TShowProc = Procedure(msg : string); var showProc : TShowProc; begin // Использование ShowMsg косвенно ShowMessage('Используя ShowMsg косвенно :'); ShowMsg('Привет Мир'); // Использование процедуры ShowMsg непосредственно ShowMessage('Используя ShowMsg непосредственно :'); showProc := ShowMsg; showProc('Снова привет'); // Использоване ShowLongMsg косвенно ShowMessage('Используя ShowLongMsg косвенно :'); showProc := ShowLongMsg; showProc('Снова привет'); end; end. //Пример кода : Использование типа процедуры класса // Полный код Модуля. // ----------------------------------------------------------- // Вы должны поместить этот код в модуль с именем Unit1 и с формой // названную Form1, которая имеет событие OnCreate названное FormCreate. unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type // Определение простого класса TSimple = class private name : string; public function GetName : string; Procedure SetName(name : string); constructor Create(name : string); end; // Сам класс формы TForm1 = class(TForm) procedure FormCreate(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} // Создание простого объекта constructor TSimple.Create(name: string); begin // Save the passed string self.name := name; end; // Возвращение простого имени function TSimple.GetName: string; begin Result := name; end; // Назначение переданного имени Procedure TSimple.SetName(name : string); begin self.name := name; end; // Основная линия кода procedure TForm1.FormCreate(Sender: TObject); type TNameProc = Procedure(name : string) of object; var simple : TSimple; nameProc : TNameProc; begin // Создание простого объекта simple := TSimple.Create('Brian'); // И установка имени simple.SetName('New name'); // Показ имени объекта ShowMessage('Имя сейчас = '+simple.GetName); // Обращение к методу SetName nameProc := simple.SetName; // И установка имени nameProc('Even newer name'); // Показ имени объекта ShowMessage('Имя сейчас = '+simple.GetName); end; end.
Результат:
|
1. 1 + 2 = 3 245 + 62 = 307 2. Используя ShowMsg косвенно : Привет Мир Используя ShowMsg непосредственно : Снова привет Используя ShowLongMsg косвенно : Текст сообщения = Снова привет 3. Имя сейчас = New name Имя сейчас = Even newer name |