Иллюстрированный самоучитель по Kylix

         

и поля, определяют атрибуты объекта.



Свойства

Свойства так же, как и поля, определяют атрибуты объекта. Но в отличие от полей свойства реализуют механизм доступа для чтения или изменения данных в полях объекта.

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

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

property Имя свойства: тип описания;

имя свойства должно быть уникальным;
тип — определяет, значения какого типа могут быть записаны в данном свойстве;
описания — объявления способов доступа к данному свойству.
Каждое свойство объекта должно иметь, как минимум, одно обязательное объявление способа доступа к свойству. Имеется два обязательных описания доступа к свойству объекта: чтение (read) значения свойства и запись (write) значения свойства.

Синтаксис обязательных описаний read и write имеет следующий вид:



read поле илиметод
write поле или метод

где поле или метод — поле, из которого берется или в которое помещается значение свойства, или метод, который берет или помещает значение свойства компонента.

Несложно догадаться, что объявление read (читать) описывает поле или метод, предназначенные для чтения значения свойства, а объявление write (писать) описывает поле или метод, предназначенные для записи значения свойства компонента.

В листинге 5.1 приведен пример описания свойств объекта.



Свойства сгруппированные по категориям



Рисунок 6.6. Свойства, сгруппированные по категориям



Свойства события и методы компонентов



Свойства, события и методы компонентов

CLX представляет собой иерархию классов Kylix, написанных на языке Object Pascal. Все классы библиотеки имеют свои свойства, события и методы. Мы их подробно рассмотрим в следующей главе. Пока же дадим здесь общее описание.

Свойства компонентов позволяют управлять их внешним видом и поведением. Установка значений большинства свойств выполняется на этапе разработки приложения с помощью инспектора объектов (см. Рисунок 6.5). Значение практически всех свойств компонентов библиотеки CLX можно изменять в процессе выполнения программы.

Компоненты CLX могут генерировать и обрабатывать несколько десятков самых разнообразных событий. События всегда принадлежат определенному типу. Большинство событий имеет тип "уведомляющее" (то есть принадлежит типу TNotifyEvent). Данный тип описывается следующим образом:

type TNotifyEvent = procedure (Sender: TObject) of object;

Таким образом, события уведомляющего типа указывают на источник события. Источник события записывается в параметре Sender.

Напомним, что все события в Kylix делятся на:

пользовательские, или оконные (widget); системные (system),.

Пользовательские (оконные) события — это события, которые происходят в результате каких-либо действий пользователя (движение мышью, нажатие кнопки и т. д.).

Системные события — это события, которые происходят внутри системы независимо от действий пользователя (тикание таймера и т. д.).

Компоненты библиотеки CLX так же, как и другие объекты, могут иметь (и имеют) методы. Методы позволяют получать доступ к свойствам компонентов, скрывать и отображать компоненты, а также выполнять другие операции (в том числе создание и уничтожение компонентов).

Назад
Содержание
Вперед


Свойства события и методы основных компонентов Kylix



Свойства, события и методы основных компонентов Kylix

Давайте рассмотрим свойства, события и методы основных компонентов Kylix. Это необходимо для использования всех возможностей, предоставляемых средой Kylix. Более того, когда вы будете создавать собственные компоненты, знание основных компонентов очень вам пригодится (можно создавать компоненты на основе уже имеющихся в Kylix).

Типы свойств

Следует отметить, что к свойствам применимы те же правила, которые используются для описания типов в Object Pascal. Типы свойств компонента нужны в первую очередь для отображения и редактирования его в окне инспектора объектов. Перечислим основные типы свойств компонентов Kylix (табл. 8.12).



Свойствомножество MyOptions в новом компоненте TMyButton



Рисунок 19.4. Свойство-множество MyOptions в новом компоненте TMyButton

Создание свойства-объекта в компоненте

Каждый компонент может содержать в себе свойство-объект. В качестве свойства-объекта может выступать любой компонент или объект Kylix. Кроме того, свойствами-объектами нового компонента могут быть новые компоненты или объекты, которые вы создали самостоятельно. Важным условием является тот факт, что свойства-объекты должны быть потомками класса TPersistent. Это необходимо для того, чтобы свойства объекта-свойства отображались в окне инспектора объектов. Приведем пример создания свойства-объекта в нашем компоненте TMyButton.

Для начала создадим произвольный новый объект, являющийся прямым потомком класса TPersistent (листинг 19.5).



Свойствообъект MyObject в новом компоненте TMyButton



Рисунок 19.5. Свойство-объект MyObject в новом компоненте TMyButton

Обратите внимание на реализацию метода TMyObject. Assign. Здесь сначала выполняется проверка на то, правильный ли передается экземпляр объекта TMyObject. Если он правильный, то значения свойств (Source) переносятся в поля FProperty1 и FProperty2 объекта TMyButton. Результатом исполнения вышеприведенного кода будет новый компонент TmyButton, содержащий в себе свойство-объект TMyObject. В окне инспектора объектов это будет выглядеть так, как представлено на Рисунок 19.5.

Создание свойства-массива в компоненте

Свойства компонента могут быть практически любого типа, которые поддерживает язык Object Pascal. Некоторые свойства могут быть массивами. Яркими примерами свойств такого типа являются TMemo. Lines и TDBGrib.Columns.. Такие свойства требуют собственных редакторов. Мы пока остановимся на создании простого свойства, которое представляет собой простой массив (о создании собственных редакторов свойств читайте далее в этой главе). Создадим новый компонент TWeek, который будет содержать два свойства: Month и Number. Свойство Month будет представлять собой массив, который будет возвращать название месяца по переданному целому числу от 1 до 12. Свойство Number — тоже массив, который возвращает число, Соответствующее названию месяца.

Итак, в листинге 19.8 приведен код компонента TWeek.



Таблица



Таблица

Позволяет работать с произвольной информацией в таблице

Image

Рисунок

Служит для отображения графического растрового файла, иконки или метафайла

Shape

Геометрическая фигура

Позволяет отображать произвольные геометрические фигуры. Например, эллипс, треугольник, прямоугольник и др.

Bevel

Фаска

Позволяет украсить ваше приложение путем размещения "трехмерных" линий или прямоугольников

ScrollBox

Область прокрутки

Создает контейнер, который в случае необходимости автоматически, без вмешательства программиста, добавляет полосы прокрутки

CheckListBox

Список переключателей

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

Splitter

Разделитель

/

Размещается между двумя выровненными компонентами-контейнерами и позволяет пользователю во время работы приложения изменять размеры этих компонентов с помощью перемещения разделителя

StaticText

Статический текст

Компонент похож на метку, но имеет некоторые дополнительные возможности, о которых мы поговорим в дальнейшем

ControlBar

Панель инструментов

Позволяет быстро создавать панели инструментов

LCDNumber

LCD-номер

Текстовое окно, в которое можно вводить текст или цифры. Все введенные значения будут отображаться на LCD-дисплее

Timer

Таймер

Невизуальный компонент, генерирующий событие OnTimer циклически через определенный промежуток времени

PaintBox

Окно для рисования

Размещает на форме область, в которой можно рисовать, используя графические средства KylixТретья вкладка палитры компонентов Kylix называется Common Controls (Рисунок 8.3).



Целочисленные типы данных



Таблица 2.1. Целочисленные типы данных

Тип данных

Диапазон значений

Формат чисел в памяти

Integer

-2 147 483 648-2 147 483 647

32 бита со знаком

Cardinal

0-4 294 967 295

32 бита без знака

Shortint

-128-127

8 битов со знаком

Smallint

-32 768-32 767

16 битов со знаком

Longint

-2 147 483 648-2 147 483 647

32 бита со знаком

Int64

-2^63-2^63-1

64 бита со знаком

Byte

0-255

8 битов без знака

Word

0-65 535

16 битов без знака

Longword

0-4 294 967 295

32 бита без знака

Для записи целых чисел можно использовать знаки "+" и "—". Если знак числа отсутствует, число считается положительным.

Вещественные типы данных

Наиболее используемым вещественным типом является тип Real. Переменные этого типа могут содержать любые непорядковые числовые значения со знаком. Различия вещественных типов данных заключаются в основном в отличии числа знаков после запятой (точности). Табл. 2.2 содержит перечень вещественных типов данных языка Object Pascal.



Вещественные типы данных



Таблица 2.2. Вещественные типы данных

Тип данных

Диапазон значений

Точность (знаков)

Количество байт

Real48

2,9x10^- 39-1,7х10^38

11-12

6

Single

1,5х10^- 45-3,4х10^38

7-8

4

Double

5,0x10^- 324-1,7х10^308

15-16

8

Extended

3,6х10^- 4951-1,1х10^4932

19-20

10

Comp

-2^63+1- 2^63-1

19-20

8

Currency

-922 337 203 685 477,5808 - 922 337 203 685 477,5807

19-20

8

Real

5,0x10^- 324 -1,7х10^308

15-16

8

Примечание

Шестибайтовый тип Real 48 применялся в ранних версиях языка Object Pascal как Real. Если вы перекомпилируете код, который использовал ранний шестибайтовый тип Real, вы можете для удобства изменить его на Real 48. Кроме того, вы можете применить директиву компилятора {$REALCOMPATIBILITY ON} для автоматического перевода типа Real в шестибайтовый.

О вышеперечисленных типах можно еще сказать следующее:

тип Real 48 добавлен в язык для обратной совместимости со старыми версиями программ. Так как такой формат данных не является "родным" для процессоров семейства Intel, использование типа Real 48 замедляет скорость выполнения программы;
тип Extended предлагает большую точность, чем другие вещественные типы, но является наименее компактным. Будьте осторожны при использовании данного типа, если вы хотите создавать программы сразу для нескольких платформ;
тип Comp является "родным" для семейства процессоров Intel и представляет собой 64-разрядное целое число. Данный тип не относится к целым типам, т. к. не является порядковым и при присваивании переменной данного типа вещественного числа происходит его округление до ближайшего целого. Кроме того, данный тип не поддерживает некоторые операции, допустимые над целыми порядковыми числами (Inc(x), Dec(x) и др.). Этот тип используется лишь для обратной совместимости. Для лучшего быстродействия воспользуйтесь типом Int64;
тип Currency является типом с фиксированной запятой, которая применяется для уменьшения ошибок при вычислениях, связанных с денежными суммами. Данный тип представляет собой 64-разрядное целое число с четырьмя знаками после запятой.

Над вещественными числами допускается осуществлять следующие операции:

Round (х) — округление числа х;
Trunc (х) — отбрасывание дробной части числа х.

Логические типы данных

Для хранения логических значений Object Pascal использует тип данных Boolean. Переменная логического типа занимает один байт памяти и может принимать два значения: 1 или 0. Значение 1 соответствует значению True (истина). Значение 0 соответствует значению False (ложь). Из-за того, что данный тип не совместим с подобными логическими типами, применяемыми в других языках программирования, Object Pascal имеет три дополнительных логических типа:

ByteBool — порядковое численное значение от 0 до 255, где 0 соответствует значению False, а все остальные числа — значению True. Данный тип занимает 1 байт памяти;
WordBool — порядковое числовое значение от 0 до 65 535, где 0 соответствует значению False, а все остальные числа — значению True. Данный тип занимает 2 байта памяти;
LongBool — порядковое числовое значение от 0 до 4 294 967 295, где 0 соответствует значению False, а все остальные числа — значению True. Данный тип занимает 4 байта памяти.

Операции над этими типами могут привести к разным значениям. В табл. 2.3 вы найдете отличия в результатах операций над различными логическими типами.



Основным символьным типом является Сhar.



Таблица 2.3 (окончание)

Тип данных Boolean

Типы данных ByteBool, WordBool, LongBool

Ord(True) = 1

Ord(True) <> 0

Succ (False) = True

Succ (False) = True

Pred(True) = False

Pred (False) = True

Символьные типы данных

Основным символьным типом является Сhar. Данный тип используется для хранения символа из таблицы ASCII. Каждый символ в данной таблице представлен числовым значением от 0 до 255, поэтому переменная такого типа занимает в памяти всего 1 байт.

Кроме типа Char, язык Object Pascal имеет еще два символьных типа:

AnsiChar является полным аналогом типа Сhar. Занимает 1 байт памяти;
WideChar — тип, который используется для хранения символов в кодировке Unicode. Данная кодировка ограничена не 256-ю а 65 535-ю символами. Занимает 2 байта памяти.
Над символьными типами данных допустимы следующие операции:

Chr (x) — возвращает символ с кодом, который соответствует целочисленному значению х;
UрСаsе(с) — возвращает символ с, преобразованный в верхний регистр (то есть преобразует прописные буквы в заглавные).
Назад
Содержание
Вперед


Отличия результатов операций над логическими типами



Таблица 2.3. Отличия результатов операций над логическими типами

Тип данных Boolean

Типы данных ByteBool, WordBool,LongBool

False < True

False <> True

Ord(False) =0

Ord (False) = 0



Строковые типы данных



Таблица 2.4. Строковые типы данных

Тип данных

Максимальная длина

Занимаемая память

Используется для:

ShortString

255 символов

2—256 байт

совместимости с предыдущими версиями языка

AnsiString

2^31 символов

4 байт— 2 Гбайт

символов ANSI, строк переменной длины

WideString

2^30 символов

4 байт— 2 Гбайт

символов Unicode, COM-серверов и интерфейсов

Кроме того, наиболее часто применяется тип данных String. Свойства данного типа зависят от директивы компилятора {$H}: если она включена {$H+}, то данный тип эквивалентен типу AnsiString. Если же она выключена {$H-}, то тип String будет равносилен типу ShortString. По умолчанию данная директива выключена.

Строки, по своему определению, являются массивами символов. Поэтому для обращения к любому символу строки достаточно указать название строковой переменной и номер символа (как при обращении к элементу массива):

var
A: Char;
MyString: String;
begin
A:=MyString[10];
end;

Кроме перечисленных в табл. 2.4 строковых типов данных, имеется еще один тип PChar, который является строкой с нулевым окончанием, т. е. в конце строки стоит код 0. Длина строки типа PChar может быть любой, но, естественно, не более чем объем памяти компьютера.

Множества

Множество — это набор данных, относящихся к одному и тому же простому типу. Значения входящих в множество элементов ограничены только своим простым типом. Количество элементов множества не должно превышать 256. Описание множественного типа можно осуществить так:

set of Тип данных;

Рассмотрим способ задания множества целых чисел путем определения промежутка чисел:
type

TSomeInts = 1..250;
TIntSet = set of TSomeInts;

В данном примере мы создаем тип множества TIntSet, который содержит набор целых чисел от 1 до 250. Перед этим мы создали свой тип TSomeInts, который является частью типа integer. Мы можем создать это же множество другим способом:

type TIntSet = set of 1..250;

В общем случае, элементы множества задаются с помощью простого их перечисления в квадратных скобках через запятую. Например, если ранее была записана представленная выше строка определения типа TIntSet, можно задать множества Set1 и Set2:

var Set1, Set2: TIntSet ;
. . .
Set1 := [1, 3, 5, 7, 9]; Set2 := [2, 4, 6, 8, 10]

Кроме того, вы можете задавать множества непосредственно в объявлении переменных с помощью конструкции set of:

var MySet: set of ' a ' . . ' z ' ;
...
MySet := [ ' a ' , ' b ' , ' c ' ] ;

В табл. 2.5 приведен список операций, которые допустимы над множествами.



если множества не являются эквивалентными,



Таблица 2.5 (окончание)

Обозначение

Название

Тип результата

Результат

Пример

=

Эквивалентность

Логический

Истина, если множества эквивалентны, иначе — ложь

Set1 = Set2

о

Неравенство

Логический

Истина, если множества не являются эквивалентными, иначе — ложь

Set1 <> Set2

<=

Подмножество

Логический

Истина, если первое множество входит во второе,

Set1 <= Set2

>=

Расширенный набор

Логический

ложь — в противном случае

Истина, если первое множество включает в себя второе, иначе — ложь

Set1 >= Set2

In

Членство

Логический

Истина, если данный элемент входит в множество, иначе — ложь

A in Set1

Массивы

Массив — это упорядоченная совокупность элементов одного и того же типа. Элементы массива имеют уникальные индексы. Массив обязательно имеет имя.

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

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

Статический массив — это массив, размеры которого задаются при объявлении, т. е. это массив с четкими границами индексов.

Статический массив определяется следующей конструкцией языка Object Pascal:

array[indexTypel , . . . , indexTypen] of baseType;

Каждый indexType внутри квадратных скобок является порядковым типом, диапазон которого не превышает 2 Гбайт. Диапазон каждого indexType ограничивает число элементов, входящих в массив.

Примечание

Хотя, по определению, индексом массива может быть любой порядковый тип, на практике обычно применяется тип Integer.

Для обращения к любому элементу массива нужно указать сначала имя этого массива, а затем — в квадратных скобках номер (индекс) элемента:

МуАггау[10];

Динамический массив — это массив, в котором при объявлении указывается только тип его элементов. Размеры динамических массивов изменяются в ходе выполнения программы.

Динамический массив задается с помощью нижеприведенной конструкции:

array of baseType;

Язык Object Pascal поддерживает многомерные массивы. Самым простым является одномерный массив. Его можно представить как пронумерованную строку переменных (Рисунок 2.1). Приведем пример создания простого одномерного массива.

Операции допустимые над множествами



Таблица 2.5. Операции, допустимые над множествами

Обозначение

Название

Тип результата

Результат

Пример

+

Объединение множеств

Множество

Неповторяющиеся элементы первого и второго множества

Set1 + Set2

-

Разность множеств

Множество

Элементы из первого множества, которые отсутствуют во втором

Set1 - Set2

*

Пересечение множеств

Множество

Элементы, которые есть как в первом, так и во втором множестве

Set1 * Set2



Арифметические операции над двумя операндами



Таблица 3.1. Арифметические операции над двумя операндами

Знак операции

Операция

Типы операндов

Тип результата

Пример

+

Сложение

Integer, real

Integer, real

X+Y

-

Вычитание

Integer, real

Integer, real

X-Y

*

Умножение

Integer, real

Integer, real

X*Y

/

Деление

Integer, real

Real

X/10

div

Целочисленное деление

Integer

Integer

X div Y

mod

Целочисленный остаток от деления

Integer

Integer

X mod Y

Стоит сказать несколько слов по поводу операций div и mod. Результатом целочисленного деления X div Y будет результат деления X/Y, округленный в сторону нуля до ближайшего целого числа.

Результатом операции mod будет остаток от целочисленного деления операндов. Таким образом, выражение X mod Y эквивалентно выражению X - (X div Y) *Y. Например, результатом выражения 4 div 2 будет 0, а результатом выражения 9 div 4 будет 1.

В табл. 3.2 приведены операции, осуществляемые над одним операндом.



Арифметические операции над одним операндом



Таблица 3.2. Арифметические операции над одним операндом

Знак операции

Операция

Тип операнда

Тип результата

Пример

+

Сохранение знака числа

Integer, real

Integer, real

+7

-

Отрицание знака числа

Integer, real

Integer, real

-X

Приведем примеры использования арифметических операций с одним и двумя операндами (листинг 3.1).



Поразрядные арифметические операции



Таблица 3.3. Поразрядные арифметические операции

Знак операции

Операция

Типы операндов

Тип результата

Пример

not

Поразрядное отрицание

Integer

Integer

not X

and

Поразрядное умножение

Integer

Integer

X and Y

or

Поразрядное сложение

Integer

Integer

X or Y

xor

Поразрядное исключающее ИЛИ

Integer

Integer

X xor Y

shl

Поразрядный сдвиг числа влево

Integer

Integer

X shl 2

shr

Поразрядный сдвиг числа вправо

Integer

Integer

X shr 1

В табл. 3.4 показаны результаты выполнения поразрядных арифметических операций.



Приведем примеры использования побитовых арифметических



Таблица 3.4 (окончание)

Знак операцииОперация Бит1Бит 2Результирующий бит
100
111
orПоразрядное сложение000
011
101
111
хоr Поразрядное исключающее ИЛИ000
011
101
110
Приведем примеры использования побитовых арифметических операций (листинг 3.2).

Результаты выполнения поразрядных арифметических операций



Таблица 3.4. Результаты выполнения поразрядных арифметических операций

Знак операции

Операция

Бит1

Бит 2

Результирующий бит

not

Поразрядное отрицание

0

1

1

0

and

Поразрядное умножение

0

0

0

0

1

0



Логические операции языка Object Pascal



Таблица 3.5. Логические операции языка Object Pascal

Знак операции

Операция

Типы операндов

Тип результата

Пример

not

Отрицание

Boolean

Boolean

not (С in MySet)



Как видно из примеров табл.



Таблица 3.5 (окончание)

Знак операции
Операция
Типы операндов
Тип результата
Пример
and
Конъюнкция (логическое И)
Boolean
Boolean
A and В
or
Дизъюнкция (логическое ИЛИ)
Boolean
Boolean
A or В
xor
Исключающая дизъюнкция (исключающее ИЛИ)
Boolean
Boolean
A xor В
Как видно из примеров табл. 3.5, логические операции and, or и xor являются операциями над двумя операндами, а операции not — над одним операндом. В следующей таблице (табл. 3.6) приведены результаты выполнения логических операций.



Результаты выполнения логических операций



Таблица 3.6. Результаты выполнения логических операций

Знак операции

Операция

Операнд 1

Операнд 2

Результат

not

Отрицание

False

True

True

False

and

Конъюнкция (логическое И)

False

False

False

False

True

False

True

False

False

True

True

True

or

Дизъюнкция (логическое ИЛИ)

False

False

False

False

True

True

True

False

True

True

True

True

xor

Исключающая дизъюнкция (исключающее ИЛИ)

False

False

False

False

True

True

True

False

True

True

True

False

Для установки отношений между двумя значениями вы можете использовать операции отношения или сравнения. В языке Object Pascal имеется шесть операций отношения:

= — равенство;
< — меньше;
> — больше;
<= — меньше или равно;
>= — больше или равно;
<> — не равно.

Если операция отношения истинна, то результатом ее выполнения является значение True, например истинным является выражение 4 < 10; в противном случае — результат False, например 12 <> 12.

Рассмотрим теперь такой немаловажный вопрос: в каком порядке выполняются те или иные операции? Если в сложном выражении записаны несколько операций подряд, то последовательность их выполнения определяется старшинством. Для того чтобы был четкий порядок выполнения операции, в языке Object Pascal существует такое понятие, как приоритет.

Приоритет определяет старшинство операций и служит для установления порядка выполнения операций. Операции с более высоким уровнем приоритета выполняются раньше остальных.

По приоритету все операции делятся на четыре уровня:

первый (наивысший) уровень приоритета. К нему относятся операции @
и not;
второй уровень приоритета — операции *, /, div, mod, and, shl, shr и as; третий уровень приоритета — операции +, -, or и хоr;
четвертый (самый низкий) уровень приоритета — операции =, <>, <, >, <=, >=, in и is.

Если подряд идут несколько операций с одинаковым приоритетом, то операции выполняются слева направо.

Строковые выражения

Строковые выражения содержат строковые операции и функции. Для строк в Object Pascal определена одна операция — операция объединения строк (конкатенации строк). Знаком операции конкатенации является +. Операндами для этой операции могут быть строки, упакованные строки, а также символы. В то же время, если один из операндов имеет тип WideChar, другой операнд должен быть длинной строкой. Результат операции объединения строк — строка символов. Этот результат совместим со всеми строковыми типами языка. В то же время, если количество символов после операции объединения строк превысит 255, то результатом станут первые 255 символов, а оставшиеся будут просто отброшены.

Для строк определены также следующие функции:

Concat (s1, s2, ..., sn) — возвращает строку, представляющую собой объединение строк s1 ... sn;
Copy(S; Index, Count) — возвращает строковое значение, являющееся подстрокой строки S, начиная с символа под номером Index, и длиной Count;
Length (s) — возвращает целое число, равное количеству символов в строке s;
Pos(Substr; s) — возвращает целое число, определяющее позицию первого символа, начиная с которого подстрока Substr входит в строку s. Если такой подстроки в строке нет, то результатом будет 0;
Trim(s) — возвращает строку, полученную в результате отбрасывания от строки s пробелов и управляющих символов в начале и конце строки;
TrimLeft(s) — возвращает строку, полученную в результате отбрасывания от строки s пробелов и управляющих символов в начале строки;
TrimRight(s) — возвращает строку, полученную в результате отбрасывания от строки s пробелов и управляющих символов в конце строки.

Кроме перечисленных выше функций существует несколько дополнительных функций для преобразования одних типов данных в другие:

DateToStr (Date) — возвращает строку, полученную в результате преобразования значения даты Date в строку;
FioatToStr (value) — возвращает строку, полученную в результате преобразования вещественного числа value в строку;
IntToStr (value) — возвращает строку, полученную в результате преобразования целого числа value в строку;
LowerCase (s) — возвращает строку, полученную в результате преобразования строки s в строку символов нижнего регистра (прописные буквы);
StrToDate(s) — возвращает значение типа "дата", полученное в результате преобразования строки s в значение даты;
StrToDateTime(s) — возвращает значение типа "дата и время", полученное в результате преобразования строки s в значение даты и времени;
StrToFloat (s) — возвращает значение вещественного типа, полученное в результате преобразования строки s в вещественное число;
StrToInt(s) — возвращает целочисленное значение, полученное в результате преобразования строки s в целое число;
StrToTime (s) — возвращает значение типа "время", полученное в результате преобразования строки s в значение времени;
TimeToStr (time) — возвращает строку, полученную в результате преобразования значения времени time в строку;UpperCase (s) — возвращает строку, полученную в результате преобразования строки s в строку символов верхнего регистра (заглавные буквы);

Приведем примеры строковых выражений:

S:='Мама'; // Результат в переменной S - слово МамаS:=s + ' мыла'; // Результат - Мама мылаS:=s + Uppercase(' раму'); // Результат - Мама мыла РАМУ


Методы для работы с RTTI



Таблица 5.1. Методы для работы с RTTI

Название метода

Тип возвращаемого результата

Результат

Classlnfo

Pointer

Указатель на информацию о типе объекта

ClassName

String

Имя класса объекта

ClassParent

Tclass

Тип класса-предка объекта

ClassType

Tclass

Тип объекта

InheritsFrom

Boolean

Является ли объект потомком данного класса

InstanceSize

Word

Размер объекта как экземпляра класса в байтах

Для работы с информацией о типе времени исполнения в Kylix имеется два основных оператора: is и as.

Синтаксис использования оператора is:

Объект is Класс;

Данный оператор применяется для проверки того, принадлежит ли объект к указанному классу. В том случае, если объект принадлежит классу, возвращается значение True, в противном случае возвращается False.

Приведем пример использования оператора is.

if ActiveControl is TEdit then TEdit(ActiveControl).SelectAll;

В этом примере производится проверка, имеет ли активный компонент тип TEdit. И если это так, то в нем выделяется весь имеющийся текст.

Примечание

Для более глубокого понимания компонентов и их свойств обратитесь ко второй части книги.

Синтаксис использования оператора as:

Объект as Класс;

Данный оператор служит для приведения одного типа к другому.

Информация о типе времени выполнения используется в Kylix в основном для определения, с объектом какого типа сейчас работает приложение.

Назад
Содержание


Средство ведения списка задач, подлежащих



Таблица 6.1 (окончание)

Возможность
Desktop Developer
Server Developer
Средство ведения списка задач, подлежащих исполнению (список То Do)
Есть
Есть
Расширенный менеджер проектов
Есть
Есть
Расширенный интегрированный отладчик
Есть
Есть
Средства многопроцессной отладки
Есть
Есть
Набор стандартных компонентов для быстрой разработки приложений
130
165
Поддержка фреймов для создания составных компонентов
Есть
Есть
Интерфейс драйверов баз данных dbExpress
Есть
Есть
Локальное ядро баз данных MyBase
Есть
Есть
Драйверы dbExpress для MySQL и InterBase
Есть
Есть
Драйверы dbExpress для Oracle и Db2
Нет
Есть
Компоненты NetCLX для разработки Интернет-приложений
Нет
Есть
Компоненты связи через sockets
Нет
Есть
Набор компонентов на основе WebBroker
Нет
Есть
Поддержка приложений Apache CGI и DSO
Нет
Есть
Контейнеры типа WebModule
Нет
Есть
Компоненты WebDispatch
Нет
Есть
Мастер создания Web-приложений для сервера Apache
Нет
Есть
Набор компонентов компании Nevrona для разработки Интернет-приложений: Indylnternet protocol component suite
Есть
Есть
Далее мы будем ориентироваться на описание наиболее полной версии Kylix Server Developer.

Если вы знакомы со средой программирования Borland Delphi, то переход к программированию в Kylix будет достаточно легким, т. к. многое в Kylix напоминает Delphi.

Интегрированная среда Kylix является достаточно удобным средством эффективной и быстрой разработки приложений в Linux. Среда Kylix вобрала в себя много хорошего от своего предшественника — Delphi.

Интегрированная среда разработки Kylix состоит из четырех основных окон, которые отображаются при запуске среды:

главного окна (Main Window);
конструктора форм (Form Designer); инспектора объектов (Object Inspector); редактора кода (Code Editor).
Главное окно является основной частью интегрированной среды разработки (Рисунок 6.1). Оно, в свою очередь, состоит из трех частей:

меню
панели инструментов;
палитры компонентов.



Возможности Kylix



Таблица 6.1. Возможности Kylix

Возможность

Desktop Developer

Server Developer

Высокопроизводительный оптимизирующий компилятор в платформенный исполняемый код

Есть

Есть

Возможность создания разделяемых библиотек объектов (Shared Object libraries, .so)

Есть

Есть

Интегрированная среда разработки (Integrated Development Environment, IDE)

Есть

Есть

Возможность сохранения нескольких схем размещения визуальных элементов IDE

Есть

Есть

Встроенное средство Code Explorer

Есть

Есть

Модули данных для хранения невизуальных объектов,

компонентов и других элементов

Есть

Есть



Компоненты вкладки Standard



Таблица 8.1. Компоненты вкладки Standard

Название на английском языке

Название на русском языке

Краткое описание компонента

Frames

Фреймы

Фрейм — это похожий на форму компонент, который используется для размещения внутри него других компонентов. Может размещаться на формах или других фреймах. Для создания нового фрейма нужно выбрать пункт меню File/New Frame (Файл/Новый Фрейм)



Создает так называемый контейнер, который



Таблица 8.1 (окончание)

Название на английском языке
Название на русском языке
Краткое описание компонента
GroupBox
Группа
Создает так называемый контейнер, который может содержать внутри себя компоненты. Эти компоненты объединяются в одну группу. Служит в основном для удобства работы с разными группами компонентов на одной форме
RadioGroup
Группа переключателей
Создает группу переключателей. Эти переключатели не зависят от других групп или одиночных переключателей
Panel
Панель
Используется для создания строк состояния или панелей инструментов. На панели могут размещаться другие компоненты
ActionList
Список действий
Позволяет вашему приложению централизованно реагировать на какие-либо действия пользователя. Например, копирование данных из поля для ввода
Следующая вкладка палитры компонентов Kylix называется Additional (Рисунок 8.2).



Служит для создания главного меню



Таблица 8.1 (продолжение)

Название на английском языке
Название на русском языке
Краткое описание компонента
MainMenu
Главное меню
Служит для создания главного меню вашего приложения. Расположите этот компонент на форме и после двойного щелчка на нем добавьте новые пункты вашего меню
PopupMenu
Всплывающее меню
Служит для создания так называемого всплывающего меню — меню, которое отображается после щелчка правой кнопкой мыши в определенной области приложения
Label
Метка
Служит для простого отображения текстовой информации, которую пользователь не может редактировать во время работы приложения
Edit
Поле для ввода
Служит для отображения текстовой информации, которую пользователь может изменять. Удобно применять для ввода или редактирования какой-либо текстовой информации
Memo
Многострочное поле
Работает как и поле для ввода, только позволяет вводить (редактировать) несколько строк текста
Button
Кнопка
Обычная кнопка предназначена для выполнения какого-либо кода по нажатии на кнопку пользователем
CheckBox
Флажок
Представляет опцию, благодаря которой пользователь может изменять положение переключателя вкл./выкл.
RadioButton
Переключатель
Данный переключатель работает обычно в группе с другими. Если на форме располагается несколько таких переключателей, только один из них может принимать включенное положение
ListBox
Список
Предназначен для вывода нескольких строк текста. Пользователь может выбрать любую из этих строк простым нажатием на ней
ComboBox
Выпадающий список
Является как бы комбинацией списка и поля для ввода. Пользователь может ввести самостоятельно текст в поле либо выбрать нужный из предоставленного списка
ScrollBar
Полоса прокрутки
Предназначена для смены видимой области отображения формы. Нужна для просмотра большого количества информации, которая просто не помещается на экран



Компоненты вкладки Additional



Таблица 8.2. Компоненты вкладки Additional

Название

Название на русском языке

Краткое описание компонента

BitBtn

Кнопка с рисунком

Кнопка, которая, помимо текста, может отображать рисунок

SpeedButton

Кнопка быстрого доступа

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

MaskEdit

Поле для ввода по шаблону

Компонент похож на поле для ввода, только позволяет вводить информацию по определенным правилам, например паспортные данные, почтовый индекс, номер телефона и др.



Название на английском



Таблица 8.2 (окончание)

Название на английском языке
Название на русском языке
Краткое описание компонента
StringGrid


Компоненты вкладки Common Controls



Таблица 8.3. Компоненты вкладки Common Controls

Название

Название на русском языке

Краткое описание компонента

TabControl

Вкладки

Предназначен для размещения нескольких переключаемых страниц, содержащих различные элементы. Примером применения вкладок может служить палитра компонентов Kylix

PageControl

Страницы

Используется для создания многостраничных диалоговых окон, таких как, например, окно настройки проекта (Project Options) Kylix

ImageList

Список рисунков

Создает объединение рисунков, имеющих одинаковый размер, каждому из которых сопоставлен собственный индекс

TrackBar

Бегунок

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

ProgressBar

Индикатор хода выполнения

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

TreeView

Дерево

Отображает список в виде дерева

ListView

Список

Отображает список

HeaderControl

Заголовок

Отображает заголовок над столбцами, содержащими текст или числовые значения

StatusBar

Строка состояния

Создает панель, предназначенную для вывода служебной информации

ToolBar

Панель инструментов

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



Отображает содержимое текстового файла или



Таблица 8.3 (окончание)

НазваниеНазвание на русском языкеКраткое описание компонента
TextViewerПросмотрщик текстов Отображает содержимое текстового файла или простую HTML-страничку, которую можно прокручивать (скроллировать)
TextBrowserОбозреватель текстовОтображает содержимое текстового файла или простую HTML-страничку. Пользователь может прокручивать (скроллировать) текст или щелкать на размещенных в тексте ссылках для просмотра других страниц и рисунков
SpinEditПоле со стрелкамиОтображает поле редактирования, в которое пользователь может ввести однострочное числовое значение или текст и использовать кнопки "стрелка вверх" и "стрелка вниз" для увеличения или уменьшения текущего значения поля
IconViewСписок иконокОтображает список или данные в виде строк и столбцов маленьких или больших иконок
Следующая вкладка палитры компонентов Kylix — это вкладка Dialogs (Рисунок 8.4).



Компоненты вкладки Dialogs



Таблица 8.4. Компоненты вкладки Dialogs

Название

Название на русском языке

Краткое описание компонента

OpenDialog

Диалог открытия файла

Отображает стандартное диалоговое окно, позволяющее открыть любой файл по его имени



Отображает стандартное диалоговое окно, позволяющее



Таблица 8.4 (окончание)

Название
Название на русском языке
Краткое описание компонента
SaveDialog
Диалог сохранения файла
Отображает стандартное диалоговое окно, позволяющее сохранить данные в виде файла с заданием его имени
FontDialog
Диалог выбора шрифта
Отображает стандартное диалоговое окно, позволяющее выбрать нужный шрифт и задать его стилевые особенности (размер, начертание и т. д.)
ColorDialog
Диалог выбора цвета
Отображает стандартное диалоговое окно, позволяющее выбрать необходимый цвет
FindDialog
Диалог поиска текста
Отображает стандартное диалоговое окно, позволяющее набрать фрагмент текста (строку) для поиска и осуществить этот поиск
ReplaceDialog
Диалог поиска и замены
Отображает стандартное диалоговое окно, позволяющее произвести поиск введенной строки текста и замену этой строки на необходимую, которая также должна быть введена
Далее идут вкладки, содержащие компоненты для работы с базами данных, сетями и протоколами.

Пятая вкладка называется Data Access и показана Рисунок 8.5.



Компоненты вкладки Data Access



Таблица 8.5. Компоненты вкладки Data Access

Название

Название на русском языке

Краткое описание компонента

DataSource

Источник данных

Невизуальный компонент, который служит "каналом" для передачи данных между набором данных и компонентами, отображающими данные, такими как DBGrid



Невизуальный компонент, представляющий собой набор



Таблица 8.5 (окончание)

Название
Название на русском языке
Краткое описание компонента
ClientDataSet
Клиентский набор данных
Невизуальный компонент, представляющий собой набор данных, содержащий данные в оперативной памяти. Он может быть использован при создании локальных баз данных
DataSet Provider
Поставщик данных
Невизуальный компонент, который формирует пакеты данных для отправки клиентам
Следующая вкладка носит название dbExpress (Рисунок 8.6).



Компоненты вкладки dbExpress



Таблица 8.6. Компоненты вкладки dbExpress

Название

Название на русском языке

Краткое описание компонента

SQLConnection

SQL-соединение

Компонент для обеспечения связи с сервером базы данных dbExpress

SQLDataSet

Набор данных SQL

Представляет собой набор данных, работающий с базами данных dbExpress

SQLQuery

SQL-запрос

Компонент, позволяющий создавать и выполнять SQL-запросы для работы с таблицами баз данных dbExpress

SQLStoredProc

Хранимая SQL-процедура

Хранимая на сервере dbExpress процедура, выполняемая с помощью соответствующего вызова

SQLTable

SQL-таблица



и ClientDataSet, этот компонент сохраняет



Таблица 8.6 (окончание)

Название
Название на русском языке
Краткое описание компонента
SQLClientDataSet
Набор данных SQL-клиента
Как и ClientDataSet, этот компонент сохраняет в оперативной памяти данные и любые изменения, сделанные приложением в физические таблицы
Следующая вкладка палитры компонентов Kylix называется Data Controls (Рисунок 8.7).



Компоненты вкладки Data Controls



Таблица 8.7. Компоненты вкладки Data Controls

Название

Название на русском языке

Краткое описание компонента

DBGrid

Сетка

Содержащий данные компонент, предназначенный для отображения и редактирования данных в табличном виде, похожем на лист электронной таблицы

DBNavigator

Навигационный интерфейс

Содержащий данные компонент, имеющий кнопки для перемещения по записям набора данных, вставки, редактирования и просмотра, а также сохранения новых или измененных данных в физической таблице

DBText

Надпись

Содержащий данные компонент, метка, которая отображает значение какого-либо поля текущей записи набора данных

DBEdit

Поле ввода

Содержащий данные компонент, предназначенный для отображения или редактирования значения какого-либо поля текущей записи набора данных



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



Таблица 8.7 (окончание)

НазваниеНазвание на русском языкеКраткое описание компонента
DBMemoМемо-поле Содержащий данные компонент, предназначенный для отображения или редактирования BLOB-текста текущей записи набора данных
DBImageГрафический образСодержащий данные компонент, предназначенный для отображения, копирования или вставки растровой картинки в нее или в текущую запись набора данных
DBListBoxСписокСодержащий данные компонент, применяемый для отображения и прокрутки списка значений из столбца таблицы
DBGomboBoxКомбинированный списокСодержащий данные компонент, предназначенный для отображения или редактирования прокручиваемого списка значений из столбца таблицы
DBCheckBoxНезависимый переключательСодержащий данные компонент, который применяется для отображения или редактирования поля логического типа текущей записи набора данных
DBRadioGroupГруппа зависимых переключателейСодержащий данные компонент, представляющий собой группу зависимых переключателей, предназначенных для отображения или установки значений столбца
DBLookupListBoxПростой списокЕго значения формируются по полю другого набора данных
DBLookupComboBoxКомбинированный списокЕго значения формируются по полю другого набора данных
Следующая вкладка, которая носит имя Internet (Рисунок 8.8), содержит компоненты для создания Web-приложений.



Компоненты вкладки Internet



Таблица 8.8. Компоненты вкладки Internet

Название

Название на русском языке

Краткое описание компонента

WebDispatcher

Диспетчер Web

Конвертирует обычный модуль данных в Web-модуль и позволяет приложению Web-серверу отвечать на запросы клиентов

Page Producer

Составитель страниц

Конвертирует HTML (Hypertext Transfer Protocol)-шаблоны в строки HTML-команд, которые могут обрабатываться приложением-клиентом, например Web-обозревателем

DataSetTableProducer

Составитель таблиц набора данных

Монтирует последовательность HTML-команд для отображения записей набора данных в виде таблицы

DataSetPageProduCer

Составитель страниц набора данных

Конвертирует HTML-шаблоны, содержащие поля набора данных, в строки HTML-команд, которые могут обрабатываться приложением-клиентом, таким как Web-обозреватель

SQLQueryTableProducer

Составитель таблиц из объектов типа
TSQLQuery

Монтирует последовательность HTML-команд для отображения записей из объектов типа TSQLQuery в виде таблицы

TcpClient

TCP-клиент

Добавляет на форму или модуль данных объект типа TTCPClient для "превращения" приложения в приложение-клиент TCP/IP (Transmission Control Protocol/Internet Protocol). TCP-клиент устанавливает желаемое соединение с TCP/IP-сбрвером, обслуживает текущее соединение и завершает соединение

TcpServer

TCP-сервер

Добавляет на форму или модуль данных объект типа TTCPServer для "превращения" приложения в приложение-сервер TCP/IP. TCP-сервер ожидает запросы на TCP/IP-соединение от других компьютеров сети, и если такой запрос получен — устанавливает соединение



Добавляет на форму или модуль



Таблица 8.8 (окончание)

Название
Название на русском языке
Краткое описание компонента
UdpSocket
UDP-сокет
Добавляет на форму или модуль данных объект типа TUDPSocket для "превращения" приложения в UDP/IP (User Datagram Protocol/ Internet Protocol)-клиент или сервер
Следующие три вкладки содержат компоненты, созданные компанией Nev-rona. Эти компоненты предназначены для разработки Интернет-приложений и поддержки различных сетевых протоколов, таких как HTTP, FTP, SMTP, UDP, Telnet, POP3.

Первая из этих трех вкладок носит имя Indy Clients (Рисунок 8.9).



Компоненты вкладки Indy Clients



Таблица 8.9. Компоненты вкладки Indy Clients

Название

Название на русском языке

Краткое описание компонента

IdTCPClient

TCP-клиент

Инкапсулирует полную функциональность TCP-клиента, включая поддержку сокетов, и может быть использован для создания заказных программных средств

IdUDPClient

UDP-клиент

Инкапсулирует полную функциональность UDP-клиента и может быть использован для создания заказных программных средств

IdDayTime

Дата/время

Обеспечивает поддержку протокола даты/времени (RFC 876) как клиент

IdDNSResolver

Разрешитель DNS

Запрашивает DNS (Domain Name Server) для различных типов записей доменных имен



Компонент поддерживает протокол Trivial File



Таблица 8.9 (окончание)

Название
Название на русском языке
Краткое описание компонента
IdTrivialFTP
TrivialFTP-клиент
Компонент поддерживает протокол Trivial File Transfer как клиент
IdWhois
Whois-клиент
Поддерживает протокол Nickname или Whois (RFC 954) как клиент
Вторая вкладка из группы Indy носит название Indy Servers (Рисунок 8.10).



Обеспечивает поддержку протокола Finger User



Таблица 8.9 (продолжение)

Название
Название на русском языке
Краткое описание компонента
IdEcho
Эхо
Обеспечивает поддержку эхо-протокола (RFC 862)
IdFinger
Указатель
Обеспечивает поддержку протокола Finger User Information (RFC 1288) как клиент
IdFTP
FTP-клиент
Обеспечивает поддержку протокола передачи файлов File Transfer Protocol (RFC 959) как клиент
IdGopher
Gopher-клиент
Обеспечивает поддержку протокола Internet Gopher (RFC 1436) как клиент
IdHTTP
HTTP-клиент
Обеспечивает поддержку HTTP-протокола, в том числе модификации HTTP 1.0 (RFC 1945) и HTTP 1.1 (RFC 2616) как Web-обозреватель
IdlcmpClient
ICМР-клиент
Данный компонент предназначен для отправки пакетов Internet Control Message на другие компьютеры сети
IdPOP3
РОР3-клиент
Данный компонент обеспечивает поддержку протокола Post Office версии 3 (RFC 1939) для приема электронной почты как клиент
IdNNTP
NNTP-клиент
Обеспечивает поддержку протокола Network News Transfer (RFC 977) как клиент
IdQOTD
QOTD-клиент
Обеспечивает поддержку протокола Quote of the Day (RFC 865) как клиент
IdRawClient
Raw-клиент
Представляет собой потомок класса TidRawBase, который обеспечивает способность клиента использовать соединение Raw сокет
IdSMTP
SMTP-клиент
Компонент поддерживает протокол Simple Mail Transfer (RFC 821, 1869 и 2554) как клиент
IdSNTP
SNTP-клиент
Компонент поддерживает протокол Simple Network Time (RFC 2030) как клиент
IdTelnet
Telnet-клиент
Компонент поддерживает протокол Telnet как клиент
IdTime
Time-клиент
Компонент поддерживает протокол Time (RFC 868) как клиент



Компоненты вкладки Indy Servers



Таблица 8.10. Компоненты вкладки Indy Servers

Название

Название на русском языке

Краткое описание компонента

IdTCPServer

TCP-сервер

Инкапсулирует полную функциональность TCP-сервера, включая поддержку сокетов, и может быть использован для создания заказных программных средств

IdUDPServer

UDP-сервер

Инкапсулирует полную функциональность UDP-сервера и может быть использован для создания заказных программных средств

IdChargenServer

Chargen-сервер

Обеспечивает создание Chargen-сервера

IdDayTimeServer

Сервер даты/времени

Обеспечивает поддержку протокола даты/времени (RFC 876) как сервер

IdDictServer

Dictionary-сервер

Обеспечивает поддержку протокола Dictionary Server, DICT (RFC 2229)

IdDiscardServer

Discard-сервер

Обеспечивает поддержку протокола Discard (RFC 863) как сервер



позволяющий получить доступ клиентов через



Таблица 8.10 (окончание)

Название
Название на русском языке
Краткое описание компонента
IdTunneIMaster
TCP-сервер с поддержкой IP-туннелей
Позволяет создавать серверы, поддерживающие IP-туннели
IdTunnelSlave
Сервер доступа к туннельным соединениям
Сервер, позволяющий получить доступ клиентов через туннельное соединение
IdWhoIsServer
Whois-сервер
Поддерживает протокол Nickname или Whois (RFC 954) как сервер
И наконец, последняя вкладка палитры компонентов Kylix, которая называется Indy Misc (Рисунок 8.11).



Обеспечивает поддержку протокола Finger User



Таблица 8.10 (продолжение)

Название
Название на русском языке
Краткое описание компонента
IdEchoServer
Эхо-сервер
Обеспечивает поддержку эхо-протокола (RFC 862) как сервер
IdFingerServer
Сервер указателя
Обеспечивает поддержку протокола Finger User Information (RFC 1288) как сервер
IdGopher Server
Gopher-сервер
Обеспечивает поддержку протокола Internet Gopher (RFC 1436) как сервер
IdHostNameServer
HostName-сервер
Обеспечивает разработку Internet HostName сервера (RFC 953)
IdHTTPServer
HTTP-сервер
Обеспечивает поддержку HTTP-протокола как сервер
IdMAP4Server
МАР4-сервер
Обеспечивает поддержку протокола Internet Message Access версии 4, IMAP4 (RFC 2060)
IdlRCServer
IRC-сервер
Позволяет создавать сервер, поддерживающий протокол Internet Relay Chat, IRC (RFC 1459)
IdMappedPortTCP
Сервер портов TCP
Позволяет создавать сервер с прослушиванием определенных портов и обеспечением связи с другими серверами
IdNNTPServer
NNTP-сервер
Обеспечивает поддержку протокола Network News Transfer (RFC 977) как сервер
IdQOTDServer
QOTD-сервер
Обеспечивает поддержку протокола Quote of the Day (RFC 865) как сервер
IdSimpleServer
Простой TCP-сервер
Простой TCP-сервер без поддержки потоков
IdTelnetServer
Telnet-сервер
Компонент поддерживает протокол Telnet как сервер
IdTimeServer
Time-сервер
Компонент поддерживает протокол Time (RFC 868) как сервер
IdTrivialFTPServer
TrivialFTP-сервер
Компонент поддерживает протокол Trivial File Transfer как сервер



Компоненты вкладки Indy Misc



Таблица 8.11. Компоненты вкладки Indy Misc

Название

Название на русском языке

Краткое описание компонента

IdAntiFreeze

Разморозка

Позволяет подсистеме Indy осуществить вызов процедуры Application . ProcessMessag, которая обеспечивает дальнейшую работу системы, пока обрабатываются вызовы Indy

IdDateTimeStamp

Переводчик форматов даты/времени

Переводит дату/время в различные форматы, используемые в различных протоколах

IdLogDebug

Отладчик

Прерывает текущее соединение в случае ошибки с ведением log-файла



На этом пока закончим обзор



Таблица 8.11 (окончание)

НазваниеНазвание на русском языкеКраткое описание компонента
IdCoderMD4Шифровальщик MD4Шифрует данные с использованием (формата шифрования MD4
IdCoderMD5Шифровальщик MD5Шифрует данные с использованием, формата шифрования MD5
На этом пока закончим обзор компонентов, входящих в среду Kylix. Добавим только, что все эти компоненты поставляются с Kylix Server Developer. Применение данных компонентов будет рассмотрено далее на примерах.



RFC 822 или RFC 1036)



Таблица 8.11 (продолжение)

Название
Название на русском языке
Краткое описание компонента
IdMessage
Интернет-сообщение
Инкапсулирует полное Интернет-сообщение ( RFC 822 или RFC 1036) для следующих протоколов: РОР3, SMTP и NNTP со встроенным расширением Multiple Mail Extensions, MME (RFC 2045, 2046, 2047, 2048 и 2049)
IdThreadMgrDefault
Менеджер потока
Действует по умолчанию в качестве менеджера потока в Indy для сервера типа TidTCPServer и его потомков
IdThreadMgrPool
Пудовый менеджер потока
Работает как менеджер потока, для потока типа TIdThread, использующего пул
IdVCardЭлектронные бизнес-картыОбеспечивает поддержку Virtual Cards (электронных бизнес-карт с помощью метода ReadFromTStrings
IdlMFDecoder
IMF-декодер
Декодирует двоичные данные в текстовый формат при помощи UU-кодировки
IdQuotedPrintableEncoder
ММЕ-кодер
Кодирует текст в формат ММЕ
IdQuotedPrintableDecoder
ММЕ-декодер
Декодирует формат ММЕ в текст
IdBase64Encoder
Ваsе64-кодер
Кодирует двоичные данные в текст, использующий кодировку Base64
IdBase64Decoder
Base64-декодер
Декодирует текст в формате Base64 в двоичную форму
IdUUEncoder
UU-кодер
Кодирует двоичные данные в текст, использующий кодировку UUEncode
IdUUDecoder
UU-декодер
Декодирует текст формата UUEncode в двоичную форму
IdXXEncoder
ХХ-кодер
Кодирует двоичные данные в текст, использующий кодировку XX
IdXXDecoder
ХХ-декодер
Декодирует текст формата XX в двоичную форму
IdCoderMD2
Шифровальщик MD2
Шифрует данные с использованием формата шифрования MD2



в инспекторе объектов как множества.



Таблица 8.12 (окончание)

Тип свойства
Отображение свойств в окне инспектора объектов
Множество (Set)
Свойства типа "множество" отображаются в инспекторе объектов как множества. При помощи двойного щелчка мыши на значении свойства разработчик может расширить множество и установить каждому элементу множества булево значение (True, если данный элемент входит в множество)
Объект (Object)
Свойства такого типа часто имеют собственный редактор свойств. Свойства типа "объект" должны быть потомками класса Tpersistent
Массив (Array)
Свойства типа "массив" должны иметь собственный редактор свойств. Инспектор объектов Kylix не поддерживает редактирование свойств данного типа. Разработчик должен при регистрации компонента определить редактор свойств
Свойства основных компонентов Kylix

Рассмотрим свойства, которые имеют стандартные компоненты Kylix. Для начала — основные свойства, которые присущи компонентам — наследникам класса TControl. Кроме краткого описания свойства, мы будем приводить строку кода, описывающего данное свойство внутри класса TControl.
Это поможет вам понять, какой тип имеет данное свойство.

Свойство Action предназначено для определения действия, связанного с элементом управления (меню, кнопкой и т. д). Оно описывается в классе TControl следующим образом:
property Action: TBasicAction;
Значение этого свойства устанавливается во время разработки приложения путем выбора из выпадающего списка предусмотренных действий. Данный список формируется путем размещения на форме компонента TActionList и задания его свойств.
Свойство ActionLink устанавливает связь между элементом управления и действием, определенным в свойстве Action. Оно описывается следующим образом:
property ActionLink: TControlActionLink;
Свойство Align предназначено для задания способа выравнивания компонента внутри компонента контейнерного типа. Оно описывается так:
property Align: TAlign;
Перечислим возможные значения данного свойства:

• alNone — компонент остается на том месте, где он был размещен во время разработки приложения. Данное значение присваивается свойству Align по умолчанию;

• alTop — компонент занимает всю верхнюю часть компонента-контейнера. Во время выполнения приложения ширина компонента зависит от ширины компонента-контейнера. Высота компонента остается неизменной, независимо от высоты контейнера;

• alBottom - аналогичен alTop, за исключением того, что компонент занимает всю нижнюю часть компонента-контейнера;

• alLeft — компонент занимает всю левую часть компонента-контейнера. Во время выполнения приложения высота компонента зависит от высоты компонента-контейнера. При изменении ширины компонента-контейнера ширина компонента остается неизменной;

• alRight — аналогичен alLeft, за исключением того, что компонент занимает всю правую часть компонента-контейнера;

• alClient — компонент занимает всю клиентскую часть компонента-контейнера. При изменении высоты и ширины компонента-контейнера изменяются высота и ширина компонента. Если в клиентской части компонента контейнерного типа уже имеются другие компоненты, то данный компонент занимает всю оставшуюся незанятой часть компонента-контейнера.

Примечание

Значения alTop и alBottom имеют больший приоритет по сравнению со значениями alLeft и alRight. Таким образом, если вы вывели на форму два компонента, присвоив свойству Align одного из них значение alTop, а другому — alRight, то первый компонент вытеснит верхнюю часть второго компонента (Рисунок 8.12).
Свойство Anchors предназначено для определения привязки компонента к родительскому компоненту при изменении размеров родительского компонента. Оно определяется следующим образом:
property Anchors: TAnchors;
Это свойство имеет тип множества (TAnchors), которое может содержать такие элементы: • akTop — компонент привязан к верхнему краю родительского компонента;

• akLeft — компонент привязан к левому краю родительского компонента;

• akBottom — компонент привязан к нижнему краю родительского компонента;

• akRight — компонент привязан к правому краю родительского компонента.



Типы свойств компонентов Kylix



Таблица 8.12. Типы свойств компонентов Kylix

Тип свойства

Отображение свойств в окне инспектора объектов

Простой (Simple)

Числовые, символьные и строковые свойства отображаются соответственно как числа, символы и строки. Разработчик может редактировать значения данных свойств непосредственно в окне инспектора объектов

Перечисляемый
(Enumerated)

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



Константы цвета в среде Kylix



Таблица 8.13. Константы цвета в среде Kylix

Константа

Цвет

clNone

Бесцветный (белый)

clBlack

Черный

clMaroon

Темно-бордовый

clGreen

Зеленый

clOlive

Оливковый

clNavy

Темно-синий

clPurple

Пурпурный

clTeal

Морской

clGray

Серый

clSilver

Серебристый

clRed

Красный

clLime

Лимонный

clBlue

Синий

clYellow

Желтый

clFuchsia

Сиреневый

сlAqua

Голубой

clLtGray

Светло-серый

clDkGray

Темно-серый

clWhite

Белый

clBackground

Базовый цвет фона

clNormalBackground

Цвет фона для включенных неактивных компонентов

dBase

Базовый цвет фона для текстовых компонентов

clNormalBase

Цвет фона для включенных неактивных текстовых компонентов

clDisabledBase

Цвет фона для отключенных текстовых компонентов



Базовый цвет для среднеосвещенных областей



Таблица 8.13 (окончание)

Константа
Цвет
clActiveLight
Цвет светлых областей в 3D-эффектах для активных компонентов
clMidlight
Базовый цвет для среднеосвещенных областей в 3D-эффектах
clNormalMidlight
Цвет среднеосвещенных областей в 3D-эффектах для включенных неактивных компонентов
clDisabledMidlight
Цвет среднеосвещенных областей в 3D-эффектах для отключенных компонентов
clActiveMidlight
Цвет среднеосвещенных областей в 3D-эффектах для активных компонентов
clMid
Базовый цвет для темных областей в 3D-эффектах
clNormalMid
Цвет темных областей в 3D-эффектах для включенных неактивных компонентов
clDisabledMid
Цвет темных областей в 3D-эффектах для отключенных компонентов
clActiveMid
Цвет темных областей в 3D-эффектах для активных компонентов
clDark
Базовый цвет для очень темных областей в 3D-эффектах
clNormalDark
Цвет очень темных областей в 3D-эффектах для включенных неактивных компонентов
clDisabledDark
Цвет очень темных областей в 3D-эффектах для отключенных компонентов
clActiveDark
Цвет очень темных областей в 3D-эффектах для активных компонентов
clShadow
Базовый цвет тени в 3D-эффектах
clNormalShadow
Цвет тени в 3D-эффектах для включенных неактивных компонентов
ClDisabledShadow
Цвет тени в 3D-эффектах для отключенных компонентов
clActiveShadow
Цвет тени в 3D-эффектах для активных компонентов
Данные константы цвета, начиная с clBackground, определяются той цветовой схемой Х-Windows, которая установлена пользователей на конкретном компьютере. Эти цвета рекомендуется использовать при разработке приложений для передачи третьим лицам.

Свойство Components хранит в себе массив компонентов, владельцем которых является данный компонент. Параметр свойств Index позволяет выбрать любой компонент из массива, благодаря свойству Component Index (см. далее). Индексы компонентов нумеруются, начиная с нуля. Число компонентов, содержащихся в массиве, можно определить с помощью свойства ComponentCount (см. далее).
Свойство ComponentIndex определяет индекс (порядковый номер) компонента, содержащегося в компоненте-контейнере, а свойство ComponentCount — число компонентов, входящих в данный компонент контейнерного типа.
Рассмотрим пример применения данных свойств.Предположим, что на форме имеется несколько компонентов. Задача — сместить все компоненты, которые присутствуют на форме, кроме компонента Button1, вправо на 10 единиц. Для этого можно использовать следующий код:

for i := 0 to ComponentCount - 1 do
if (Components[ i ].Name <> 'Button1') then
(Components[ i ] as TControl).Left: = (Components[ i ] as TControl).Left + 10;

Свойство Constraints определяет размер ограничений, т. е. максимальную и минимальную величины ширины и длины компонента. Оно описывается следующим образом:
property Constraints: TSizeConstraints;Примечание
He устанавливайте данное свойство, если вы используете свойства Align или Anchors, т. к. это может привести к конфликту свойств и неправильной работе приложения.

Свойство Control State предназначено для определения текущего состояния компонента во время выполнения приложения. Данное свойство описано следующим образом:
property ControlState: TControlState; Значение свойства ControlState состоит из набора флагов, обозначения которых приведены в табл. 8.14.



Цвет фона для активных текстовых



Таблица 8.13 (продолжение)

Константа
Цвет
clActiveBase
Цвет фона для активных текстовых компонентов
clScrollBar
Цвет полос прокрутки
clActiveCaption
Цвет фона полосы заголовка активного окна
clInactiveCaption
Цвет фона полосы заголовка неактивного окна
clMenu
Цвет фона меню
clWindow
Цвет фона окна
clWindowFrame
Цвет рамки окна
clMenuText
Цвет текста меню
clWindowText
Цвет текста окна
clCaptionText
Цвет текста заголовка в активном окне
clActiveBorder
Цвет бордюра активного окна
clInactiveBorder
Цвет бордюра неактивного окна
clAppWorkSpace
Цвет рабочей области приложения
clHighlight
Базовый цвет фона для выбранного или подсвеченного компонента
clNormalHighlight
Цвет фона для включенных неактивных подсвеченных компонентов
clDisabledHighlight
Цвет фона для отключенных подсвеченных компонентов
clActiveHighlight
Цвет фона для активных подсвеченных компонентов
clHighlightedText
Базовый цвет букв подсвеченного текста
clNormalHighlightedText
Цвет букв включенных неактивных подсвеченных компонентов
clDisabledHighlightedText
Цвет букв отключенных подсвеченных компонентов
clActiveHighlightedText
Цвет букв отключенных подсвеченных компонентов
clBtnFace
Цвет поверхности кнопки
clBtnShadow
Цвет тени, отбрасываемой кнопкой
clGrayText
Цвет текста недоступных элементов окна
clBtnText
Цвет текста кнопки
clInactiveCaptionText
Цвет заголовка в неактивном окне





Таблица 8.13 (продолжение)

Константа
Цвет
clBtnHighlight
Цвет выделенной кнопки
cl3DDkShadow
Цвет темных теней трехмерных элементов окна
cl3DLight
Светлый цвет на краях трехмерных элементов окна
clInfoText
Цвет текста советов (всплывающих подсказок)
clInfoBk
Цвет фона советов (всплывающих подсказок) — обычно светло-коричневый
clHighlightText
Подсвеченный текст
clForeground
Базовый цвет линий или текста
clNormalForeground
Цвет линий или текста для включенных неактивных компонентов
clDisabledForeground
Цвет линий или текста для отключенных компонентов
clActiveForeground
Цвет линий или текста для активных компонентов
clText
Базовый цвет букв
clNormalText
Цвет букв для включенных неактивных текстовых компонентов
clDisabledText
Цвет букв для отключенных текстовых компонентов
clActiveText
Цвет букв для активных текстовых компонентов
clButton
Базовый цвет фона кнопок
clNormalButton
Цвет фона включенных неактивных кнопок
clDisabledButton
Цвет фона отключенных кнопок
clActiveButton
Цвет фона активных кнопок
clButtonText
Базовый цвет букв кнопок
clNormalButtonText
Цвет букв включенных неактивных кнопок
clDisabledButtonText
Цвет букв отключенных кнопок
clActiveButtonText
Цвет букв активных кнопок
clBrightText
Базовый контрастный цвет букв
clNormalBrightText
Контрастный цвет букв включенных неактивных компонентов
clDisabledBrightText
Контрастный цвет букв отключенных компонентов
clActiveBrightText
Контрастный цвет букв активных компонентов,
clLight
Базовый цвет для светлых областей в 3D-эффектах
clNormalLight
Цвет светлых областей в 3D-эффектах для включенных неактивных компонентов
clDisabledLight
Цвет светлых областей в 3D-эффектах для отключенных компонентов



Флаги значения свойства ControlState



Таблица 8.14. Флаги значения свойства ControlState

Флаг

Значение

csLButtonDown

Левая кнопка мыши нажата

csClicked

То же, что и csLButtonDown, но устанавливается только в случае, если в свойстве ControlStyle также установлен флаг csClickEvents

csPalette

Палитра изменена, и элемент управления не закончил регулировку этой палитры