Модуль Classes. Основные стандартные классы. 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Модуль Classes. Основные стандартные классы.



Тип TBits Объект, который может содержать бесконечное число Булевых значений Тип TList Универсальный контейнер списков объектов Тип TStringList Содержит список переменной длины, состоящий из строк

Рассказать о классах и их потомках

 

http://www.delphisources.ru/pages/faq/faq_delphi_basics/navClasses.php.html

Функция Bounds

Передаёт координаты вершин объекта типа TRect (прямоугольник)

function Bounds (const Top, Left, Width, Height: Integer): TRect;

Функция Bounds передаёт координаты вершин объекта типа TRect (прямоугольник). Указываются 2 вершины - правая верхняя и левая нижняя.

 

Функция Point

Генерирует значение TPoint из значений X и Y

function Point (const X, Y: Integer): TPoint;

Функция Point берет параметр X и Y и возвращает значение TPoint, содержащее их.

Функция PointsEqual

Сравнивает два значения TPoint на предмет равенства

function PointsEqual (const Point1, Point2: TPoint): Boolean;

Функция PointsEqual сравнивает значения параметров Point1 и Point2, и возвращает Истину (True), если они равны.

Функция Rect

Создаёт величину TRect с указанием 2 точек или 4 координат

 

1 function Rect (Left, Top, Right, Bottom: Integer): TRect;

2 function Rect (TopLeft, BottomRight: TPoint): TRect;

 

Delphi функция Rect создает объект TRect (прямоугольник), для создания прямоугольника необходимо указать 4 координаты или 2 точки.
При создании с указанием двух точек TopLeft и BottomRight, вы можете передать две величины TPoint или использовать функцию Point.

Примечания

В модулях Classes и Types есть две функции Rect. Только прежняя поддерживает второй синтаксис.
При использовании в вашем коде обоих из этих модулей, и Вы указали Types после Classes, то вы должны использовать Rect с прификсом Classes, чтобы использовать этот второй синтаксис.

Тип TBits

Объект, который может содержать бесконечное число Булевых значений

Тип TBits содержит гибкий набор битов (Булевых значений). Размер набора может быть изменен в любое время (используя свойство size).
К битам обращаются, используя свойство Bits, подобно этому:
flag:= myBits.Bits[2];
или, ещё прощё:
flag:= myBits[2];
Есть одна сервисная функция - OpenBit, которая возвращает индекс первого ложного значения. Подобной функции для поиска истинного значения нет.

 

 

Для хранения списка указателей на размещенные в адресном пространстве структуры (объекты, динамические массивы, переменные) предназначен класс TList. Так же, как и список строк TStringList, список указателей обеспечивает эффективную работу с элементами списка.

Основой класса TList является список указателей. Сам список представляет собой динамический массив указателей, к которому можно обратиться через индексированное свойство

Так как элементы списка являются указателями на некоторые структуры, прямое обращение к составным частям этих структур через свойство Items невозможно.

Примечание

В списке могут содержаться указатели на разнородные структуры. Не обязательно хранить в списке только указатели на объекты или указатели на записи.

Реализованные в классе TList операции со списком обеспечивают потребности разработчика и совпадают с операциями списка строк.

Списки используются для поддержки индексов объектов любого классового типа. Сам индекс хранит указатели на объекты и является динамическим — его размер можно изменить во время выполнения. Благодаря своей способности следить за объектами любого типа, TList является гибким, но требующим большего программирования по сравнению с другими классами из списка VCL, которые разработаны для обработки конкретных типов объектов (подобных TStrings и TImageList). TList не следует путать с полномасштабной коллекцией классов или связанными списками, поскольку он не обрабатывает распределение или высвобождение памяти для индексируемых объектов. В случае выбора TList выполнение всей черновой работы придется отвечать самостоятельно.
Хотя внутренняя работа TList связана с интенсивной и отвратительной манипуляцией указателями, Delphi часто защищает программиста от такой реализации, предоставляя удобные свойства и методы доступа к списку. Однако некоторые методы TList принимают в качестве параметров общие типы указателей. В таких случаях помните о том, что поименованные объекты являются косвенными указателями, поэтому в дальнейших манипуляциях нет необходимости. Если вы увидите параметр типа Pointer, то можете использовать его так, будто это тип TObject. Часто TList можно обрабатывать как массив указателей, используя свойство Items для доступа к отдельным элементам списка с помощью индексной записи.
С другой связанной с использованием указателей проблемой можно столкнуться из-за того, что TList применяет обобщенные указатели. Может потребоваться приведение указателей, возвращаемых методами TList, к конкретному индексируемому объекту.

TList и его потомок TPopupList.

TList
TList является базовым классом для списков. TList реализует множество методов и свойств, которые используются для манипулирования списком, для доступа и модифицирования элементов списка и для сбора информации о списке и его элементах.

TPopupList является списком, который поддерживает элементы, видимые во всплывающем (pop-up) меню. Хотя методы Add и Remove списка TPopupList настроены на работу с элементами всплывающего меню, концептуальное действие этих методов такое же, как и одноименных методов в TList.

 

Тип TList

Универсальный контейнер списков объектов

 

Класс TList очень полезный универсальный контейнер списков. Он отличается от массивов, в которых он обеспечивает более богатые функциональные возможности.

В частности объекты TList могут быть отсортированы. Эта сортировка может быть с использованием любых выбранных критериев. Например, список может содержать набор объектов, которые имеют строку и численные поля. Вы можете отсортировать список по строке, по числу, по обоим, с возрастанием или убыванием, как Вы желаете. И пересортировать позже по другим критериям.

 

Ключевые свойства и методы упомянуты ниже.

Свойство Capacity
Используется для установления размера (число указателей на объекты) списка. Предварительно установив в разумное значение, можно избежать множественных перераспределений памяти.

Свойство Count
Число элементов (указателей) в списке. Может быть прочитано или записано. Если размер уменьшен в результате изменения значения Count, то удаляются элементы в конце списка.

Свойство Items
Позволяет обращаться к элементам в списке. Например, myList.Items[2]; возвращает 3-ий элемент в списке. Это свойство, заданное по умолчанию, вышеупомянутое может быть упрощено до myList[2];.

Свойство List
Возвращает элементы в массиве.

Метод Add
Добавляет элемент в конец списока.

Метод Assign
Заменяет список содержанием другого списка.

Метод Clear
Удаляет все элементы списка, устанавливая Count в 0.

Метод Delete
Удаляет элемент из списка по его позиции в списке.

Метод Remove
Удаляет элемент из списка по его объектному указателю.

Метод Exchange
Меняет позиции двух элементов

Метод Move
Перемещает элемент в новую позицию списка.

Метод Insert
Вставляет новый элемент в список в данную позицию.

 

Метод First
Получает первый элемент в списке.

Метод Last
Получает последний элемент в списке.

Метод Sort
Сортирует список в соответствии с вашими указанными критериями. Сортировка списка проводится внутри TList, но каждая пара элемента сравнивается, вызывая функцию, которую вы указали для этого метода.

Метод IndexOf
Выдает позицию указанного объекта в списке.

 

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

Хотя класс и называется TStrings, но он сконструирован для выполнения более общего множества операций, нежели простое манипулирование строками. Фактически TStrings не оперирует со строками вообще. Скорее, его работа заключается в действиях с коллекциями строк. В этом смысле TStrings является абстрактным контейнерным классом, и все порожденные от него классы обеспечивают детали реализации, предоставляющие возможность методам, определенным в TStrings, выполнять свою работу. Часто аргумент типа TStrings специфицируется просто для того, чтобы функция могла полиморфически оперировать с различными производными TStrings. Одним из самых интересных и потенциально полезных механизмов TStrings является его способность функционировать в качестве ассоциированного списка или словаря, в котором различные строковые входы действуют в качестве ключевых имен, которые можно задействовать для извлечения любого объекта по его имени.
Каждый строковый вход в производных классах TStrings способен содержать не только строку, но и ссылку на любой объект Delphi. Данный механизм представляет собой то, что позволяет производным класса TStrings функционировать подобно элементарным символьным таблицам. Такая функциональность часто используется различными элементами управления для обеспечения механизма поддержки рисования владельцем. В данном случае ссылка на объект указывает на битовый образ, подлежащий отрисовке, в сочетании с текстом, который появляется в определенном списке. Наиболее фундаментальным производным классом TStrings является TStringList. Данный класс перекрывает все необходимые виртуальные функции TStrings для того, чтобы реализовать желаемое поведение списка строк, способного хранить объекты. Если потратить некоторое время на глубокое изучение TStrings и TStringList, появятся предпосылки для лучшего понимания некоторых тонких вещей, которые можно выполнить посредством этого полезного семейства классов.
Вот как выглядят общедоступные объявления класса TStrings. Обратите внимание на большое количество виртуальных функций. Это обстоятельство подсказывает, что большая часть детальной работы будет реализована в производных классах.

TComboBoxStrings
Класс TComboBoxStrings используется всеми управляющими классами, порожденными от TCustomComboBox. Среди них — TComboBox, TDriveComboBox и TDBComboBox. Методы, определенные именно этим производным TStrings, работают в сочетании с элементом управления комбинированным окном Windows для обеспечения функциональности, которую ожидают от любого класса подобного рода. TComboBoxStrings по функциям похож на класс TListBoxStrings за исключением того, что базовый элемент управления Windows является комбинированным окном, а не окном списка.

THeaderStrings
Класс THeaderStrings определен для использования компонента THeader и соответствует свойству компонента THeader. Другими словами, свойство Sections компонента THeader имеет тип TheaderStrings. Размер и содержимое списка THeaderStrings в большой степени определяют то, что появляется в компоненте THeader, когда он отображается в родительской форме.

Класс TListBoxStrings используется классом TCustomListBox для управления списком элементов, представленного классами, порожденными от TCustomListBox. Это классы TListBox и TFileListBox. Обратите внимание, что каждый из методов данного класса перекрывает виртуальную функцию, определенную в TStrings. Данные функции внутренне сконструированы для такого взаимодействия, чтобы извлекать или запоминать требуемую информацию из соответствующего элемента управления Windows. Это отличается от работы TStringList, который создает и поддерживает требуемую память для списка элементов самостоятельно. В данном случае Delphi полагается на поведение, обеспечиваемое для соответствующей функциональности внутренними механизмами Windows.

Класс TMemoStrings обеспечивает строковый основанный на списке интерфейс для стандартного элемента управления редактированием Windows. Отдельные строки элемента управления редактированием отображаются в индивидуальные элементы в списке строк. Обратите внимание на то, что в определении данного класса нет поддержки хранения и извлечения ссылок на объекты, как это имеет место в классах TListBoxStrings и TComboBoxStrings, поскольку окно редактирования вообще предназначено для хранения только текстовой информации.

TStringGridSTrings
Класс T StringGridSTrings используется TStringGrid для обеспечения поддержки базового класса памяти для строк, содержащихся в ячейках компонента TStringGrid. Объект TStringGrid обеспечивает свойства индексирования членов Cols и Rows, которые возвращают ссылки на объекты типа TStringGridSTrings. Используя подобную технологию, можно получить список строк, представляющий как строки, так и колонки компонента TStringGrid, и манипулировать содержимым как и у любого другого потомка TStrings.

 

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

Класс TStrings является базовым классом, который обеспечивает потомков основными свойствами и методами, позволяющими создавать работоспособные списки строк. Его прямым предком является класс TPersistent.

Класс TStrings реализует все вспомогательные свойства и методы, которые обеспечивают управление списком. При этом методы, непосредственно добавляющие и удаляющие элементы списка, не реализованы и объявлены как абстрактные.

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

Классы-наследники должны перекрывать методы добавления и удаления элементов списка. Реализованный в Delphi класс TStringList практически полностью повторяет функциональность предка, добавляя лишь несколько новых свойств и методов. Поэтому мы не станем останавливаться подробнее на классе TStrings, а перейдем сразу к его работоспособному потомку TStringList.

Класс TStringList обеспечивает реальное использование списков строк в приложении. По существу, класс представляет собой оболочку вокруг динамического массива значений списка, представленного свойством Strings.

Тип TStringList

Содержит список переменной длины, состоящий из строк

 

TStringList - полезный тип класса. Он чрезвычайно полезен для многих видов обработок списков. Элементы в строковом списке могут быть вставлены, перемещены и отсортированы.

Список может быть сформирован строка за строкой, или загружен из большой строки разделенной запятой или даже из текстового файла. TStringList происходит от TStrings. Вы можете использовать и TStrings, но это не рекомендуется, так как он не полный - некоторые из его методов абстрактны. TStringList осуществляет эти абстрактные методы (Clear, Delete и Insert).

Мы рассмотрим основные свойства и методы TStringList, включая полученные из TStrings.

Свойство Count
Возвращает число строк в списке.

Свойство Capacity

Устанавливает или получает текущую вместимость строкового списка. Вы можете управлять этой вместимостью по необходимости.

Свойство Strings
Получает или корректирует строку по данному индексу в списке (первый элемент списка имеет индекс 0).

Обратите внимание, что свойство Strings является свойством, заданным по умолчанию. Это означает, что вы можете использовать его без его указания:

myName:= names.Strings[4];

является эквивалентным:

myName:= names[4];

Свойство Text
Устанавливает или получает список в виде большой строки. Эта строка будет содержать каждую строку закончивающуюся комбинацией символов перевода каретки и перевода строки (CRLF). Полезно для загрузки из визуального объекта, который может содержать многочисленные строки текста.

Свойство CommaText
Получает или устанавливает список в виде большой строки. Эта строка будет иметь список строк разделенных запятыми. Это полезно для загрузки из экспорта текстовой электронной таблицы. Если при получении строка содержит вложенные пространства, то она будет заключена в двойные кавычки.

Cвойство DelimitedText
Получает или устанавливает список через большую строку. Эта строка содержит список строк разделенных значением Delimiter (по умолчанию - запятая). Строки, содержащие вложенные пробелы должны быть заключены в QuoteChar (по умолчанию - ").

Свойство QuoteChar
Используется для замыкания строк, которые имеют вложенные пробелы при использовании DelimitedText.

Свойство Delimiter
Используется для разделения строк при использовании DelimitedText

 

Свойство Names
Строки в строковом списке могут быть обработаны, как пары название/значение, как во втором примере кода. Каждая строка не должна иметь никаких внедренных пробелов, и содержать знак =. Это очень полезное понятие. См. свойства Value и ValueFromIndex, и метод IndexOfName.

Свойство Values
Возвращает значение для данного названия, когда используются строки пары название/значение (см. выше).

Свойство ValueFromIndex
Возвращает значение по индексу строки (начинается с 0), когда используются пары название/значение.

Свойство CaseSensitive
Когда true, Delphi обрабатывает строки чувствительно к регистру при выполнении некоторых операций, таких как Sort.

Свойство Duplicates
Это свойство может иметь одно из следующих перечислимых TDuplicates значений:

dupIgnore Игнорирует (отбрасывает) дубликаты
dupAccept Позволяют дубликаты
dupError Выбрасывает исключение, если имеются дубликаты

 

Свойство Sorted
Когда true, все строки будут добавляться в свою позицию отсортированной последовательности. Когда false, они будут добавляться в конец. См. также метод Sort.

Свойство Objects
Возвращает объект, связанный со строкой по данному индексу, если он существует.

Метод Add
Добавляет данную строку в список, возвращая ее позицию в списке (начинается с 0).

Метод Append
Так же как и Add, но без возвращения индексного значения.

Метод Insert
Вставляет строку в заданную индексом позицию. Позиция 0 вызовет вставку в начало.

Метод Delete
Удаляет строку по данному индексу.

Метод Clear
Удаляет все строки из списка.

Метод Move
Перемещает строку из одной позиции в другую, сдвигая другие строки соответственно.

Метод Exchange
Перестанавливает две строки в списке, идентифицированные по их индексным позициям.

Метод IndexOf
Получает индекс позиции строки в списке соответствующей данной строке. Если строка не найдена, то возвращается -1.

Метод IndexOfName
Получает индекс позиция первой пары название/значение строки, где название соответствует данной строке. Если не найдена - возвращается -1.

Метод Find
То же самое, что и IndexOf, но с использованием списков сортированных строк.

Метод Sort
Если Sorted является ложным, то это вызовет сортировку списка.

Метод AddStrings
Добавляет строки из другого списка.

Метод Assign
Заменяет текущий список содержанием другого списка.

Метод LoadFromFile
Очень полезный метод, загружает строковый список из текстового файла. Каждая текстовая строка (законченая CRLF - см. DelimitedText) становится строкой списка.

Метод SaveToFile
Сохраняет строковый список в текстовый файл.

 

TCollection и TCollectionltem необходимы для поддержки работоспособности ряда элементов управления Windows, не являющимися родными для среды Windows и поддерживающими список элементов. Распространенным примером является линейка состояния, которая, как правило, разделена на несколько областей, содержащих различные текстовые сообщения, относящиеся к состоянию текущих операций определенной программы. Линейка состояния не является фундаментальным типом элементов управления Windows, каким является окно списка, однако определяется Delphi VCL. Такого же рода примерами являются объекты TListColumns и TDBGridColumns, которые используются для поддержки других элементов управления в Delphi VCL. Такие элементы управления, не родные для Windows и требующие управления списком объектов, для корректной организации данных по соглашению должны использовать классы TCollection и TCollectionltem.


Класс TCollection похож на другие классы, определенные в Delphi, которые управляют списками объектов, в частности — на TList и TStrings. Класс TCollection используется для хранения объектов типа TCollectionltem. TCollection является абстрактным классом и непосредственно не задействуется. Примером порожденного класса является коллекция TStatusPanels, которая размещена в определении элемента управления TStatusBar.



Поделиться:


Последнее изменение этой страницы: 2017-02-21; просмотров: 349; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.118.140.108 (0.084 с.)