Пример программы

Следующая программа ведет простую базу данных. При каждом ее запуске на экране появляется диалоговое окно (рис. 7.5), в поля которого пользователь может ввести дату и температуру воздуха.



Рис. 7.5. Диалоговое окно программы База данных “Погода”


Дата вводится в поле Edit1, температура — в поле Edit2. Текст программы приведен в листинге 7.3.


Листинг 7.3, Простая база данных (запись в файл)


unit pogoda_;


interface


uses


Windows, Messages, SysUtils, Variants, Classes,


Graphics, Controls, Forms, Dialogs, StdCtrls;


type


TForm1 = class(TForm)


Edit1: TEdit; // дата


Edit2: TEdit; // температура


Button1: TButton; // кнопка Добавить


Label1: TLabe1;


Label2: TLabe1;


procedure FormActivate(Sender: TObject);


procedure ButtonlClick(Sender: TObject);


procedure FormClose(Sender: TObject;


var Action: TCloseAction); private


{ Private declarations } public


{ Public declarations } end;


var


Form1: TForm1;


implementation


{$R *.dfm}


const


DBNAME = ‘a:pogoda. db’;


var


db: TextFile; // файл — база данных


procedure TForm1.FormActivate(Sender: TObject);


begin


AssignFile(db, DBNAME);. {$I-}


Append(db); if IOResult = 0 then


begin


Edit1.Text := DateToStr(Date); // получить текущую дату


Edit2.SetFocus; // курсор в поле Edit2


end


else begin


Rewrite(db); if IOResult <> 0 then begin


// сделать недоступными поля ввода // и командную кнопку


Edit1.Enabled := False; Edit2.Enabled := False;


Buttonl.Enabled := False; ShowMessage(‘Ошибка создания ‘+DBNAME);


end;


end;


end;


// щелчок на кнопке Добавить


procedure TForml.Button1Click(Sender: TObject);


begin


if (Length(edit1.text)=0) or (Length(edit2.text)=0)


then ShowMessage(‘Ошибка ввода данных.’


+#13+’Bce поля должны быть заполнены.’)


else writeln(db, editl.text,’ ‘,edit2.text);


end;


// Событие OnClose возникает при закрытии формы


procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);


begin


CloseFile(db); // закрыть файл БД


end;


end.


Файл базы данных открывает процедура FormActivate, которая обрабатывает событие onActivate. Событие OnActivate возникает в момент активизации формы, поэтому процедура запускается автоматически, при активизации формы приложения. Если операция открытия файла завершается успешно, то в поле Edit1 записывается текущая дата. Информация о текущей дате возвращает функция Date. Для преобразования возвращаемого функцией Date значения (числа типа Double) в удобную для восприятия форму используется функция Dateiostr. После записи даты в поле Editi процедура обработки события onActivate с применением метода setFocus устанавливает курсор в поле ввода температуры. Если в процессе открытия или создания нового файла возникает ошибка, то процедура делает недоступной кнопку Добавить и выводит информационное сообщение.


Процедура TForm1.Button1Click (процедура обработки события onclick) запускается нажатием кнопки Добавить (Button1). В результате введенная информация записывается в базу данных — файл pogoda.db. Перед выполнением записи программа проверяет, все ли поля формы заполнены, и, если не все, то выводит информационное сообщение.


В результате работы процедуры в конец файла pogoda.db будет добавлена строка, содержащая дату (число, месяц, год) и температуру.


В данной программе используется инструкция writein, а не write, для того чтобы данные за каждый день располагались в базе данных на отдельной строке.


Обратите внимание, что список вывода инструкции writein состоит из трех элементов. После вывода в файл даты (Edit1.text) в файл записывается пробел, а затем— температура (edit2.txt). Если температуру записать в файл сразу после даты, то числа, соответствующие году и температуре, сольются в одну последовательность цифр.


Закрывает базу данных процедура TFormi.Formciose, которая обрабатывает событие enclose, возникающее при закрытии формы приложения.


После нескольких запусков программы файл pogoda.db может быть, например, таким:


9.05.2001 10 10.05.2001 12 11.05.2001 10 12.05.2001 7

Понравилась статья? Поделиться с друзьями:
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: