Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Напишите приложение позволяющее создавать список абонентов телефонного узла

Работа добавлена на сайт samzan.net:


5.3. Класс TList

Класс TList используется в качестве основы для создания списков общего назначения. Кроме того, TList можно использовать как класс-контейнер для хранения в списках объектов любого типа. В большинстве случаев, чтобы использовать класс TList, необходимо создать два собственных класса: один — для элементов, предназначенных для хранения в списке, а другой — для самого списка.

Упражнение 5.3.1. Напишите приложение, позволяющее создавать список абонентов телефонного узла.

Решение

Создайте новый проект. Сохраните новое приложение в папке PhoneBook — файл модуля под именем Main.pas, файл проекта — PhoneBook. dpr.

1-й этап. Создадим визуальный интерфейс приложения (рис. 5.3.1)

Поместите на форму семь компонентов Label, четыре Edit, два SpinEdit, один Button и один MaskEdit (Addition).

Измените значения свойства Caption компонентов Label, Forml и Button 1 в соответствии с рис. 5.3.1, очистите свойство Text компонентов Edit, свойства Name компонентов установите следующим образом:

Компонент

Свойство

Значение

Forml

Name

MainF

Editl

Name

LastNameEdt

Edit2

Name

NameEdt

Edit3

Name

PatronymicEdt

Edit4

Name

StreetEdt

SpinEditl

Name

HouseSE

SpinEdit2

Name

FlatSE

Buttonl

Name

AddBtn

MaskEditl

Name

PhoneME

AutoSelect

False

EditMask

!00-00-00;l;_

StatusBarl

Panels[0].Text

Количество записей

Panels[0].Width

110

Panels[l].Text

Panels[l]. Width

30

Panels[2].Text

Номер

Panels[2]. Width

38

Panels[3].Text

Свойство EditMask используют, чтобы обеспечить ввод данных в соответствии с заданной маской. Если пользователь вводит несовместимые с заданной маской символы, MaskEdit игнорирует их.

Для ввода номера телефона используется маска: !00-00-00;1;_ Маска состоит из трех полей, разделенных символом точка с запятой. Первая часть определяет собственно маску. Для построения маски используются специальные символы:

!  Поле заполняется слева направо

0  Цифра (0-9) или знак (+/-) обязательны

__  Автоматически вставляет пробел в указанной позиции

>  Все символы справа от указанной позиции переводятся в верхний регистр

<  Все символы слева от указанной позиции переводятся в нижний регистр

,:;/-()  Разделители

L  Буква обязательна

Примечание. Другие символы, используемые для создания маски, можно посмотреть в справочной системе Delphi.

Таким образом, поле Телефон определен как шестизначный номер, цифры которого разбиваются по парам и будут заполняться слева направо.

Вторая часть маски определяет, сохранять ли невводимые символы как данные. Значение параметра, равное нулю, показывает, что свойство Text для примера содержит 6 символов (невводимые символы (в примере — «-») не сохраняются). Любое другое значение параметра заставляет сохранять невводимые символы в свойстве Text (для примера свойство Text будет содержать 8 символов). В примере параметр равен единице, невводимые символы будут сохраняться в свойстве Text.

Третья часть определяет символ, определяющий поля маски, которые необходимо заполнить. В примере это символ «_».

2-й этап. Создание программного кода

Предположим, что длина полей LastName (фамилия), Name (имя), Patronymic (отчество) не превосходит 25 символов, а Street (улица) — 40 символов. Измените свойства MaxLength компонетов Edit в соответствии с введенными ограничениями.

Опишем два новых типа:

type

PMyList =  ^AList;

AList = record;

LastName: string[25];

Name: string[25];

Patronymic: string[25];

Street: string [40];

House: integer;

Flat: integer;

Phone: string[8];

end;

В разделе private описания класса TMainF опишите переменные:

MyList: TList;   {для хранения введенных записей}

ARecord: PMyList;  {для формирования полей одной записи}

Yk: Integer;   {указатель перемещения по записям MyList}

При запуске приложения создадим объект MyList типа TList:

procedure TMainF.FormCreate(Sender: TObject);

begin

MyList := TList.Create;     {выделение памяти под объект MyList}

Yk:=-1;

end;

При завершении работы с приложением освободим память, выделенную под объект MyList:

procedure TMainF.FormDestroy(Sender: TObject);

begin

MyList.Free;

end;

Для добавления записи опишем обработчик события OnClick кнопки Добавить:

procedure TMainF.AddBtnClick(Sender: TObject);

begin

New (ARecord) ;   {выделяем место под запись}

 with ArecordA do

begin {заполняем поля записи}

 LastName:=LastNameEdt.Text;

 Name:=NameEdt.Text;

 Patronymic:= PatronymicEdt.Text;

 Street:=StreetEdt.Text;

 House:=HouseSE.Value;

 Flat:=FlatSE.Value;

 Phone:= PhoneME.Text;

 end;

MyList. Add (ARecord) ; {добавляем запись в объект MyList}

 inc (yk) ;    {увеличиваем значение указателя}

StatusBar1.Panels[1].Text:=IntToStr(MyList.Count);

{отображаем количество записей в панели статуса}

StatusBar1.Panels[3].Text:=IntToStr(yk+1);

{отображаем номер отображаемой записи в панели статуса}

end;

Эксперимент. Сохраните проект. Запустите его и попробуйте добавить в телефонную книгу информацию о себе и своем друге. Убедитесь, что в строке состояния отображается число два (количество введенных записей). ♦

Задание для самостоятельного выполнения

Дополните приложение PhoneBook

  1.  кнопками для перемещения по записям списка;

Примечание. Для обращения к полям записи воспользуйтесь операторами:

ARecord:=MyList[yk]; with ARecordA do ...

  1.  сохраните список записей телефонной книги в файле;
  2.  при запуске приложения считайте данные из файла;
  3.  процедурой поиска записей в телефонной книге по фамилии и вывода найденных записей в диалоговое окно;
  4.  функцией добавления абонента в список, сохраните внесенные изменения в файле;
  5.  процедурой удаления абонента из списка, сохраните изменения в файле.

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

ARecord := MyList.Items[В];  {В — это номер удаляемой записи}

Dispose(ARecord);




1. і. Можливості використання засобів складання та виготовлення документів у межах навчального закладу
2. Контрольная работа по дисциплине Информационные системы в экономике Направление контрольн
3. ТЕМА ’ 8- ldquo;ЛИЧНОСТЬ и ОБЩЕСТВОrdquo; П Л А Н - Введение
4. Традиционные и новые способы краткосрочного финансировани
5. Восточной Азии показывает что сбережения там находятся на значительно более высоком уровне чем в странах
6. Договор страхования
7. 2012 ОЦІНЮВАННЯ ЗНАНЬ УМІНЬ ТА НАВИЧОК СТУДЕНТІВ З ОКРЕМИХ ВИДІВ РОБІТ В ЦІЛОМУ ПО МОДУЛЯХ В БАЛАХ
8. Бухгалтерская отчётность и её виды
9. Преступления в сфере информационных и компьютерных технологий
10. Функции и основные принципы организации местного самоуправления
11. I LISTENING ND REDING Listen to the text Red nd trnslte the text DISSTERS Good evening
12. тема Выполнила- студентка 3 курса Группы 0507А Мельникова О
13. Уголовная ответственность за превышение должностных полномочий
14. Герои Илиады
15. то определенным количеством знаний Человек должен уметь самостоятельно пополнять свои знания заниматься с
16. реферат дисертації на здобуття наукового ступеня1
17. Дикобраз Перевод с английского С
18. товары для личного пользования принадлежащие физическому лицу переданные или передаваемые перевозчику по
19. Контрольная работа по маркетингу Вариант 11
20. ВведениеКаждый предприниматель начиная свою деятельность должен ясно представлять потребность на перспе