Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

ГЛАВА 13.СПРАВОЧНИК ПО ОБЪЕКТАМ.

     Эта глава содержит алфавитный список всех стандартных объектов
Turbo Vision с объяснением их назначения и использования, с полями,
методами и палитрами цветов.
     Чтобы найти  информацию по определенному объекту помните,  что
многие свойства объектов в иерархии наследуются от  предков. Вместо
бесконечного дублирования   всей  информации  эта  глава  описывает
только поля и методы,  которые добавляются или  изменяются  в  этом
объекте.
     Например, если Вы хотите найти поле Owner объекта  TLabel,  Вы
можете посмотреть  поля TLabel,  среди которых Вы не найдете Owner.
Затем посмотрите  непосредственного  предка  TLabel  в  иерархии  -
TStaticText. Поля    Owner   нет   опять.   Посмотрите   следующего
непосредственного предка TView.  Здесь Вы найдете полную информацию
об Owner, которое наследуется неизменным в TLabel.
     Каждый объект в этой  главе  имеет  графическое  представление
предков и  непосредственных  наследников так,  что Вы сможете легко
найти объекты, от которых наследуются поля и методы.
     Каждый объект представлен в следующем формате:


Объект TSample Модуль объекта

+---------+ | TObject | +----+----+ +====+====+ | TSample | +====+====+ +------+------+ | TDescendant | +-------------+ Поля Этот раздел приводит список всех полей объекта. Кроме объявления поля и объяснения его использования приводится назначение "только чтение" и "чтение/запись". Поля "только на чтение" - это поля, которые устанавливаются и поддерживаются методами объектов и которые не должны использоваться в левой части оператора присваивания. AField AField: SomeType; Только чтение AField - это поле, которое содержит некоторую информацию об этом объекте. Этот текст объясняет как оно функционирует, что это означает и как Вам его использовать. См. так же: Связанные поля, методы, объекты, глобальные функции и т.д. AnotherField AnotherField: Word; Чтение/Запись Это поле содержит информацию подобную информации для поля AField. Методы Этот раздел приводит все методы, которые либо определены в этом объекте, либо перекрывают унаследованные методы. Для виртуальных методов указывается, как часто требуется перекрывать метод: никогда, редко, иногда, часто или всегда. Init constructor Init(AParameter: SomeType); Init создает новый экземпляр объекта, устанавливая поле AField в АParameter. Zilch procedure Zilch; virtual; Перекрывается: Иногда Процедура Zilch выполняет некоторые действия. См. так же TSomethingElse.Zilch

TApplication App

+----------+ | TObject | +----+-----+ +----+-----+ | TView | +----+-----+ +----+-----+ | TGroup | +-+--+---+-+ +---------+ | +---------+ +----+----+ +----+-----+ +----+-----+ | TWindow | | TDeskTop | | TProgram | +----+----+ +----------+ +----+-----+ +----+----+ +=====+========+ | TDialog | | TApplication | +---------+ +==============+ TApplication просто наследуется от TProgram и отличается от TProgram только констрактором и дестрактором. TApplication.Init инициализирует все подсистемы Turbo Vision (управление памятью, видео, событиями, системными ошибками и списками историй) и затем вызывает TProgram.Init. Аналогично TApplication.Done вначале вызывает TProgram.Done, а затем уничтожает все подсистемы Turbo Vision. Обычно Вы будете наследовать свои программы от TApplication. Если Вам потребуется другая последовательность инициализации подсистем и их закрытия, Вы можете наследовать Вашу программу от TProgram и вручную инициализировать и закрывать подсистемы Turbo Vision. Методы Init constructor Init; Фактическая реализация TApplication.Init показана ниже: constructor TApplication.Init; begin InitMemory; InitVideo; InitEvents; InitSysError; InitHistory; TProgram.Init; end; См. так же: TProgram.Init Done destructor Done; virtual; Реализация TApplication.Done показана ниже: destructor TApplication.Done; begin TProgram.Done; DoneHistory; DoneSysError; DoneEvents; DoneVideo; DoneMemory; end;

TBackground App

+-------------+ | TObject | +------+------+ +------+------+ | TView | +------+------+ +======+======+ | TBackGround | +=============+ TBackground - это простой видимый элемент, содержащий однотонно заполненный прямоугольник. Обычно он принадлежит TDeskTop. Поля Pattern Pattern: Char; Только чтение Это битовый шаблон для фона видимого элемента. Методы Init constructor Init(var Bounds: TRect; APattern: Char); Создает объект TBackground с границами Bounds вызывая TView.Init. GrowMode устанавливается в gfGrowHiX + gfGrowHiY, а поле Pattern устанавливается в APattern. См. так же: TView.Init, TBackground.Pattern Load constructor Load(var S: TStream); Создает объект TBackground и загружает его из потока S, вызывая TView.Load, а затем читая поле Pattern. См. так же: TView.Load Draw procedure Draw; virtual; Перекрывается: Редко Заполняет прямоугольник видимого элемента текущим шаблоном с цветом по умолчанию. GetPalette function GetPalette: PPalette; virtual; Перекрывается: Редко Возвращает указатель на палитру по умолчанию CBackground. Store procedure Store(var S: TStream); Сохраняет видимый элемент TBackground в потоке, вызывая TView.Store, а затем записывая поле Pattern. См. так же: TView.Store, TBackground.Load Палитра Объекты фона используют по умолчанию палитру CBackground для отображения в первый элемент палитры программы. 1 +===+ CBackground | 1 | +=+=+ Color ----+

TBufStream Objects

+------------+ | TObject | +------+-----+ +------+-----+ | TStream | +------+-----+ +------+-----+ | TDosStream | +------+-----+ +======+=====+ | TBufStream | +============+ TBufStream реализует буферизованную версию TDosStream. Дополнительные поля указывают размер и положение буфера, а так же текущую и последнюю позицию в буфере. Кроме перекрытия восьми методов TDosStream, TBufStream определяет абстрактный метод TStream.Flush. Констрактор TBufStream создает и открывает файл, вызывая TDosStream.Init, затем создает буфер с помощью GetMem. TBufStream значительно эффективнее TDosStream при работе большого числа небольших данных в поток, а так же при сохранении и загрузке объектов с использованием TStream.Get и TStream.Put. Поля Buffer Buffer: Pointer; Только чтение Указатель на начало буфера потока. BufSize BufSize: Word; Только чтение Размер буфера в байтах. BufPtr BufPtr: Word; Только чтение Смещение от указателя Buffer, указывающее на текущую позицию внутри буфера. BufEnd BufEnd: Word; Только чтение Если буфер не заполнен, BufEnd дает смещение от указателя Buffer на последний используемый байт в буфере. Методы Init constructor Init(FileName: FNameStr; Mode, Size: Word); Создает и открывает файл с режимом доступа Mode, вызывая TDosStream.Init. Так же создает буфер размером в SizeBuf, вызывая GetMem. Handle, Buffer и BufSize инициализируются соответственно. Типичный размер буфера от 512 до 2048 байт. См. так же: TDosStream.Init Done destructor Done; virtual; Перекрывается: Никогда Закрывает и освобождает файловый поток; выталкивает и освобождает его буфер. См. так же: TBufStream.Flush Flush procedure Flush; virtual; Перекрывается: Никогда Выталкивает буфер потока, обеспечивая, что поток будет в состоянии stOK. См. так же: TBufStream.Done GetPos function GetPos: LongInt; virtual; Перекрывается: Никогда Возвращает значение текущей позиции потока (не перепутайте с BufPtr - текущей позицией в буфере). См. так же: TBufStream.Seek GetSize function GetSize: LongInt; virtual; Перекрывается: Никогда Выталкивает буфер, а затем возвращает общее число байт в потоке. Read procedure Read(var Buf; Count: Word); virtual; Перекрывается: Никогда Если stOK, читает Count байт в буфер Buf, начиная с текущей позиции потока. Заметим, что Buf - это не буфер потока, а внешний буфер, содержащий данные читаемые из потока. См. так же: TBufStream.Write, stReadError Seek procedure Seek(Pos: LongInt); virtual; Перекрывается: Никогда Выталкивает буфер, а затем устанавливает текущую позицию в Pos байт от начала потока. Начальная позиция потока - 0. См. так же: TBufStream.GetPos, TBufStream.GetSize Truncate procedure Truncate; virtual; Перекрывается: Никогда Выталкивает буфер, затем удаляет все данные потока от текущей позиции до конца потока. Текущая позиция устанавливается в новый конец потока. См. так же: TbufStream.GetPos, TBufStream.Seek Write procedure Write(var Buf; Count: Word); virtual; Перекрывается: Никогда Если stOK, записывает Count байт из буфера Buf в поток, начиная с текущей позиции. Заметим, что Buf - это не буфер потока, а внешний буфер, содержащий данные, записываемые в поток. Когда Write вызывается, Buf указывает на переменную, чье значяение записывается. См. так же: TBudStream.Read, stWriteError

TButton Dialogs

+-----------+ | TObject | +-----+-----+ +-----+-----+ | TView | +-----+-----+ +=====+=====+ | TButton | +===========+ Объект TBuuton - это прямоугольник с заголовком и тенью, генерирующий команду при нажатии. Эти кнопки интенсивно используются в IDE. Кнопка может быть выбрана нажатием подсвеченной буквы, переходом на кнопку с помощью Tab и нажатием пробела, нажатием Enter, когда кнопка по умолчанию (указывается подсветкой) или отметкой кнопки мышкой. При цветной и черно-белой палитрах кнопка имеет трехмерный вид, который изменяется при нажатии. На монохромных системах кнопка выделена стрелками и другие ASCII символы используются для указания, является ли кнопка по умолчанию выбранной и т.д. Как и другие элементы управления, определенные в модуле Dialogs, TButton - это терминальный объект. Он может быть вставлен в любую группу и использован без перекрытия его методов. Кнопка инициализируется передачей ей TRect строки заголовка, команды, генерируемой при нажатии кнопки и байта флагов. Чтобы определить для кнопки клавишу короткого набора, строка заголовка может содержать "~" вокруг одного из символов, который становится символом короткого набора. Параметр AFlag указывает, будет заголовок центрироваться или выравниваться по левой границе и должна ли кнопка быть умалчиваемой (и следовательно выбираться через Enter). Вы можете установить в окне или диалоговом окне только одну кнопку по умолчанию в любой момент времени. Кнопки, которые равны в группе, получают и отдают умалчиваемое состояние через сообщения evBroadcast. Кнопки могут быть разрешены или запрещены с использованием методов SetState и CommandEnabled. Поля Title Title: PString; Только чтение Указатель на текст кнопки. Command Commаnd: Word; Только чтение Слово команды в событии, генерируемом при нажатии кнопки. См. так же: TButton.Init, TButton.Load Flags Flags: Byte; Чтение/Запись Flags - это поле, используемое для указания, будет ли текст кнопки центрироваться или выравниваться влево. Отдельные флаги описаны в разделе "Константы флага кнопки bfXXXX" главы 14. См. так же: TButton.Draw, константы bfXXXX AmDefault AmDefault: Boolean; Только чтение Если True, кнопка - по умолчанию (и следовательно выбирается при нажатии Enter). Иначе - это "нормальная" кнопка. См. так же: Константы флага кнопки bfXXXX Методы Init constructor Init(var Bounds: TRect; ATitle: TTitleStr; ACommand: Word; AFlags: Byte); Создает объект TButton с заданным размером, вызывая TView. Init. Вызывается NewStr(ATitle) и назначается в Title. AFlags используется в двух целях: если AFlags and bfDefault - не 0, то AmDefault устанавливается в True; кроме того, AFlags указывает, будет заголовок центрироваться или выравниваться влево проверкой если AFlags and bfLeftJust не 0. Options устанавливается в (ofSelectable + ofFirstClick + ofPreProcess + ofPostProcess). EventMask устанавливается в evBroadсast. Если данная ACommand не разрешена, в поле State устанавливается sfDisabled. См. так же: TView.Init, константы флага кнопки bfXXXX Load constructor Load(var S: TStream); Создает объект TButton и инициализирует его из заданного потока, вызывая TView.Load(S). Другие поля устанавливаются через вызовы S.Read, а State устанавливается в соответствии с тем, разрешена ли команда в поле Command. Используется совместно с TButton.Store для сохранения и получения объекта в TButton из TStream. См. так же: TView.Load, TButton.Store Done destructor Done; virtual; Перекрывается: Никогда Освобождает память, распределенную под Title, затем вызывает TView.Done для разрушения видимого элемента. См. так же: TView.Done Draw procedure Draw; virtual; Перекрывается: Редко Рисует кнопку соответствующей палитрой для ее текущего состояния (нормальная по умолчанию запрещена) и позиционирует метку в соответствии с битом bfLeftJust поля Flags. GetPalette function GetPalette: PPalette; virtual; Перекрывается: Иногда Возвращает указатель на палитру по умолчанию CButton. HandleEvent procedure HandleEvent(var Event: TEvent); virtual; Перекрывается: Иногда Отвечает на нажатие одним из трех способов: отметкой кнопки мышкой, нажатием короткой клавиши или становится кнопкой по умолчанию, когда получено общее сообщение cmDefault. Когда кнопка нажата, генерируется командное событие с TView.PutEvent, с полем TButton.Command: установленным в Event.Command, а Event.InfoPtr установленным в @Self. Кнопки так же распознают общие команды cmGrabDefault и cmReleaseDefault, чтобы стать или "не стать" кнопкой по умолчанию и cmCommandSetChanged, которая заставляет их проверять, разрешены команды или запрещены. См. так же: TView.HandleEvent MakeDefault procedure MakeDefault(Evable: Boolean); Этот метод ничего не делает, если кнопка уже умалчиваемая. Иначе говорит Owner в кнопке измениться в состояние по умолчанию. Если Enable True, выдается общая команда cmGrebDefault, иначе cmReleaseDefault. Кнопка перерисовывается, чтобы показать новый статус. См. так же: TButton.AmDefault, bfDefault SetState procedure SetState(AState: Word; Enable: Boolean); virtual; Перекрывается: Редко Вызывает TView.SetState, затем рисует кнопку, если кнопка стала sfSelected или sfActive. Если она стала активной (т. е. если AState - sfFocused) кнопка забирает или отдает состояние по умолчанию кнопке по умолчанию, вызывая MakeDefault. См. так же: TCView.SetState, TButton.MakeDefault Store procedure Store(var S: TStream); Сохраняет объект TButton в потоке, вызывая TView.Store(S), а затем S.Write для сохранения значений Title и Command. Используется совместно с TButton.Load для сохранения и получения объектов TButton из потока. См. так же: TView.Store, TButton.Load, TStream.Write Палитра Объект кнопка использует палитру по умолчанию CButton для отображения элементов от 10 до 15 в палитру CDialog. 1 2 3 4 5 6 7 8 +====+====+====+====+====+====+====+====+ CButton | 10 | 11 | 12 | 13 | 14 | 14 | 14 | 15 | +==+=+==+=+==+=+==+=+==+=+==+=+==+=+=+==+ Нормальный --+ | | | | | | + Тень текст | | | | | | Текст по ------+ | | | | +---- Выбранная умолчанию | | | | короткая клавиша Выбранный ----------+ | | +--------- Короткая клавиша текст | | по умолчанию Запрещенный ---------------+ +-------------- Выбранная текст нормальная клавиша

TCheckBoxes Dialogs

+------------+ | TObject | +------+-----+ +------+-----+ | TView | +------+-----+ +------+-----+ | TCluster | +----+---+---+ +--------+ +-------+ +-------+-------+ +======+======+ | TRadioButtons | | TCheckBoxes | +---------------+ +=============+ TCheckBoxes - это кластер, содержащий от 1 до 16 элементв управления. В отличие от зависимых кнопок, любое число независимых кнопок может быть установлено независимо. Поэтому в этой группе нет кнопки по умолчанию. Кнопки можно отмечать мышкой, движением курсора и коротким нажатием Alt-буква. Каждая кнопка может быть подсвечена и включена/выключена (пробелом). Если кнопка выбрана, появляется Х. Другие части Вашей программы обычно проверяют состояние независимых кнопок для определения, какая опция выбрана пользователем (например в IDE опции компилятора и редактора выбираются таким способом). Кластеры независимых кнопок часто связаны с объектами TLabel. Поля Наследуют поля ValueSl от TCluster. Value интерпретируется как набор из 16 бит (от 0 до 15), где 1 в бите позиции означает, что соответствующий элемент отмечен. Методы Заметим, что TCheckBoxes не перекрывает констракторов, дестрактора и обработчика событий TCluster. Порожденные типы объектов могут однако перекрыть их. Draw procedure Draw; virtual; Перекрывается: Редко Рисует объект TCheckBoxes вызывая наследуемый метод TCluster.DrawBox. По умолчанию независимая кнопка имеет вид: " [ ] " когда не выбрана и " [X] " когда выбрана. Заметим, что если границы видимого элемента достаточно велики, независимые кнопки могут отображаться в несколько колонок. См. так же: TCluster.DrawBox Mark function Mark(Item: Integer) : Boolean; virtual; Перекрывается: Редко Возвращает True, если бит элемента в Value установлен, т.е. если данная кнопка отмечена. Вы можете перекрыть это, установив другую интерпретацию поля Value. По умолчанию элементы нумеруются от 0 до 15. См. так же: TCheckBoxes.Press Press procedure Press(Item: Integer); virtual; Перекрывается: Редко Устанавливает бит элемента в Value. Вы можете перекрыть его для другой интерпретации поля Value. По умолчанию элементы нумеруются от 0 до 15. См. так же: TCheckBoxes.Mark Палитра По умолчанию объекты независимых кнопок используют CCluster - палитру по умолчанию для всех объектов-кластеров. 1 2 3 4 +====+====+====+====+ CCluster | 16 | 17 | 18 | 18 | +==+=+==+=+==+=+==+=+ Нормальный ----+ | | +--- Выбранная короткая текст | | клавиша Выбранный -------+ +-------- Нормальная короткая текст клавиша

TCluster Dialogs

+------------+ | TObject | +------+-----+ +------+-----+ | TView | +------+-----+ +======+=====+ | TCluster | +====+===+===+ +--------+ +-------+ +-------+-------+ +------+------+ | TRadioButtons | | TCheckBoxes | +---------------+ +-------------+ Кластер - это группа элементов управления, которые откликаются одинаково. TCluster - это абстрактный тип объекта, из которого порождаются группы элементов управления TRadioButtons и TCheckBoxes. Элементы управления кластера часто ассоциируются с объектами TLabel, позволяя Вам выбирать элемент управления, выбирая дополнительную метку с объяснением. В то время, как кнопки используются для генерации команд, а строки ввода - для редактирования строк, кластеры используются для переключения битовых значений поля Value (типа Word). Стандартные наследники TCluster используют различные алгоритмы изменения Value: TCheckBoxes просто переключает бит, а TRadioButtons включает один бит и очищает предварительно выбранный бит. Оба объекта наследуют почти все свое поведение от TCluster. Поля Value Value: Word; Только чтение Текущие значения элемента управления. Действительнвый смысл этого поля определяется методами, разработанными в типах объектов, порожденных от TCluster. Sel Sel: Integer; Только чтение Текущий выбранный элемент кластера. Strings Strings: TStringCollection; Только чтение Список элементов кластера. Методы Init constructor Init(var Bounds: TRect; AStrings: PSItem); Очищает поля Value и Sel. Параметр AStrings обычно выполняет серию вложенных вызовов глобальной функции NewSItem. Таким образом весь кластер зависимых или независимых кнопок может быть создан одним вызовом констрактора: var Control: PView; . R.Assign(30, 5, 52, 7); Control := New(PRadioButtons, Init(R, NewSItem('~F~orward', NewSItem('~B~ackward', nil)))); . Когда в кластер добавляются дополнительные зависимые или независимые кнопки, просто копируется первый вызов NewSItem и заголовок заменяется требуемым текстом. Затем добавляется дополнительная закрывающая скобка для каждой новой добавленной строки и оператор будет компилироваться без синтаксических ошибок. См. так же: тип TSItem Load constructor Load(var S: TStream); Создает объект TCluster, вызывая TView.Load(S), затем устанавливает поля Value и Set вызовом S.Read. Наконец поле String кластера загружается из S с помощью Strings.Load(S). Используется совместно с TCluster.Store для сохранения и получения объектов TCluster из потока. См. так же: TCluster.Store, TView.Load Done destructor Done; virtual; Перекрывается: Иногда Освобождает память, распределенную под строку кластера, затем разрушает видимый элемент, вызывая TView.Done. См. так же: TView.Done DataSize function DataSize: Word; virtual; Перекрывается: Редко Возвращает размер Value. Должен перекрываться в порожденных типах объектов, которые изменяют Value или добавляют другие поля данных для того, чтобы работать с GetData и SetData. См. так же: TCluster.GetData, TCluster.SetData DrawBox procedure DrawBox(Icon: String; Maker: Char); Вызывается методом Draw порожденного типа, чтобы рисовать прямоугольник перед строкой для каждого элемента кластера. Icon - это строка из 5 символов (' [ ] ' для независимых и ' ( ) ' для зависимых кнопок). Maker - это символ, используемый для указания, что кнопка отмечена ('X' для зависимых и '.' для независимых кнопок). См. так же: TCheckBoxes.Draw, TRadioButtons.Draw GetData procedure GetData(var Rec); virtual; Перекрывается: Редко Записывает поле Value в данную запись и рисует кластер. Должен перекрываться в порожденных типах объектов, которые изменяют поле Value для того, чтобы работать с DataSize и SetData. См. так же: TCluster.DataSize, TCluster.SetData, TView.DrawView GetHelpCtx function GetHelpCtx: Word; virtual; Перекрывается:Редко Возвращает значение Sel добавленное к HelpCtx. Это позволяет Вам задать отдельную констекстную справку для каждого элемента кластера. Допустимый диапазон контекстов равен HelpCtx плюс число элементов кластера минус 1. GetPalette function GetPalette: PPalette; virtual; Перекрывается: Иногда Возвращает указатель на палитру по умолчанию CCLuster. HandleEvent procedure HandleEvent(var Event: TEvent); virtual; Перекрывается: Редко Вызывает TView.HandleEvent, который обрабатывает все события от мышки и клавиатуры, относящиеся к этому кластеру. Элементы управления выбираются отметкой мышки или клавишами движения курсора (включая Пробел). Кластер перерисовывается, чтобы показать выбранные элементы. См. так же: TView.HandleEvent Mark function Mark(Item: Integer): Boolean; virtual; Перекрывается: Всегда Вызывается из Draw для определения, какие элементы отмечены. По умолчанию TCluster.Mark возвращает False. Mark должен перекрываться, возвращая True, если элемент управления в кластере отмечен, иначе False. MovedTo procedure MovedTo(Item: Integer); virtual; Перекрывается: Редко Вызывается из HandleEvent для перемещения полосы выбора на заданный элемент управления в кластере. Press procedure Press(Item: Integer); virtual; Перекрывается: Всегда Вызывается из HandleEvent когда элемент управления в кластере нажат либо отметкой мышки, либо событием от клавиатуры. Этот абстрактный метод должен быть перекрыт. SetData procedure SetData(var Rec); virtual; Перекрывается: Редко Читает поле Value из данной записи и перерисовывает кластер. Должен перекрываться в порожденных типах кластеров, которые требуют другие поля для работы с DataSize и GetData. См. так же: TCluster.DataSize, YCluster.GetData, TView.DrawView SetState procedure SetState(AState: Word; Enable: Boolean); virtual; Перекрывается: Редко Вызывает TView.SetState, затем рисует кластер, если AState - sfSelected. См. так же: TView.SetState, TView.DrawView Store procedure Store(var S: TStream); Сохраняет объект TCluster в потоке, вызывая TView.Store(S), записывает Value и Sel, затем сохраняет поле Strings кластера, используя его метод Store. Используется совместно с TCluster.Load для сохранения и получения объектов TCluster из потока. См. так же: TCluster.Load, TStream.Write Палитра Объекты TCluster используют CCluster - палитру по умолчанию для всех объектов кластера, чтобы отобразить элементы с 16 по 18 в палитру стандартного диалогового окна: 1 2 3 4 +====+====+====+====+ CCluster | 16 | 17 | 18 | 18 | +==+=+==+=+==+=+==+=+ Нормальный ----+ | | +--- Выбранная короткая текст | | клавиша Выбранный -------+ +-------- Нормальная короткая текст клавиша

TCollection Objects

+---------+ | TObject | +----+----+ +======+======+ | TCollection | +======+======+ +---------+---------+ | TSortedCollection | +---------+---------+ +---------+---------+ | TStringCollection | +---------+---------+ +----------+----------+ | TResourceCollection | +---------------------+ TCollection - это абстрактный тип для реализации любой коллекции элементов, включая другие объекты. TCollection это намного более общая концепция, чем обычные массив, множество или список. Размер объектов TCollection динамически устанавливается во время выполнения и TCollection - базовый тип для многих специализированных типов, таких как TSortedCollection, TStringCollection и TResourceCollection. В дополнение к методам добавления и удаления элементов TCollection представляет несколько итераторных программ, которые вызывают процедуру или функцию для каждого элемента коллекции. Поля Items Items: PItemList; Только чтение Указатель на массив указателей элементов. См. так же: тип TItemList Count Count: Integer; Только чтение Текущее число элементов в коллекции, максимально MaxCollectionSize. См. так же: переменная MaxCollectionSize Limit Limit: Integer; Только чтение Текущий распределенный размер (в элементах) списка Items. См. так же: Delta, TCollection.Init Delta Delta: Integer; Только чтение Число элементов, на которое увеличивается список Items при заполнении. Если Delta - 0, коллекция не может расти выше размера, установленного в Limit. Примечание: Увеличение размера коллекции достаточно дорого в смысле производительности. Чтобы минимизировать число раз когда это происходит, попытайтесь установить начальное Limit в такое количество, которое будет достаточно для всех элементов, которые Вы собираетесь коллекционировать, и установите Delta так, чтобы она позволяла расширение на приемлемое количество. См. так же: Limit, TCollection.Init Методы Init constructor Init(ALimit, ADelta: Integer); Создает коллекцию с Limit, установленным в ALimit и Delta, установленным в ADelta. Первоначальное число элементов будет ограничено ALimit, но коллекция может расширяться, увеличиваясь по ADelta до тех пор, пока будет достаточно памяти или пока число элементов не достигнет MaxCollectionSize. См. так же: TCollection.Limit, TCollection.Delta. Load constructor Load(var S: TStream); Создает и загружает коллекцию из потока. TCollection.Load вызывает GetItem для каждого элемента коллекции. См. так же: TCollection.GetItem Done destructor Done; virtual; Перекрывается: Часто Удаляет и освобождает все элементы коллекции, вызывая TCollection.FreeAll и устанавливая Limit в 0. См. так же: TCollection.FreeAll, TCollection.Init At function At(Index: Integer) : Pointer; Возвращает указатель на элемент с индексом Index в коллекции. Этот метод позволяет Вам интерпретировать коллекцию как индексированный массив. Если индекс меньше 0 или больше или равно Count, вызывается метод Error с аргументом coIndexError и возвращается значение nil. См. так же: TCollection.IndexOf AtDelete procedure AtDelete(Index: Integer); Удаляет элемент в позиции Index и перемещает следующие элементы на одну позицию вверх. Count уменьшается на 1, но память, распределенная под коллекцию (как задано в Limit) не сокращается. Если Index меньше 0 или больше или равно Count, вызывается метод Error с аргументом coIndexError. См. так же: TCollection.FreeItem, TCollection.Free, TCollection.Delete AtInsert procedure AtInsert(Index: Integer; Item: Pointer); Вставляет Item в позицию Index и передвигает следующие элементы на одну позицию вниз. Если Index меньше 0 или больше Count, вызывается метод Error с аргументом coIndexError и новый Item не вставляется. Если Count равен Limit до вызова AtInsert, распределенный размер коллекции расширяется на Delta элементов, вызывая SetLimit. Если вызов SetLimit не может расширить коллекцию, вызывается метод Error с аргументом coOverflow и новый Item не вставляется. См. так же: TCollection.At, TCollection.AtPut AtPut procedure AtPut(Index: Integer; Item: Pointer); Заменяет элемент в позиции Index элементом, заданным в Item. Если Index меньше 0 или больше или равно Count, вызывается метод Error с аргументом coIndexError. См. так же: TCollection.At, TCollection.AtInsert Delete procedure Delete(Item: Pointer); Удаляет элемент Item из коллекции. Эквивалентно AtDelete(IndexOf(Item)). См. так же: TCollection.AtDelete, TCollection.DeleteAll DeleteAll procedure DeleteAll; Удаляет все элементы из коллекции, устанавливая Count в 0. См. так же: TCollection.Delete, TCollection.AtDelete Error procedure Error(Code, Info: Integer); virtual; Перекрывается: Иногда Вызывается, когда встречается ошибка коллекции. По умолчанию этот метод генерирует ошибку времени выполнения 212. См. так же: константы коллекции coXXXX FirstThat function FirstThat(Test: Pointer) : Pointer; FirstThat применяет булевскую функцию, заданную указателем на функцию Test к каждому элементу коллекции до тех пор, пока test возвращает True. Результат - указатель на элемент, для которого Test возвращает True, или nil, если функция Test возвращает False для всех элементов. Test должна указывать на дальнюю локальную функцию, использующую только один параметр типа Pointer и возвращающую значение типа Boolean. Например function Matches(Item: Pointer) : Boolean; far; Функция Test не может быть глобальной функцией. Предполагая, что List типа TCollection, оператор P := List.FirstThat(@Matches); соответствует I := 0; while (I < List.Count) and not Matches(List.At(I)) do Inc(I); if I < List.Count then P := List.At(I) else P := nil; См. так же: TCollection.LastThat, TCollection.ForEach ForEarch procedure ForEarch(Action: Pointer); ForEach применяет действие, определенное процедурой, на которую указывает Action, для каждого элемента коллекции. Action должен указывать на локальную дальнюю процедуру, использующую один параметр типа Pointer. Например function PrintItem(Item: Pointer); Процедура Action не может быть глобальной процедурой. Если List типа TCollection, оператор List.ForEach(@PrintItem); соответствует for I := 0 to List.Count - 1 do PrintItem(List.At(I)); См. так же: TCollection.FirstThat, TCollection.LastThat Free procedure Free(Item: Pointer); Удаляет и освобождает Item. Эквивалентно FreeItem(Item); Delete(Item); См. так же: TCollection.FreeItem, TCollection.Delete FreeAll procedure FreeAll; Удаляет и освобождает все элементы коллекции. См. так же: TCollection.DeleteAll FreeItem procedure FreeItem(Item: Pointer); virtual; Перекрывается: Иногда Метод FreeItem должен освобождать Item. По умолчанию TCollection.FreeItem предполагает, что Item - это указатель на объект, порожденный от TObject и поэтому вызывает дестрактор Done: if Item <> nil then dispopse(PObject(Item), Done); FreeItem вызывается из Free и FreeAll, но никогда не должен вызываться прямо. См. так же: TCollection.Free, TCollection.FreeAll GetItem function TCollection.GetItem(var S: TStream): Pointer; virtual; Перекрывается: Иногда Вызывается из TCollection.Load для каждого элемента коллекции. Этот метод может быть перекрыт, но не должен вызываться напрямую. По умолчанию TCollection.GetItem предполагает, что элементы коллекции порождены от TObject и вызывает TString.Get для загрузки элемента: GetItem := S.Get; См. так же: TStream.Get, TCollection.Load, TCollection.Store IndexOf functionIndexOf(Item: Pointer): Integer; virtual; Перекрывается: Никогда Возвращает индекс для Item. Преобразует операцию в TCollection.At. Если Item - не в коллекции, IndexOf возвращает -1. См. так же: TCollection.At Insert procedure Insert(Item: Pointer); virtual; Перекрывается: Никогда Вставляет Item в коллекцию, перестраивая другие индексы, если необходимо. По умолчанию вставка производится в конец коллекции вызовом AtInsert(Count, Item); См. так же: TCollection.AtInsert; LastThat function LastThat(Test: Pointer): Pointer; LastThat применяет булевскую функцию, заданную указателем на функцию Test, к каждому элементу коллекции в обратном порядке до тех пор, пока Test не вернет True. Результат - указатель на элемент, для которого Test возвращает True, или nil, если функция Test возвращает False для всех элементов. Test должен указывать на дальнюю локальную функцию, использующую один параметр типа Pointer и возвращающую типа Boolean, например function Patches(Item: Pointer): Boolean; far; Функция Test не может быть глобальной функцией. Если List типа TCollection, оператор P := List.LastThat(@Matches); соответствует I := List.Count - 1; while (I >= 0) and Matches(List.At(I)) do Dec(I); if I >= 0 then P := List.At(I) else P := nil; См. так же: TCollection.FirstThat, TCollection.ForEach; Pack Procedure Pack; Удаляет все nil указатели в коллекции. См. так же: TCollection.Delete, TCollection.DeleteAll PutItem procedure PutItem(var S: TStream; Item: Pointer); virtual; Перекрывается: Иногда Вызывается из TCollection.Store для каждого элемента коллекции. Этот метод может быть перекрыт, но не должен вызываться прямо. По умолчанию TCollection.PutItem предполагает, что элементы коллекций порождаются от TObject и вызов TString.Put сохраняет элемент: S.Put(Item); См. так же: TCollection.GetItem, TCollection.Store, TCollection.Load SetLimit procedure SetLimit(ALimit: Integer); virtual; Перекрывается: Редко Расширяет или сокращает коллекцию, изменяя распределенный размер в ALimit. Если ALimit меньше Count, он устанавливается в Count, и если ALimit больше MaxCollectionSize, он устанавливается в MaxCollectionSize. Кроме того, если ALimit отличается от текущего Limit, распределяется новый массив Items из Alimit элементов, старый массив Items копируется в новый массив и старый массив освобождается. См.так же: TCollection.Limit, TCollection.Count, переменная MaxCollectionSize Store procedure Store(var S: TStream); Сохраняет коллекцию и все ее элементы в потоке S. TCollection.Store вызывает TCollection.PutItem для каждого элемента коллекции. См. так же: TCollection.PutItem
                              Назад | Содержание | Вперед

 

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

VPS в 21 локации

От 104 рублей в месяц

Безлимитный трафик. Защита от ДДоС.

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList liveinternet.ru: показано число просмотров за 24 часа, посетителей за 24 часа и за сегодня This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...