h1

Программа Персональный телефонный справочник

Июль 22, 2009

Представляет собой телефонный справочник, заполняемый пользователем. Данные хранятся в файле, состоящим из массива записей.

Исходный код:

unit Main;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Mask, ExtCtrls;

type
TfMain = class(TForm)
ComboBox1: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
MaskEdit1: TMaskEdit;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
ComboBox2: TComboBox;
Panel1: TPanel;
Button1: TButton;
Button2: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type
myTFSprav = record
TelNum : String[15]; //номер телефона
Mobil : Boolean; //мобильник – да? Нет?
Imya : String[20]; //имя владельца телефона
Otchestvo : String[20]; //его отчество
Familiya : String[20]; //его фамилия
Adres : String[50]; //его адрес
end; //record

var
fMain: TfMain;
sprav: array of myTFSprav; //объявляем динамический массив нашей записи

implementation

{$R *.dfm}

{Процедура обновления ComboBox1}
procedure ChangeCombo;
var
i : Integer; //счетчик для цикла
begin
//если массив пустой — выходим:
if Length(sprav) = 0 then Exit;
//если что-то есть, то сначала очистим ComboBox:
fMain.ComboBox1.Items.Clear;
//затем добавим в него каждый номер телефона из массива:
for i := 0 to High(sprav) do
fMain.ComboBox1.Items.Add(sprav[i].TelNum);
end;

procedure TfMain.Button2Click(Sender: TObject);
begin
Close;
end;

{Добавить телефон}
procedure TfMain.Button1Click(Sender: TObject);
var
i : Integer; //для счетчика записей
begin
{Проверяем обязательные параметры:}
//если номера телефона нет, выходим:
if MaskEdit1.Text = ‘8(374)- — — ‘ then begin //здесь введите свой код города
ShowMessage(‘Впишите номер телефона!’);
MaskEdit1.SetFocus;
Exit;
end; //if

//если имени нет, выходим:
if Edit1.Text = » then begin
ShowMessage(‘Впишите имя владельца телефона!’);
Edit1.SetFocus;
Exit;
end; //if

//действительно ли пользователь хочет сохранить телефон?
if Application.MessageBox(‘Вы уверены, что хотите сохранить этот телефон?’,
‘Внимание!’, MB_YESNOCANCEL+MB_ICONQUESTION)<> IDYES then Exit;

{Пользователь указал номер телефона и имя, и желает сохранить телефон
в список.}

//проверяем номер телефона на совпадение с имеющимися номерами,
//если там есть записи. Для проверки используем цикл, сверяем каждую запись.
//Если такая запись уже есть, сообщаем об этом и выходим из процедуры:
if length(sprav) > 0 then
for i := Low(sprav) to High(sprav) do
if sprav[i].TelNum = MaskEdit1.Text then begin
ShowMessage(‘Такой номер уже есть!’);
Exit;
end; //if

//добавляем новый элемент к массиву:
SetLength(sprav, Length(sprav)+1);

//записываем новый телефон в список:
sprav[High(sprav)].TelNum := MaskEdit1.Text;
if ComboBox2.ItemIndex = 0 then
sprav[High(sprav)].Mobil := True
else sprav[High(sprav)].Mobil := False;
sprav[High(sprav)].Imya := Edit1.Text;
sprav[High(sprav)].Otchestvo := Edit2.Text;
sprav[High(sprav)].Familiya := Edit3.Text;
sprav[High(sprav)].Adres := Edit4.Text;

//очищаем поля на форме:
MaskEdit1.Text := ‘8(374)- — — ‘;
ComboBox2.ItemIndex := 0;
Edit1.Text := »;
Edit2.Text := »;
Edit3.Text := »;
Edit4.Text := »;

ShowMessage(‘Телефон ‘+ sprav[High(sprav)].TelNum + ‘ добавлен!’);

//обновим ComboBox с телефонами:
ChangeCombo;
end;

{при выходе из программы обновим файл:}
procedure TfMain.FormDestroy(Sender: TObject);
var
f : File of myTFSprav;
i : Integer;
begin
//создаем или перезаписываем файл:
try
AssignFile(f, ‘mySprav.dat’);
Rewrite(f);
//записываем все данные архива:
for i := Low(sprav) to High(sprav) do
Write(f, sprav[i]);
finally
CloseFile(f);
end; // try

end;

{При включении программы загружаем список}
procedure TfMain.FormCreate(Sender: TObject);
var
f : File of myTFSprav;
begin
try
AssignFile(f, ‘mySprav.dat’);
Reset(f);
//считываем все данные в архив:
while not Eof(f) do begin
//добавляем новый элемент массива
SetLength(sprav, Length(sprav)+1);
Read(f, sprav[High(sprav)]);
end; //while
finally
CloseFile(f);
end; // try
//обновим ComboBox с телефонами:
ChangeCombo;
end;

{Выбрали другой объект в combobox1}
procedure TfMain.ComboBox1Change(Sender: TObject);
begin
MaskEdit1.Text := sprav[ComboBox1.ItemIndex].TelNum;
if sprav[ComboBox1.ItemIndex].Mobil then
ComboBox2.ItemIndex := 0
else ComboBox2.ItemIndex := 1;
Edit1.Text := sprav[ComboBox1.ItemIndex].Imya;
Edit2.Text := sprav[ComboBox1.ItemIndex].Otchestvo;
Edit3.Text := sprav[ComboBox1.ItemIndex].Familiya;
Edit4.Text := sprav[ComboBox1.ItemIndex].Adres;
end;

end.

Ссылка на программу

Ссылка на файлы проекта



Advertisements

2 комментария

  1. Хорошо бы еще скрин бы….)))
    а так все супер….


    • Скрин добавил. Ссылку на программу и файлы проекта обновил.



Добавить комментарий

Заполните поля или щелкните по значку, чтобы оставить свой комментарий:

Логотип WordPress.com

Для комментария используется ваша учётная запись WordPress.com. Выход / Изменить )

Фотография Twitter

Для комментария используется ваша учётная запись Twitter. Выход / Изменить )

Фотография Facebook

Для комментария используется ваша учётная запись Facebook. Выход / Изменить )

Google+ photo

Для комментария используется ваша учётная запись Google+. Выход / Изменить )

Connecting to %s

%d такие блоггеры, как: