Якщо ви збираєтеся використовувати в програмі свою функцію, то в найпростішому випадку її оголошення слід помістити в текст програми, перед підпрограмою, яка застосовує цю функцію.
Рис. 6.1. Вікно програми Поїздка на дачу
Наступна програма (Її текст приведений в лістингу 6.4, а вид діалогового вікна на рис. 6.1) обчислює вартість поїздки на дачу. Вихідними даними для програми є: відстань, ціна одного літра бензину і споживання бензину на 100 км шляху. Для введення вихідних даних застосовуються поля Edit1, Edit2 і Edit3. Функції обробки події OnKeyPress
використовують функцію IsFioat для фільтрації вводяться в ці поля символів, під час роботи програми в полях введення відображаються тільки допустимі символи.
Лістинг 6.4. приклад використання функцій програміста
unit fazenda_; interface Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm1 = Class (TForm) Edit1: TEdit; // відстань Edit2: TEdit; // ціна літра бензину Edit3: TEdit; // споживання бензину на 100 км CheckBox1: TCheckBox; // True - поїздка туди і назад Button1: TButton; // кнопка Обчислити Label4: TLabel; // поле виведення результату розрахунку Label1: TLabel; Label2: TLabel; Label3: TLabel; procedure EditlKeyPress (Sender: TObject; var Key: Char); procedure Edit2KeyPress (Sender: TObject; var Key: Char); procedure Edit3KeyPress (Sender: TObject; var Key: Char); procedure Button1Click (Sender: TObject); private { Private declarations} public {Public declarations} end; var Form1: TForm1; implementation {$ R * .dfm} // перевіряє, чи є символ допустимим // під час введення дробового числа function IsFloat (ch: char; st: string): Boolean; begin if (Ch > = '0') and (ch < = '9') // цифри or (Ch = # 13) // клавіша <Enter> or (Ch = # 8) // клавіша <Backspace> then begin IsFloat : = True; // символ вірний Exit; // вихід з функції end; case ch of '-': if Length (st) = 0 then IsFloat: = True; ',': if (Pos ( ',', st) = 0) and (st [Length (st)] > = '0') and (st [Length (st)] < = '9') then // роздільник можна ввести тільки після цифри // і якщо він ще не введений IsFloat : = True / else // інші символи заборонені IsFloat : = False; end; end; // натискання клавіші в поле Відстань procedure TForm1.EditlKeyPress (Sender: TObject; var Key: Char); begin if Key = Char (VK_RETURN) then Edit2.SetFocus // перемістити курсор в поле Ціна else If not IsFloat (Key, Edit2.Text) then Key: = Chr (O); end; // натискання клавіші в поле Ціна procedure TForml.Edit2KeyPress (Sender: TObject; var Key: Char); begin if Key = Char (VK_RETURN) then Edit3.SetFocus // перемістити курсор в поле Споживання else If not IsFloat (Key, Edit2.Text) then Key: = Chr (0); end; // натискання клавіші в поле Споживання procedure TForml.Edit3KeyPress (Sender: TObject; var Key: Char); begin if Key = Char (VK_RETURN) then Buttonl.SetFocus // // зробити активної кнопку Обчислити else If not IsFloat (Key, Edit2.Text) then Key: = Chr (0); end; // клацання на кнопці Обчислити procedure TForm1.ButtonlClick (Sender: TObject); var rast : Real; // відстань cena : Real; // ціна potr : Real; // споживання на 100 км summ : Real; // сума mes : string; begin rast : = StrToFloat (Edit1.Text); cena : = StrToFloat (Edit2.Text); potr : = StrToFloat (Edit3.Text); summ : = Rast / 100 * potr * cena; if CheckBoxl.Checked then summ: = summ * 2; mes : = 'Поїздка на дачу'; if CheckBoxl.Checked then mes: = mes + 'і назад'; mes : = Mes + 'обійдеться в' + FloatToStrF (summ, ffGeneral, 4,2) + 'руб.'; Label4.Caption : = Mes; end; end.