Будь умным!


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

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

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

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

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

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

от 25%

Подписываем

договор

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

Скидка 25% при заказе до 24.11.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 Проверил преподаватель- Каменская Е.
2.  Определение поведения потребителей
3. на тему- ldquo;Водоснабжение и канализация жилого зданияrdquo;.
4. Научное наведение порчи с использованием техник Эриксоновского гипноза и суггестивной лингвистики
5. 443 Что может быть важнее для успешного проведения избирательной кампании чем стратегическое планирован
6.  Буюк британия су~урта бозори ва уни давлат томонидан тартибга солиш
7. 19Кл; [q]1Кл Дискретность заряда заключается в том что заряд тел кратен элементарному
8. Пояснительная записка Планирование составлено в соответствии с программой общеобразовательных учреждени
9. Любительские движения
10. Детский сад 15 комбинированного вида Автор- Хус
11. реферат дисертації на здобуття вченого ступеня кандидата медичних наук Харків 2003 Ди
12. Історія літакобудування
13. Солнечные пятна, динамика и механизм их образования, способы их учета в экологии и астрофизике
14. Введение.3 Классификация полупроводниковых материалов и их особенности
15. Не смотря на это производственная деятельность станции должна обеспечивать взаимодействия всех элементов
16. Лабораторная работа 3 Измерение параметров цифровых интегральных схем и исследование формирователе
17. Преступления против здоровья населения и общественной нравственности 1
18. дистанция ~ пешиходная Класс дистанции 2
19. задание ~одинаковая 1 балл Из них правильных ответов должно быть процентов- ля оценки отлично не мене
20. ТЕМА 5 Адміністративноправове регулювання дорожнього руху в Україні ЛЬВІВ