Будь умным!


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

ЛАБОРАТОРНАЯ РАБОТА 71 Изучение класса TList

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

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 21.5.2024

ЛАБОРАТОРНАЯ РАБОТА № 7_1

Изучение класса TList .

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

Требования к знаниям:

Назначение, методы и особенности класса TList

Класс TList

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

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

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

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

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

Измените значения свойства Caption компонентов Label, Forml и Buttonl в соответствии с рисунком.

Очистите свойство Text компонентов Edit, свойства Name компонентов установите следующим образом:

Компонент 

Свойство 

Значение 

Form1 

Name 

MainF 

Edit1 

Name 

LastNameEdt 

Edit2 

Name 

NameEdt 

Edit3 

Name 

PatronymicEdt 

Edit4 

Name 

StreetEdt 

SpinEdit1 

Name 

HouseSE 

SpinEdit2 

Name 

FlatSE 

Buttonl 

Name 

AddBtn 

MaskEdit1 

Name 

PhoneME 

 

AutoSelect 

False 

 

EditMask 

!00-00-00;1;_ 

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 Arecord^ 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;

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

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

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

Примечание. Для обращения к полям записи воспользуйтесь операторами: ARecord:=MyList[yk] ; with ARecord^ do ...

b) сохраните список записей телефонной книги в файле;

c) при запуске приложения считайте данные из файла;

d) процедурой поиска записей в телефонной книге по фамилии и вывода найденных записей в диалоговое окно;

e) функцией добавления абонента в список, сохраните внесенные изменения в файле;

f) процедурой удаления абонента из списка, сохраните изменения в файле.

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

ARecord := MyList.Items[В];

{В — это номер удаляемой записи}

Dispose(ARecord); 

PAGE  1




1. Составление бизнес-плана
2. Самарский университет
3. Тема 3. СТРАХОВІ РИЗИКИ ТА ЇХ ОЦІНЮВАННЯ 1
4. Задание ’1. 1 Составим вариационный ряд упорядочив выборку по 8 разрядам.html
5. Реферат- Созвездие Лебедь
6. Новый Завет
7. Деякі відомості про нейронні елементи 3 2
8. Красноярский государственный медицинский университет имени профессора В1
9. Психологическая лояльность бренду
10. агностицизм был предложен в 1869 Т
11. задание ~ задача- Задача 1
12. другому стать успешным богатым умным или спортивным; если вы начали заниматься чемто всерьез будь то изуч
13. Банковское дело Жакышева Армангуль Бахит
14. Петербурга по жиму лежа Ненужное удалить
15. тема філософських поглядів в яких космос як філософське поняття займає центральне місце
16. Курсовая работа- Управление человеческими ресурсами
17. Задание 31 ~ Текстуры
18. Профілактичні можливості адвоката у конкретній кримінальній справі
19. Разработка концепции летнего кафе
20. Ноотропные и нормотимические препараты