Читайте также:
|
|
unit аррrес_;
Interface
Uses
Windows, Messages, SysUtils, Classes,
Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;
Type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Edit1: TEdit; // спортсмен
ComboBox1: TComboBox; // страна
ComboBox2: TComboBox; // вид спорта
RadioGroup1: TRadioGroup; // медаль
Buttonl: TButton; // кнопка Добавить
procedure FormActivate(Sender: TObject);
procedure FormClose(Sender:TObject;var Action: TCloseAction)
procedure Button1Click(Sender: TObject);
private { Private declarations }
public { Public declarations }
end;
// тип медали
TKind = (GOLD, SILVER, BRONZE);
// запись файла
TMedal= record
country: string [20]; // страна
sport: string [20]; // вид спорта
person: string [40]; // спортсмен
kind: TKind; // медаль
end;
var Form1: TForm1;
f: file of TMedal; // файл записей — база данных
Implementation
{$R *.DFM}
// активизация формы
procedure TForm1.FormActivate(Sender: TObject);
var resp: word; // ответ пользователя
Begin
AssignFile(f, 'a:\medals.db');
{$I-}
Reset (f); // открыть файл
Seek(f, FileSize(f)); // указатель записи в конец файла
{$I+}
if lOResult = 0 then
buttonl.enabled:=TRUE // теперь кнопка Добавить доступна
Else begin
resp:=MessageDlg('Файл базы данных не найден.'
+ 'Создать новую БД?', mtlnformation,[mbYes,mbNo],0);
if resp = mrYes then begin
{$I-}
rewrite(f);
{$I+}
if lOResult = 0 then button1.enabled:=TRUE
else ShowMessage('Ошибка создания файла БД.');
end;
end;
end;
// щелчок на кнопке Добавить
procedure TForm1.Button1Click(Sender: TObject);
var medal: TMedal;
Begin
With medal do begin
country:= ComboBox1.Text;
sport:= ComboBox2.Text;
person:= Edit1.Text;
CaseRadioGroup1.ItemIndex of
0: kind:= GOLD;
1: kind:= SILVER;
2: kind:= BRONZE;
end;
end;
write(f,medal); // записать содержимое полей записи в файл
end;
// завершение работы программы
ProcedureTForm1.FormClose(Sender: TObject;var
Action:TCloseAction);
Begin
CloseFile(f); // закрыть файл
end;
End.
В представленной программе процедура TForm1.FormActivate открывает файл базы данных для добавления. Здесь следует обратить внимание на то, как это реализовано. Процедуру AppendFile, которая открывает файл для добавления в конец, использовать нельзя, т. к. файл не является текстовым. Поэтому файл сначала открывается процедурой Rewrite в режиме перезаписи, а затем процедура Seek устанавливает указатель чтения/записи в конец файла. Параметром процедуры seek является функция Filesize, значение которой равно размеру файла (в байтах).
Процедура TForm1.Button1Click, которая запускается нажатием кнопки Добавить (Button1), выполняет непосредственное добавление записи в файл. Поля country и sport добавляемой записи заполняются из свойства Text комбинированных списков Страна (comboBox1) и Вид спорта (ComboBox2).
Поле person формируемой записи заполняется из поля ввода Спортсмен (компонент Edit1), а содержимое поля medal определяется выбранной кнопкой компонента RadioGroupl.
Процедура TForm1.FormClose закрывает файл базы данных поскольку тип TMedal используется двумя процедурами(TForm1.FormActivate и TForm1.Button1Сlick), то его описание помещено в раздел type модуля формы. Объявление файловой переменной f по этой же причине помещено в раздел объявления переменных модуля формы.
В приведенном варианте программы предполагается, что списки стран и названий видов спорта формируются при помощи редактора списка строк во время разработки формы. Вместе с тем, список можно сформировать во время разработки программы. Для этого надо к свойству items применить метод Add. Например, список стран может быть сформирован при помощи следующих инструкций (их нужно поместить в процедуру Tform1.FormActivate):
Form1.ComboBox1.Item.Add('Россия');
Form1.ComboBox1.Item.Add('Австрия');
Form1.ComboBox1.Item.Add('Германия');
Form1.ComboBox1.Item.Add('Франция');
Дата добавления: 2015-02-16; просмотров: 76 | Поможем написать вашу работу | Нарушение авторских прав |