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

         

Элемент управления считывает свое состояние



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

Флаг
Значение
csReadingState
Элемент управления считывает свое состояние из потока
csAlignmentNeeded
Элемент управления нуждается в перестроении
csFocusing
Приложение обрабатывает сообщения, предназначенные для передами фокуса элементу управления. Данный флаг не гарантирует, что элемент управления получит фокус, но предотвращает рекурсивные вызовы
csCfeating
Элемент управления и (или), его владелец начинают создаваться. Данный флаг сбрасывается после завершения процесса создания
csPaintCopy
Элемент управления начинает копирование (собственное)
csCustomPaint
Элемент управления обрабатывает выбранные сообщения о закрашивании
csDestroyingHandle
Окно элемента управления находится в процессе уничтожения
csDocking
Элемент управления начинает устанавливаться
csRecreating
Основное окно Qt начинает создаваться
esWidgetPainting
Основное окно Qt в процессе перерисовки
Свойство ControlStyle определяет различные атрибуты компонента. Например, может ли компонент быть захвачен мышью, имеет ли компонент фиксированные размеры и др. Данное свойство определяет не экземпляры класса, а класс в целом. Оно описано следующим образом:
property ControlStyle: TControlStyle; Значение данного свойства также состоит из флагов (табл. 8.15).



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



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

Флаг

Значение

CsAcceptsControls

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

CsCaptureMouse

Элемент управления перехватывает событие нажатия кнопки мыши

CsDesignlnteractive

Элемент управления преобразует щелчки правой кнопкой мыши во время разработки приложения в щелчки левой Кнопкой мыши



Элемент управления имеет вид трехмерной



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

Флаг ,
Значение
CsClickEvents
Элемент управления может принимать и обрабатывать щелчки мыши
CsFramed
Элемент управления имеет вид трехмерной рамки
CsSetCaption
Значение свойства Caption элемента управления должно соответствовать значению свойства Name этого же элемента управления, если оно не было явно установлено в какое-то другое значение
СsOpaque
Элемент управления полностью занимает клиентскую прямоугольную область
CsDoubleClick
Элемент управления может принимать и обрабатывать двойные щелчки мыши. Иными словами, преобразовывать двойные щелчки в одинарные
CsFixedWidth
Ширина элемента управления не может быть изменена
CsFixedHeight
Длина элемента управления не может быть изменена
CsNoDesignVisible
Элемент управления является невидимым при разработке приложения
CsReplicatable
Элемент управления может быть скопирован с помощью метода PaintTo
CsNoStdEvents
Стандартные события, такие как щелчки мыши, нажатие клавиш клавиатуры и др., игнорируются приложением. Установка данного флага позволяет приложению работать быстрее и применяется в тех случаях, когда обработки стандартных событий не требуется
CsDisplayDragImage
Элемент управления может содержать изображение из списка изображений
CsActionClients
Элемент управления привязан к объекту типа TBasicAction. Этот флаг устанавливается, если у элемента управления используется свойство Action, и сбрасывается в противном случае
CsMenuEvents
Элемент управления реагирует на команды системного меню
Свойство Cursor определяет вид указателя мыши, когда он находится над данным компонентом. Оно описывается следующим образом:
property Cursor:TCursor; В свою очередь, тип TCursor описан так:
type TCursor = -32768 .. 32768;

Kylix имеет встроенные виды указателей. Кроме встроенных, разработчик может помещать в приложение собственные виды указателя мыши. В табл. 8.16 приводятся встроенные типы указателей мыши.



Указатели мыши



Таблица 8.16. Указатели мыши

Значение свойства
Cursor

Числовое значение

Изображение указателя мыши

CrDefault

0

Указатель, принятый по умолчанию. Обычно
это сrArrow

CrNone

-1

Без изображения указателя

CrArrow

-2

Стрелка

CrCross

-3

Крест

CrIBeam

-4

Указатель в виде курсора для ввода текста

CrSize

-22

Указатель изменения размера окна

CrSizeNESW

-6

Указатель изменения размера окна в правом верхнем углу или в левом нижнем

CrSizeNS

-7

Указатель изменения размера окна вверху или внизу (по вертикали)

CrSizeNWSE

-8

Указатель изменения размера окна в левом верхнем углу или в правом нижнем

CrSizeWE

-9

Указатель изменения размера окна слева или справа (по горизонтали)

CrUpArrow

-10

Стрелка вверх

CrHourGlass

-11

Песочные часы

CrDrag

-12

Перетаскивание компонента

CrNoDrop

-13

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

CrHSplit

-14

Горизонтальный сплиттер

CrVSplit

-15

Вертикальный сплиттер

CrMultiDrag

-16

Перетаскивание нескольких компонентов

CrSQLWait

-17

Ожидание выполнения SQL-запроса

CrNo

-18

Указатель, показывающий невозможность действия

CrAppStart

-19

Ожидание старта приложения (стрелка с песочными часами)

CrHelp

-20

Стрелка с вопросом

CrHandPoint

-21

Указатель в форме руки

Свойство DragMode определяет поведение компонента в процессе его перетаскивания. Свойство описывается следующим образом:
property DragMode: TDragMode;
Данное свойство может принимать одно из двух значений: dmAutomatic или dmManual. В первом случае от разработчика не требуется обработки событий. Достаточно щелкнуть кнопкой мыши на компоненте и начать его перетаскивание. Во втором случае компонент не может начать процесс перетаскивания, пока приложение не вызовет метод BeginDrag.
Свойство DragObject содержит значение, определяющее объект перетаскивания, ассоциированный с элементом управления. Данное свойство описано так:
property DragObject: TDragObject;
Оно предназначено только для чтения и используется в основном при создании собственных компонентов.
Свойство Enabled показывает, будет ли компонент доступен пользователю во время работы приложения. Это свойство описывается следующим образом:
property Enabled: Boolean;
Недоступный компонент (Enabled = false) отображается серым цветом. Он игнорирует события клавиатуры, мыши и таймера. Данное свойство применяется для временного ограничения доступа пользователя к компонентам. Например, если вы хотите сделать временно недоступной кнопку, нужно в свойстве Enabled кнопки установить значение false:
Button1.Enabled := false;
Свойство Font предназначено для установки шрифта, а также всех его атрибутов (размера, стиля, цвета и т. д.). Описано так:
property Font: TFont;Свойство Height применяется для задания высоты компонента. Описывается это свойство так:
property Height: Integer;Свойство HelpContext определяет номер, используемый в контекстно-зависимой справке. То есть задается номер страницы справки, которая будет отображаться на экране, когда пользователь нажмет клавишу <F1>. Данное свойство описано следующим образом:
property HelpContext: THelpContext;Свойство HelpFile описано следующим образом:
property HelpFile: String;
Данное свойство содержит имя файла, который будет использоваться приложением в качестве файла контекстно-зависимой справки.Свойство HelpKeywordпредназначено для осуществления поиска в файле контекстно-зависимой справки по ключевому слову. Данное свойство описано следующим образом:
property HelpKeyword: String;Свойство Hint применяется для задания текста всплывающей подсказки. Это свойство описано так:
property Hint: String;
Данное свойство обычно состоит из двух частей, разделяемых символом " |". Например,
Button1.Hint := "Открыть|Выбор и открытие файла рисунка";
В данном случае при наведении указателя мыши на кнопку Button1 будет выдана всплывающая подсказка "Открыть", вторая часть подсказки будет выведена в специальную область, отведенную для таких подсказок, например на панель состояния. Разработчик может пользоваться только первой частью подсказки, без использования символа "|". Кроме того, для отображения всплывающих подсказок нужно дополнительно установить свойство ShowHint в true (см. далее).Свойство Left применяется для задания координаты левого края компонента. За начало координат всех компонентов берется левый верхний угол клиентской области родительского компонента. Для форм началом координат является левый верхний угол экрана.
Данное свойство описано следующим образом:
property Left: Integer;Свойство MouseCapture используется для определения факта захвата мышью элемента управления. Данное свойство имеет логический тип и описано следующим образом:
property MouseCapture: Boolean;
Если элемент управления захвачен мышью — возвращается True, иначе —False.Свойство Name определяет имя компонента, по которому на него ссылаются другие компоненты и которое в дальнейшем используется разработчиком. Данное свойство описано так:
property Name: TComponentName;
Имя задается в процессе разработки программы и не должно изменяться во время работы программы. Kylix по умолчанию самостоятельно дает имена новым компонентам, например: Button1, Button2, Label1 и т. п. Рекомендуется изменять эти имена на более осмысленные.Свойство Parent определяет родительский компонент контейнерного типа, в пределах которого располагается данный компонент. Это свойство описано следующим образом:
property Parent: TWidgetControl;

Примечание

Важно различать два похожих свойства. Свойство Parent определяет родительский компонент, т. е. тот компонент, на котором располагается данный компонент. Свойство Owner определяет владельца компонента. Владелец — это компонент, который передается в качестве параметра в конструктор данного компонента и который владеет им. Например, форма является владельцем всех расположенных на ней компонентов и одновременно — родителем.

Свойство ParentColor указывает, будет ли данный компонент иметь такой же цвет, как и его предок. Свойство описано так:
property ParentColor: Boolean;

Ecли вы хотите, чтобы компонент унаследовал значения цвета от своего предка, то установите данное свойство в true. Если это свойство будет иметь значение False, компонент будет использовать цвета, заданные в его собственных свойствах.

Свойство ParentFont предназначено для определения, будет ли для данного компонента использоваться шрифт, применяемый в родительском компоненте контейнерного типа. Например, если на форме находится кнопка, то при установке у данной кнопки свойства ParentFont в true приведет к тому, что надпись на кнопке будет выполнена тем шрифтом, который указан в свойстве Font формы. Данное свойство описано так:
property ParentFont: Boolean;Свойство ParentShowHint предназначено для включения и выключения родительского свойства ShowHint. Оно описано следующим образом:
property ParentShowHint: Boolean;
Данное свойство используется для одновременного разрешения или запрещения показа всплывающих подсказок в пределах некоторой формы или компонента контейнерного типа.Свойство РорupMenu служит для сопоставления с данным компонентом всплывающего по щелчку правой кнопки мыши меню. Данное свойство описано так:
property PopupMenu: TPopupMenu;Свойство ScalingFlags служит для определения, какие атрибуты элемента управления могут изменять размеры (масштабироваться). Данное свойство описано следующим образом:
property ScalingFlags: TScalingFlags;

Тип TScalingFlags представляет собой набор флагов, которые описаны в табл. 8.17.



Флаги TScalingFlagФлаг



Таблица 8.17. Флаги TScalingFlag

Флаг

Значение

sfLeft

Левая сторона элемента управления не может масштабироваться

sfTop

Верх элемента управления не может масштабироваться

sf Width

Ширина элемента управления не может масштабироваться

sfHeight

Высота элемента управления не может масштабироваться

sfFont

Шрифт элемента управления не может масштабироваться

Свойство ShowHint применяется для включения или выключения показа всплывающих подсказок при задержке указателя мыши над компонентом. Текст подсказки задается в свойстве Hint. Свойство ShowHint описано следующим образом:
property ShowHint: Boolean;Свойство Text предназначено для задания или чтения строки текста, связанной с данным компонентом. Данное свойство описано так:
property Text: TCaption;
Это свойство применяется в компонентах типа TEdit и в компонентах-списках.Свойство Tор применяется для задания или чтения значения, определяющего координату верхнего края компонента. Данное свойство описано следующим образом:
property Top: Integer;Свойство Visible применяется для определения, будет ли виден компонент на форме во время выполнения программы. Оно описано так:
property Visible: Boolean;

Если свойство имеет значение true, то компонент будет виден, иначе — невидим.

Свойство Width применяется для установки горизонтального размера компонента, а также для чтения текущего значения ширины компонента. Данное свойство имеет целый тип и описано следующим образом:
property Width: Integer;

Рассмотрим теперь свойства, характерные для класса TWidgetControl и его наследников.

Свойство Bitmap служит для задания растрового изображения, которое отображается как фоновый рисунок элемента управления. Данное свойство в классе TWidgetControl описано следующим образом:
property Bitmap: TBitmap;Свойство Brush предназначено для установки цвета и кисти для закраски фонового изображения элемента управления. Данное свойство описано так:
property Brush: TBrush;Свойство ChlidHandle возвращает ссылку на элемент управления. Данная ссылка является дескриптором дочернего окна, который применяется, когда происходит вызов родительского окна. Свойство используется только для чтения и описано следующим образом:
property ChildHandle: QwidgetH; library;Свойство ControlCount возвращает число дочерних элементов управления от данного. Оно описано так:
property ControlCount: Integer;
Это свойство применяется только для чтения. Значение, хранящееся в данном свойстве, всегда на единицу больше, чем самый последний индекс дочернего элемента (см. свойство Controls ниже), т. к. первый индекс всегда равен нулю.Свойство Controls представляет собой массив, содержащий список всех дочерних элементов управления по отношению к данному элементу. Это свойство описывается следующим образом:
property Controls[Index: Integer]: TControl;

Примечаниe
He путайте свойство Controls со свойством Components. Свойство Controls содержит список всех дочерних окон от данного, а свойство Components — список всех компонентов, владельцем которых этот компонент является.

Данное свойство применяется только для чтения. Для добавления или удаления дочерних элементов управления используйте соответствующие методы InsertControl и Remove Control.

Свойство Handle обеспечивает доступ к дескриптору окна элемента управления. Описано следующим образом:
property Handle: QWidgetH read GetHandle; library;
Данное свойство применяется только для чтенияСвойство InputKeys определяет тип клавиш, которые могут применяться для ввода информации внутри данного элемента управления при получении им фокуса. Свойство описано следующим образом;
property InputKeys: TInputKeys;

Стоит сказать несколько слов о типе TInputKeys. Этот тип представляет собой перечисляемый тип, значения которого показаны в табл. 8.18.

Таблицa 8.18. Значения типа TInputKeys

Значение

Описание

ikAll

Ввод любых символов клавиатуры

ikArrows

Клавиши со стрелками (<влево>, <вправо>, <вверх>, <вниз>)

ikChars

Любые нефункциональные клавиши без <Ctrl> и <Alt>

ikReturns

Клавиша ввода (<Enter>)

ikTabs

Клавиша табуляции (<Таb>) и комбинация клавиш обратной табуляции (<Shtft>+<Tab>)

ikEdit

Клавиши редактирования (<Backspace>, <lnsert>, <Delete>)

ikNav

Клавиши навигации по тексту (<вверх>, <вниз>, <влево>, <вправо>, <Home>, <End>, <PageUp>, <PageDown>)

ikEsc

Клавиша <Esc>

Свойство Masked включает или выключает свойство Automask для отображения непрямоугольных окон. Описано следующим образом:
property Masked: Boolean;
Принимает значение True, если окно имеет непрямоугольную форму.Свойство Palette хранит значение текущей палитры, которая используется для рисования данного элемента управления. Описано следующим образом:
property Palette: TWidgetPalette;Свойство ParentWidget служит для ссылки на родительский элемент управления, т.е. на дескриптор окна родителя данного элемента управления. Описано следующим образом:
property ParentWidget: QWidgetH;Свойство Style предназначено для задания стиля компонента. Описано так:
property Style: TWidgetStyle;Свойство TabOrder применяется для задания последовательности перехода от одного компонента формы к другому при помощи клавиши <Таb>. Свойство описано следующим образом:
property TabOrder: TTabOrder;
Нумерация осуществляется, начиная с нуля. Если задать свойству TabOrder компонента значение -1, этот компонент не сможет получить фокус при помощи клавиши <Таb>. Предположим, что на форме расположены три кнопки: Button1, Button2 и Button3. Для того чтобы фокус между этими кнопками передавался следующим образом: сначала активна кнопка Button2, затем — Button1 и потом уже Button3, нужно установить свойство TabOrder для кнопки Button1 равным 1, для Button2 — 0, а для Button3 — 2.Свойство TabStop применяется для указания возможности передачи фокуса на компонент при помощи клавиши <Таb>. Оно описывается следующим образом:
property TabStop: Boolean;

Если значение данного свойства равно true, то при помощи клавиши <Таb> можно передать фокус этому компоненту, в зависимости от его свойства TabOrder. Если значение свойства TabStop равно false, то независимо от свойства TabOrder фокус будет невозможно передать при помощи клавиши <Таb>.

Методы

Методы — это процедуры или функции, принадлежащие объекту. Методы определяют поведение объекта. Для вызова метода объекта нужно указать объект, с которым ассоциирован данный метод, затем, через точку, — название метода. Например:

Button1.Click

Вызывается метод нажатием (Click) кнопки (Button1).

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

type TMyComponent = class(TObject)
. . .
procedure DoSomething; . . .
end;

Здесь, внутри описания нового компонента, мы объявляем метод DoSomething с помощью служебного слова procedure. После того как мы объявили новый метод, необходимо создать тело данного метода. Эта процедура может находиться где угодно внутри модуля, в котором был описан компонент. Например:

procedure TMyComponent.DoSomething; begin
// Здесь размещаем команды и операторы, которые должны выполняться
// при вызове метода DoSomething на выполнение end;

Заметим, что при создании процедуры DoSomething мы должны указывать его полное имя вместе с указанием имени компонента или класса

(procedure TMyComponent.DoSomething;).

Рассмотрим основные методы среды Kylix.

Метод Add предназначен для добавления нового элемента в список типа TList, TStringList или TStrings. Если список не отсортирован, то новый элемент добавляется в самый конец списка. Если список отсортирован, новый элемент добавляется в позицию списка, определяемую сортировкой. Вызов настоящего метода увеличивает значение свойства count для этого списка. При выполнении данного метода может возникнуть исключение EListError в случае, когда список отсортирован, добавляемая строка уже присутствует в списке и для данного списка свойство
Duplicates установлено в dupError.





Коды клавиш



Таблица 8.19. Коды клавиш

Символическое имя клавиши

Название клавиши

Символическое имя клавиши

Название клавиши

Key_Escape

<Esc>

Key_Period

<.>

Key_ Tab

<Tab>

Key_ Slash

</>

Key_ Backtab,
Key_ BackTab

<Shift>+<Tab>

Key_0

<0>

Key_Backspace, Key_BackSpace

<Backspace>

Key_1

<1>

Key_Return

<Return>

Key_2

<2>

Key_Enter

<Enter>

Key_3

<3>

Key_Insert

<Insert>

Key_4

<4>

Key_Delete

<Delete>

Key_5

<5>

Key_ Pause

<Pause>

Key_6

<6>

Key_Print

<PrintScreen>

Key_7

<7>

Key_SysReq

<SysRq>

Key_8

<8>



Параметр Shift является множеством, которое



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

Символическое имя клавиши
Название клавиши
Символическое имя клавиши
Название клавиши
Key_Exclam
<!>
Кеy_К
<K>
Key_NumberSign<#>Key_L<L>
Key_Dollar
<$>
Кеy_М
<М>
Key _Percent
<%>
Key_N
<N>
Key_Ampersand
<&>
Кеy_O
<0>
Key_Apostrophe
<'>
Кеy_Р
<Р>
Key_Asterisk
<*>
Key_Q
<Q>
Key_ Plus
<+>
Key_R
<R>
Кеy_Соmmа
<,>
...
Key_Minus
<->
Key_Z
<Z>
Параметр Shift является множеством, которое может быть пустым или может содержать следующие элементы:

ssShift — при нажатой клавише <Shift>;
ssAlt — при нажатой клавише <Alt>;
ssCtrl — при нажатой клавише <Ctrl>.
Приведем пример использования события OnKeyDown. Предположим, что нам необходимо распознать, когда пользователь нажмет комбинацию клавиш <Ctrl>+<Shift>+<L>. В обработчике события OnKeyDown напишем следующий код:

if ( (Key = ord ('L') ) and (ssShift in Shift) and (ssCtrl in Shift) )
then ShowMessage ('Нажата комбинация клавиш <Ctrl>+<Shift>+<L>');
В вышеприведенном примере мы использовали функцию ord ( ), которая позволяет по символу клавиши получить код клавиши (в нашем случае, код клавиши <L>). Теперь всякий раз, когда фокус будет у компонента, к которому привязан данный обработчик, и как только пользователь нажмет комбинацию клавиш <Ctrl>+<Shift>+<L>, будет выводиться окно (Рисунок 8.21).



Символическое имя



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

Символическое имя клавиши
Название клавиши
Символическое имя клавиши
Название клавиши
Кeу_ Ноmе
<Home>
Кеу_9
<9>
Key_ End
<End>
Key_Colon
<:>
Key_Left
<стрелка влево>
Key_Semicolon
<;>
Key_Up
<стрелка вверх>
Key_Less
<меньше>
Key_Right
<стрелка вправо>
Key_Equal
<=>
Key_ Down
<стрелка вниз>
Key_Greater
<6ольше>
Key_PageUp
<PageUp>
Key_Question
<?>
Key_ PageDown
<PageDown>
Key_At
<@>
Key_Shift
<Shift>
Key_BracketLeft
<[>
Key_Control
<Ctrt>
Key_BackSlash
<\>
Key_Alt <Alt> Key_BracketRight<]>
Key _CapsLock<Caps Lock>Key_AnsiiCircum<^>
Key _NumLock
<NumLock>
Key_Underscore
< >
Key_ScrollLock
<Scroll Lock>
Key_BraceLeft
<{>
Key_F1
<F1>
Key_Bar
<|>
Key_F2
<F2>
Key_BraceRight
<}>
Key_F3
<F3>
Key_AsciiTilde
<~>
Key_F4
<F4>
Key_paragraph
<параграф>
Key_F5
<F5>
Key_unknown
Неизвестная клавиша
Key_F6
<F6>
Key_A
<А>
Key_F7
<F7>
Key_B
<В>
Key_F8
<F8>
Key_C
<С>
Key_F9
<F9>
Key_D
<D>
Key_F10
<F10>
Key_F
<F>
Key_F11
<F11>
Key_G
<G>
Key_F12
<F12>
Key_I
<l>
Key_Space
<пробел>
Key_J
<J>



Коды ошибок ввода/вывода



Таблица 9.1. Коды ошибок ввода/вывода

Linux

Windows

Код ошибки

Описание

Код ошибки

Описание

2

Нет файла или каталога

2

Файл не найден

3

Путь к файлу не найден

5

Ошибка ввода/вывода

5

Доступ запрещен

13

Доступ запрещен

20

Не является каталогом

21

Является каталогом

32

Ошибка совместного использования файла

Ошибки, не зависящие от операционной системы

Код ошибки

Описание

100

Достигнут конец файла

101

Диск полон

102

Файловая переменная не назначена

103

Файл не открыт

104

Файл не открыт для ввода

105

Файл не открыт для вывода

106

Ошибка ввода по формату

107

Файл уже открыт

EIntError — потомок класса EExternal. Базовый класс для целочисленных математических ошибок.
EIntfCastError — потомок класса Exception. Неверное использование оператора as.
EIntoverfiow — потомок класса EIntError. Превышено максимальное значение целого числа.
EInvalidArgument — потомок класса EMathError. Аргумент математической функции задан неправильно.
EInvalidCast — потомок класса Exception. Неверное использование оператора as.
EInvalidGraphic — потомок класса Exception. Нераспознаваемый графический файл.
EInvalidGraphicOperation — потомок класса Exception. Неверное использование графических операций.
EInvalidGridOperation — потомок класса Exception. Неверное использование сетки (Grid).
EInvalidHandleException. Базовый класс для ошибок при оперировании объектами TFont, TPen и Tbrush. EInvalidlmage — потомок класса EFilerError. Невозможно прочитать файл ресурсов.
EInvalidOp — потомок класса EMathError. Неизвестная операция с плавающей запятой.
EInvalidOperation — потомок класса Exception. Неверное действие над компонентом.

Примечание
Не путайте классы исключений EInvalidOp и EInvalidOperation!

EinvalidParam - базовый класс для неверных потоковых операций с ресурсами mime.
EInvalidPointer — потомок класса EHeapException. Неверная операция над указателем.
EMaskException — потомок класса Exception. Ошибка сравнения имени файла по маске.
EMathError — потомок класса EExternal. Абстрактный класс исключений для математических операций над вещественными числами.
EMenuError — потомок класса Exception. Ошибка при работе с системным меню.
EOutOfMemory — потомок класса EHeapException. Ошибка распределения памяти.
EOutOfResources — потомок класса EOutOfMemory. Ошибка распределения дескрипторов окон.
EOverflow — потомок класса EMathError. Превышено максимально возможное вещественное значение.
EPackageError — потомок класса Exception. Ошибка загрузки или уничтожения пакета.
EParserError — потомок класса Exception. Ошибка преобразования текста в двоичную форму.
EPrinter — потомок класса Exception. Ошибка вывода на печатающее устройство.
EPrivilege — потомок класса EExternal. Попытка выполнения инструкции процессора, которая является недоступной при данном уровне привилегий процессора.
EPropertyConvertError — потомок класса Exception. Ошибка установки или получения значения свойства компонента.
EPropertyError — потомок класса Exception. Ошибка при установке нового значения свойства компонента.
EQtDialogException — потомок класса Exception. Ошибка при работе с Qt-диалогом.
ERangeError — потомок класса EIntError. Значение целочисленной переменной превысило максимально возможное.
EReadError — потомок класса EFilerError. Ошибка чтения данных из потока.
EReconcileError — потомок класса EDBClient. Ошибка обновления набора данных клиента.
ERegisterActionsException — потомок класса Exception. He произведена инициализация регистрации системы.
EResNotFound — потомок класса Exception. Ошибка работы с файлами ресурсов.
ESafecallException — потомок класса Exception. Ошибка при выполнении безопасного вызова процедуры.
ESocketError — потомок класса Exception. Ошибка инициализации или отключения сокета.
EstackOverf low — потомок класса EExternal. Переполнение стека.
EstreamError — потомок класса Exception. Базовый класс ошибок, связанных с потоками.
EStringListError — потомок класса Exception. Неверная работа со списком.
EThread — потомок класса Exception. Ошибка синхронизации потоков.
ETreeViewError — потомок класса Exception. Неверная работа с деревом.
EUnderflow — потомок класса EMathError. Вещественное значение слишком мало.
EUpdateError — потомок класса EDatabaseError. Ошибка обновления набора данных сервера.
EVariantError — потомок класса Exception. Ошибка при работе с типом данных Variant.
EWebBrokerException — потомок класса Exception. Ошибка при работе с объектом WebBroker.
EWriteError — потомок класса EFilerError. Ошибка при записи данных в поток.
EZeroDivide — потомок класса EMathError. Ошибка деления вещественного числа на ноль.


Типы графических объектов Kylix



Таблица 13.1. Типы графических объектов Kylix

Объект

Описание

Picture

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

Bitmap

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

Clipboard

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

Icon

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

Drawing

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


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


Свойства объекта Canvas



Таблица 13.2. Свойства объекта Canvas

Свойство

Описание

Font

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

Brush

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

Pen

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

PenPos

Определяет текущую позицию пера

В табл. 13.3 перечислены методы, которые часто используются при рисовании на канве.



Методы объекта Canvas



Таблица 13.3. Методы объекта Canvas

Метод

Описание

Arc

Предназначен для черчения дуги эллипса или окружности. В качестве параметров метода передаются координаты четырех точек. Первые две точки (x1, y1) и (х2, y2) определяют диагональ прямоугольника, в который вписан эллипс. Третья точка (х3, y3) задает начальную точку дуги. Точка (х4, y4) задает конечную точку дуги. Третья и четвертая точки принадлежат прямоугольнику, описывающему эллипс. Точки дуги получаются в результате пересечения прямой, проходящей через центр эллипса и точки (х3,y3) и (х4, y4). Дуга рисуется против часовой стрелки от начальной до конечной точки

Chord

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



Рисует графическое изображение, которое содержится



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

Метод

Описание

StretchDraw

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

Image1. Canvas. StretchDraw (Rect (0, 0, 29, 29), Im-age2 . Picture . Bitmap) ;

Уменьшает изображение, имеющее размер больше, чем 30x30 и хранящееся в компоненте Image2, и помещает его на канву компонента Image1
TextHeight

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

TextOut

Выводит строку текста, задаваемую параметром Text, на канву в позицию с координатами (х, y). Например,

Image1. Canvas. TextOut (10, 10, 'Kylix - лучшая среда разработки под Linux ' ) ;

TextRect

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

TextWidth

Возвращает значение в пикселах, равное длине текста Text, который предполагается вывести на канву компонента текущим шрифтом

TiledDraw

Рисует размноженное изображение внутри указанного прямоугольника


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


с одной канвы на другую.



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

Метод

Описание

CopyRect

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

Draw

Рисует изображение, хранящееся в объекте, который определен параметром Graphic, на канву в координаты, задаваемые параметрами х и y. Например,

Image1. Canvas. Draw (5, 24, Image2. Picture. Bitmap) ;

Копирует в координаты (5, 24) рисунок, находящийся на канве компонента Image2, в, канву компонента Image1

DrawFocusRect

Рисует изображение пунктирного прямоугольника с автоматической установкой режима пера (свойство Mode) в pmXor. Данный метод имеет место лишь в том случае, когда подсвойство DefaultStyle свойства Style приложения установлено в dsWindows

DrawPoint

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

DrawPoints

Рисует несколько точек с использованием текущих установок пера

Ellipse

Чертит на канве эллипс или окружность. Параметрами являются две точки (x1, y1) и (х2, y2 ), которые определяют диагональ прямоугольника, описывающего эллипс

FillRect

Заполняет указанную прямоугольную область канвы цветом, определенным текущим значением свойства кисти (Brush). Например,

Image1. Canvas. FillRect (0, 0, 100, 100);

Заполняет квадрат с главной диагональю, имеющей координаты (0, 0) и (100, 100), цветом, определенным в свойстве Color кисти
GetClipRegion Возвращает указатель на текущую вырезаемую область канвы
LineTo

Чертит на канве прямую линию, начало которой совпадает с текущим значением координат пера (значение свойства PenPos), а конец задается параметром (х, y) . Конечная точка не принадлежит линии и не отображается. После чего текущими координатами пера станет точка (х, y ) . Например,

Image1. Canvas. LineTo (100, 130);

Чертит линию от текущей позиции пера до точки с координатами (100, 130), не включая саму точку (100, 130), после чего значением, PenPos будет точка (100, 130)





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

Метод

Описание

MoveTo

Изменяет текущую позицию пера ( значение свойства PenРоs) на значение, заданное параметром (х, y). При перемещении пера на канве ничего не чертится. Метод аналогичен прямой установке значения свойства PenPos

Pie

Чертит замкнутый сегмент эллипса или окружности. Параметры метода аналогичны параметрам метода Arc

PolyBezier

Чертит на канве цветом пера Реn сглаженную кривую по заданному множеству точек, определенных в массиве Points. Начинает рисование с точки, определенной параметром Startlndex, используя следующие две точки как направляющие для изгибов кривой. Кривая заканчивается четвертой точкой массива. Например,

Image1. Canvas. PolyBezier ( [Point (0, 0) , Point (100, 10), Point (20, 30) , Point (230, 100)], 0);
Последний параметр, равный нулю, — это параметр
Startlndex

PolyBezierTo

То же самое, что и PolyBezier, только после черчения линии данный метод устанавливает значение свойства PenPos в последнюю точку массива Points

Polygon



Чертит на канве многоугольник по заданному множеству точек, определенных в массиве Points, причем первая точка массива соединяется с последней, после чего многоугольник закрашивается цветом, определенным свойством кисти Brush. Например,

Image1. Canvas. Polygon ( [Point (0, 0), Point (10, 10) , Point (20, 30) , Point (230, 100)]);

Polyline

Чертит на канве незамкнутый многоугольник. Аналогичен методу Polygon, только не соединяет первую и последнюю точки массива Points

Rectangle

Чертит на канве текущим пером Реn прямоугольник, закрашенный цветом, определенным в свойстве кисти Brush. В качестве параметров передаются координаты двух точек: левого верхнего и правого нижнего углов прямоугольника, т. е. его главная диагональ

RoundRect

Чертит на канве закрашенный цветом, определенным в свойстве кисти Brush, прямоугольник со скругленными углами. Два параметра (x1, y1) и (x2, y2) задают координаты углов прямoугольника (как в методе Rectangle). Два следующих параметра х3 и y3 задают эллипс с шириной х3 и высотой y3 точек. Углы прямоугольника скругляются по шаблону данного эллипса



когда пользователь отпускает кнопку мыши



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

Событие мыши

Описание

OnMouseUp

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

Когда приложение фиксирует, что произошло событие мыши, оно вызывает обработчик данного события, если он был вами написан. В обработчик события передается четыре параметра, которые перечислены в табл. 13.5.



События мыши



Таблица 13.4. События мыши

Событие мыши

Описание

OnMouseDown

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

OnMouseMove

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



Параметры событий мыши



Таблица 13.5. Параметры событий мыши

Параметр

Значение

Sender

Имя объекта, над которым произошло событие мыши

Button

Указывает, какая из трех кнопок мыши нажата. Может принимать значения: mbLeft — левая; mbMiddle — средняя и mbRight — правая

Shift

Показывает состояние кнопок <Alt>, <Ctrl> и <Shift> во время наступления события мыши

X, Y

Координаты клиентской части компонента, над которым произошло событие мыши

Обработка события OnMouseDown

Всякий раз, когда пользователь нажимает любую кнопку мыши, происходит событие OnMouseDown. Для использования этого события вам нужно написать обработчик события у желаемого компонента. Например, если вы хотите обработать событие OnMouseDown, когда пользователь нажмет кнопку мыши над формой Form1, нужно в окне инспектора объектов на вкладке Events найти событие OnMouseDown для формы Form1 и дважды щелкнуть на нем. В результате Kylix создаст заготовку обработчика события нажатия кнопки мыши для формы (листинг 13.24).

Листнг 13.24.Заготовка обработчика события OnMouseDown

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin

end;

Приведем пример обработки данного события (листинг 13.25). Запустите названную программу. При каждом щелчке в области формы вы увидите надпись "Здесь!" на месте, где вы щелкнули мышью (Рисунок 13.7).

Лизинг 13.25.Пример обработки события OnMouseDown

procedure TForm1. FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Canvas.TextOut (X, Y, 'Здесь!'); { печатает текст на канве }
end;

Значения свойства Policy



Таблица 14.1. Значения свойства Policy

Значение

Тип значения

Возможные числовые значения для свойства Priority

SCHED_RR

Real Time

0-99

SCHED_FIFO

Real Time

0-99

SCHED_ОTHER

Regular

0

Примечание
Значения SCHED_PR и SCHED_FIFO могут быть установлены только в том случае, когда вы вошли в Linux под администратором (root)

Для Windows-приложений свойство Priority может принимать значения, перечисленные в табл. 14. 2.



Значения свойства Priority для Windows



Таблица 14.2. Значения свойства Priority для Windows

Значение приоритета

Приоритет

Cоответствующее числовое значение

Tpldle

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

-15

TpLowest

Низший приоритет выполнения. Данный поток занимает минимум процессорного времени

-2

TpLower

Низкий приоритет. Данный поток занимает немного больше процессорного времени, чем имеющий приоритет tpLowest

-1

TpNormal

Нормальный приоритет. Все потоки по умолчанию имеют приоритет tpNormal

0

TpHigher

Высокий приоритет. Данный поток имеет приоритет выше нормального

1

TpHighest

Высший приоритет. Данный поток имеет приоритет выше, чем tpHigher

2

TpTimeCntical

Наивысший приоритет Поток с данным приоритетом занимает максимум процессорного времени

15

Примечание

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

Поведение потока
при завершении его работы

Обычна при завершении своей работы поток просто освобождается. Однако иногда бывает необходимо, чтобы завершение работы и освобождение потока было согласовано с другими потоками. Например, вы можете ожидать какое-либо значение, возвращаемое одним потоком, перед выполнением другого потока. Для реализации этого вы не должны освобождать первый поток, пока второй не получит значение, возвращаемое первым. Для управления завершением работы потока существует свойство потока FreeOnTerminate. Пo умолчанию данное свойство установлено в true. При этом поток освобождается по завершении своей работы. Если же установить данное свойство в false, то вы можете сами завершить работу потока.

Кроме того, в Kylix имеется возможность прекратить выполнение одного потока подачей команды о прекращении из другого потока. Когда один поток пытается прекратить работу другого потока, он вызывает метод Terminate. В результате, свойство Terminate потока будет установлено в true, что можно проверить во время выполнения метода Execute (листинг 14.3).



Свойства компонента TDataSource



Таблица 16.1. Свойства компонента TDataSource

Свойство

Описание

AutoEdit

Определяет, будут ли компоненты, отображающие данные, переключаться в режим редактирования при попытке изменения данных пользователем. Имеет тип Boolean

DataSet

Определяет имя набора данных, с которым связан источник данных. Имеет тип TdataSet

Enabled

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

Name

Определяет имя компонента TdataSource

Tag

Свойство, которое может использоваться по усмотрению программиста и не имеет специального назначения. Многие компоненты содержат это свойство. Свойство имеет тип Integer

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



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



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

Свойство

Описание

IndexFieldNames

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

IndexName

Содержит имя индекса, по которому будет произведена сортировка набора данных. Имеет тип String

MasterSource

Содержит имя главного источника данных при организации связи таблиц главная-подчиненная (master-detail). Имеет тип TdataSource

MasterFields

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

ObjectView

Включает или выключает иерархическое представление для вложенных полей. Имеет тип Boolean

PacKetRecord

Определяет количество записей в одном пакете данных. Имеет тип Integer. Возможные значения:
-1 — все записи;
>0 — конкретное число записей;
0 — в пакет будут включаться только мета-данные

Params
Определяет список параметров набора данных. Имеет тип Tparams
ProviderName

Определяет имя зарегистрированного провайдера для сервера. Имеет тип String

Readonly

Определяет способ доступа к записям. Имеет тип Boolean. Если значение свойства — true, то данные доступны только для чтения. Если значение — false, то можно изменять существующие данные и записывать новые

RemoteServer

Определяет компонент, с помощью которого клиентский набор данных соединяется с сервером. Имеет тип TcustomRemoteServer

StoreDefs

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

Tag

Свойство, которое может использоваться по усмотрению программиста, и у него нет специального назначения. Свойство имеет тип Integer

Компонент TDataSetProvider — предназначен для формирования пакетов данных для отправки их клиентам. Свойства этого компонента перечислены в табл. 16.3.



Свойства компонента TClientDataSet



Таблица 16.2. Свойства компонента TClientDataSet

Свойство

Описание

Active

Определяет, является ли набор данных активным. Свойство имеет тип Boolean

Aggregates

Содержит список доступных агрегатов. Имеет тип Taggregates

AggregatesActive

Определяет, нужно ли производить вычисления агрегатов. Имеет тип Boolean

AutoCalcFields

Определяет, нужно ли генерировать событие OnCalcFields и обновлять содержимое полей. Имеет тип Boolean. Принимает значение true при открытии набора данных, при переключении набора данных в состояние DsEdit или при передаче фокуса другому компоненту на форме

CommandText

Содержит текст SQL-запроса. Имеет тип String. При установленном значении свойства FileName это свойство игнорируется. Свойство игнорируется также и в случае, когда в свойстве Options сброшен флажок poAllowCommandText

ConnectionBroker

Определяет брокера соединения с сервером. Имеет тип
TconnectionBroker

Constraints

Определяет накладываемые ограничения на значение на уровне одной записи. Имеет тип TConstraints

DataSetField

Указывает на объект TDataSetField, управляющий вложенными наборами данных. Имеет тип TDataSetField

DisableStringTrim

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

FetchOnDemand

Определяет, должно ли приложение получать данные по мере необходимости. Имеет тип Boolean

FieldDefs

Содержит список полей, определяющих набор данных. Имеет тип TfieldDefs

FileName

Содержит имя файла, в котором хранятся кэшируемые данные. Имеет тип String

Filter

Задает фильтр, по которому будут выбираться данные из таблицы. Имеет тип String

Filtered

Определяет, включено или выключено свойство Filter. Имеет тип Boolean

FilterOptions

Определяет параметры фильтрации записей таблицы. Имеет тип TfilterOptions

IndexDefs

Содержит определения индексов. Имеет тип т IndexDefs



Свойства компонента TDataSetProvider



Таблица 16.3. Свойства компонента TDataSetProvider

Свойство

Описание

Constraints

Определяет накладываемые ограничения на значение на уровне одной записи. Имеет тип Tconstraints

DataSet

Определяет набор данных, с которым взаимосвязан компонент TdataSetProvider. Имеет тип TdataSet

Exported

Позволяет приложению осуществлять вызовы провайдера, если он расположен на сервере. Имеет тип Boolean

Name

Определяет имя компонента TdataSetProvider

Options

Содержит параметры работы с данными. Имеет тип
TproviderOptions

ResolveToDataSet

Определяет, будут ли автоматически применяться изменения в наборе данных или на сервере базы данных. Имеет тип Воolean

Tag

Свойство, которое может использоваться по усмотрению программиста и у него нет специального назначения. Свойство имеет тип Integer

UpdateMode

Определяет способ поиска записи, которую необходимо обновить. Имеет тип TUpdateMode. Может принимать значения:

UpWhereAll — искать по всем полям;
UpWhereChanged — искать по ключевым и измененным полям;
UpWhereKeyOnly — искать только по ключевым полям


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


Содержит имя конфигурации. Имеет тип



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

Свойство
Описание
ConnectionName
Содержит имя конфигурации. Имеет тип String. Является аналогом свойства AliasName в Delphi
DriverName
Содержит имя драйвера, необходимого для соединения с базой данных (DB2, Interbase, Oracle или My SQL). Имеет тип String. Данное свойство устанавливается автоматически после задания значения свойства ConnectionName
KeepConnection
Определяет, нужно ли поддерживать соединение с сервером базы данных, если в приложении нет активных наборов данных. Имеет тип Boolean. Если связь необходимо поддерживать, установите это свойство в true, иначе —
false
LibraryName
Содержит имя библиотеки, в которой находится необходимый драйвер для связи с базой данных. Свойство имеет тип String
LoadParamsOnConnect
Определяет, нужно ли загружать параметры соединения перед его установкой во время работы приложения. Имеет тип Boolean
LoginPrompt
Определяет, нужно ли при установке соединения запрашивать имя пользователя и пароль. Имеет тип Boolean. Если true, то нужно, иначе — не нужно
Name
В этом свойстве вы можете указать имя компонента
TSQLConriection. Имеет тип TcomponentName
Params
Устанавливает параметры соединения. Имеет тип
TStrings
TableScope
Устанавливает параметры видимости таблиц базы данных. Имеет тип TTableScopes и может принимать следующие значения:
TsSynonym— видимые синонимы;
TsSysTable — видимые системные таблицы;
ТsТаblе — видимые таблицы пользователей;
TsView — видимые представления
VeridorLib
Указывает имя библиотеки клиентской части базы данных. Имеет тип String
Компонент TSQLDataSet — представляет собой однонаправленный набор данных. В табл. 16,5 перечислены его основные свойства.



Свойства компонента TSQLConnection



Таблица 16.4. Свойства компонента TSQLConnection

Свойство

Описание

Connected

Определяет, установлена ли связь с базой данных. Данное свойство имеет тип Boolean. Если связь установлена, свойство имеет значение true, иначе — false



Свойства компонента TSQLDataSet



Таблица 16.5. Свойства компонента TSQLDataSet

Свойство

Описание

Active

Определяет, является ли набор данных активным. Только активный набор данных может работать с записями таблиц. Свойство имеет тип Boolean. Если значение true — набор данных активен, иначе — неактивен

CommandText

Содержит текст запроса SQL на выполнение каких-либо действий о данными. Имеет тип String

CommandType

Определяет тип набора данных. Значение свойства имеет тип TSQLCommandType. Свойство может принимать следующие значения:

CtQuery — обычный SQL-запрос;

CtTable - таблица целиком, при этом автоматически будет сгенерирован запрос на выборку всех записей таблицы по всем полям;

CtStoredProc — процедура, хранимая на сервере базы данных

DataSource

Указывает источник данных для этого набора данных. Имеет тип TdataSource

MaxBlobSize

Определяет максимальный размер BLOB-полей. Имеет тип
Integer

ObjectView

Включает или выключает иерархические представления для вложенных полей. Имеет тип Boolean

ParamCheck

Указывает, нужно ли обновлять список параметров при изменении текста запроса (свойство CommandText). Имеет тип Boolean

Params

Определяет список параметров запроса. Имеет тип TParams

SortFieldNames

Содержит список наименований полей таблицы, по которым будет производиться сортировка набора данных. Имена полей разделяются точкой с запятой. Имеет тип String. Свойство активно только при установленном типе набора данных CtTable в свойстве CommandType

SQLConnection

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

Tag

Свойство, которое может использоваться по усмотрению программиста, и у него нет специального назначения. Многие компоненты содержат это свойство. Свойство имеет тип Integer

Компонент TSQLQuery — определяет однонаправленный запрос к базе данных. В табл. 16.6 приводятся его основные свойства и их описания.



Свойства компонента TSQLQuery



Таблица 16.6. Свойства компонента TSQLQuery

Свойство

Описание

Active

Определяет, является ли запрос активным. Только активный запрос может работать с записями таблиц. Свойство имеет тип Boolean. Если значение true — запрос активен, иначе — неактивен

DataSource

Указывает источник данных для этого набора данных. Имеет тип
TdataSource .

MaxBlobSize

Определяет максимальный размер BLOB-полей. Имеет тип Integer

ObjectView

Включает или выключает иерархические представления для вложенных полей. Имеет тип Boolean

ParamCkeck

Указывает, нужно ли обновлять список параметров при изменении текста запроса (свойство CommandText). Имеет тип Boolean

Params

Определяет список параметров запроса. Имеет тип TParams

SQL

В этом свойстве указывается текст SQL-запроса. Имеет тип
Tstrings

SQLConnection

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

Tag

Свойство, которое может использоваться по усмотрению программиста, и у него нет специального назначения. Свойство имеет тип Integer

Компонент TSQLStoredProc — предназначен для работы с процедурами, хранимыми на сервере базы данных. При получении данных ведет себя однонаправленно. Табл. 16.7 дает описание основных свойств этого компонента.



Определяет список параметров процедуры. Имеет



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

Свойство
Описание
Params
Определяет список параметров процедуры. Имеет тип Tparams
SQLConnection
Содержит имя компонента TSQLConnection, с помощью которого будет осуществляться соединение с базой данных. Имеет
тип TSQLConnection
Tag
Свойство, которое может использоваться по усмотрению программиста, и у него нет специального назначения. Свойство имеет тип Integer
Компонент TSQLTablе — задает таблицу баз данных и представляет собой однонаправленный набор данных. В табл. 16.8 перечислены основные свойства компонента.



Свойства компонента TSQLStoredProc



Таблица 16.7. Свойства компонента TSQLStoredProc

Свойство

Описание

Active

Определяет, является ли процедура, хранимая на сервере, активной. Имеет тип Boolean

MaxBlobSize

Определяет максимальный размер BLOB-полей. Имеет тип Integer

ObjectView

Включает или выключает иерархические представления для вложенных полей. Имеет тип Boolean

ParamCheck

Указывает, нужно ли обновлять список параметров при изменении процедуры. Имеет тип Boolean



Свойства компонента TSQLTable



Таблица 16.8. Свойства компонента TSQLTable

Свойство

Описание

Active

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

IndexFieldNames

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

IndexName

Содержит имя индекса, по которому будет произведена сортировка набора данных. Имеет тип String

MasterSource

Содержит имя главного источника данных при организации связи таблиц главная-подчиненная (master-detail). Имеет тип
TdataSource

MasterFields

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

MaxBlobSize

Определяет максимальный размер BLOB-полей. Имеет тип
Integer

ObjectView

Включает или выключает иерархические представления для вложенных полей. Имеет тип Boolean

SQLConnection

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

TableName

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

Tag

Свойство, которое может использоваться по усмотрению программиста, и у него нет специального назначения. Свой-
ство имеет тип Integer

Компонент TSQLMonitor — предназначен для организации наблюдения за работой компонентов доступа к данным. В табл. 16.9 приведены основные свойства этого компонента.



Свойства компонента TSQLMonitor



Таблица 16.9. Свойства компонента TSQLMonitor

Свойство

Описание

Active

Определяет, является ли монитор активным. Свойство имеет тип
Boolean

AutoSave

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

FileName

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

SQLConnection

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

Tag

Свойство, которое может использоваться по усмотрению программиста, и у него нет специального назначения. Свойство имеет тип Integer

TraceList

Данное свойство содержит журнал событий. Имеет тип Tstrings

Компонент TSQLClientDataSet — представляет собой клиентский набор данных. Описание его основных свойств представлено в табл. 16.10.



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



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

Свойство
Описание
IndexFieldNames
Содержит список наименований полей таблицы, по которым будет производиться сортировка набора данных. Имена полей разделяются точкой с запятой. Имеет тип String
IndexName
Содержит имя индекса, по которому будет произведена сортировка набора данных. Имеет тип String
MasterSource
Содержит имя главного источника данных при организации связи таблиц главная-подчиненная (master-detail). Имеет тип
TdataSource
MasterFields
Содержит имена полей, по которым осуществляется связь между главной и подчиненной таблицей. Имеет тип String
ObjectView
Включает или выключает иерархические представления для вложенных полей. Имеет тип Boolean
Options
Содержит параметры работы с данными. Имеет тип
TproviderOptions
PacketRecord
Определяет количество записей в одном пакете данных. Имеет тип Integer. Возможные значения:
-1 — все записи;
>0 — конкретное число записей;
0 — в пакет будут включаться только мета-данные
Params
Определяет список параметров набора данных. Имеет тип
Tparams
Readonly
Определяет способ доступа к записям. Имеет тип Boolean. Если значение свойства — true, то данные доступны только для чтения. Если значение — false, то можно изменять существующие данные и записывать новые
Tag
Свойство, которое может использоваться по усмотрению программиста, и у него нет специального назначения. Свойство имеет тип Integer
UpdateMode
Определяет способ поиска записи, которую необходимо обновить. Имеет тип TupdateMode. Может принимать значения:

UpWhereAll — искать по всем полям;

UpWhereChanged — искать по ключевым и измененным полям;

UpWhereKeyOnly — искать только по ключевым полям



Имеет тип String. При установленном



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

Свойство
Описание
CommandText
Содержит текст SQL-запроса. Имеет тип String. При установленном значении свойства FileName это свойство игнорируется. Свойство игнорируется также и в случае, когда в свойстве Options сброшен флажок poAllowCommandText
CommandType
Определяет тип набора данных. Значение свойства имеет тип TSQLCommandType. Свойство может принимать следующие значения:

Ct Query — обычный SQL-запрос;

CtTable — таблица целиком, при этом автоматически будет сгенерирован запрос на выборку всех записей таблицы по всем полям;

CtStoredProc — процедура, хранимая на сервере базы данных
ConnectionName
Содержит имя конфигурации. Имеет тип String. Является аналогом свойства AliasName в Delphi
Constraints
Определяет накладываемые ограничения на значение на уровне одной записи. Имеет тип Tconstraints
DBConnection
Определяет имя компонента TSQLConnection, с помощью которого будет производиться работа с базой данных. Имеет тип TSQLConnection
DisableStringTrim
Определяет, нужно ли удалять лишние пробелы в конце строки при вставке ее в таблицу базы данных. Имеет тип Boolean
FetchOnDemand
Определяет, должно ли приложение получать данные по мере необходимости. Имеет тип Boolean
FieldDefs
Содержит список полей, определяющих набор данных. Имеет тип TfieldDefs
FileName
Содержит имя файла, в котором хранятся кэшируемые данные. Имеет тип String
Filter
Задает фильтр, по которому будут выбираться данные из таблицы. Имеет тип String
Filtered
Определяет, включено или выключено свойство Filter. Имеет тип Boolean
FilterOptions
Определяет параметры фильтрации записей таблицы. Имеет
тип TfilterOptions
IndexDefs
Содержит определения индексов. Имеет тип TindexDefs



Свойства компонента TSQLClientDataSet



Таблица 16.10. Свойства компонента TSQLClientDataSet

Свойство

Описание

Active

Определяет, является ли набор данных активным. Свойство имеет тип Boolean

Aggregates

Содержит список доступных агрегатов. Имеет тип
Taggregates

AggregatesActive

Определяет, нужно ли производить вычисления агрегатов. Имеет тип Boolean

AutoCalcFields

Определяет, нужно ли генерировать событие OnCalcFields и обновлять содержимое полей. Имеет тип Boolean. Принимает значение true при открытии набора данных, при переключении набора данных в состояние DsEdit или при передаче фокуса другому компоненту на форме



Основные операторы определения данных



Таблица 17.1. Основные операторы определения данных

Оператор

Описание

CREATE TABLE

Предназначен для создания таблицы базы данных

ALTER TABLE

Удаляет таблицу

DROP TABLE

Изменяет структуру таблицы

CREATE INDEX

Создает индекс

DROP INDEX

Удаляет индекс

CREATE VIEW

Создает представление

DROP VIEW

Удаляет представление

Операторы управления данными — предназначены для управления привилегиями доступа к данным. Основные операторы представлены в табл. 17.2.



Основные операторы управления данными



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

Оператор

Описание

GRAND

Назначает привилегии пользователям

REVOKE

Удаляет привилегии пользователей

Операторы манипулирования данными — предназначены для работы с записями таблиц. Основные операторы кратко описаны в табл. 17.3.



Основные операторы манипулирования данными



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

Оператор

Описание

SELECT

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

UPDATE

Предназначен для изменения и обновления записей

INSERT

Вставляет новые записи в таблицу

DELETE

Удаляет записи из таблицы

Использование приведенных в табл. 17.1—17.3 операторов мы рассмотрим далее в этой главе.

Примечание

Обратите внимание на тот факт, что проверка синтаксиса запроса происходит только во время работы приложения. Компилятор Kylix не обрабатывает SQL-запросы во время разработки приложения.

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

Осталось отметить, что регистр букв команд SQL-запросов не влияет на их выполнение. Мы для наглядности будем применять заглавные буквы для операторов языка SQL. Точка с запятой также не обязательна в конце каждой SQL-команды. Элементы списков, такие как имена таблиц и полей, обязательно разделяются запятыми. Имена таблиц и полей заключаются в одинарные или двойные кавычки, например 'Number', "Table 1". В случае если имя не содержит пробелов и других специальных символов, его можно не заключать в кавычки.

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


Основные статистические функции



Таблица 17.4. Основные статистические функции

Функция

Описание

AVG ( )

Получение среднего значения

COUNT ( )

Определяет количество значений

COUNT ( * )

Определяет количество ненулевых значений

MAX ( )

Максимальное значение

MIN( )

Минимальное значение

SUM ( )

Сумма значений

Строковые функции — функции, предназначенные для работы со строковыми значениями. Наиболее часто используемые из них представлены в табл. 17.5.



S FROM N1 TO



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

Функция

Описание

SUBSTRING ( S FROM N1 TO N2)

Выделяет из строки S подстроку, начиная с символа N1 и заканчивая символом N2

TRIM(S)

Удаляет в начале и конце строки S лишние пробелы

UPPER (S)

Преобразует символы строки S в символы верхнего регистра


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


Основные строковые функции



Таблица 17.5. Основные строковые функции

Функция

Описание

| |

Слияние (конкатенация) двух строк

САSТ (<Выражение> AS <Тип>)

Приводит выражение <Выражение> к типу <Тип>

LOWER ( S )

Преобразует символы строки S в символы нижнего регистра



Определения полей



Таблица 18.1. Определения полей

Имя поля

Описание

Тип данных

Размер

ID

счетчик

ftAutoInc

0

Name

имя клиента

FtString

50



Поля определяемые в свойстве ChlidDefs



Таблица 18.2. Поля, определяемые в свойстве ChlidDefs

Имя поля

Описание

Тип данных

Размер

ID

счетчик

FtAutoInс

0

OrderName

описание заказа

FtString

20

Price

цена заказа

FtCurrency

0

Осталось только на основе описанных определений создать набор данных (щелкнув правой кнопкой мыши и выбрав пункт выпадающего меню Create Data Set). Затем сохранить в файл (Save to MyBase xml table) и на основе этих определений явным образом создать поля (дважды щелкнув на Clients, затем щелнув правой кнопкой мыши и выбрав пункт Add all fields). Откроем созданный xml-файл (листинг 18.2).



Базовые классы CLX



Таблица 19.1. Базовые классы CLX

Класс

Возможности класса

TObject

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

TCoraponent

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

TGraphicControl

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

TWidgetControl

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

TCustomControl

Данный класс является потомком TWinControl и дополняет его областью вывода (канвой). В этот класс добавлен метод Paint. Рекомендуется использовать такой класс для создания пользовательских оконных компонентов



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



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

Класс

Возможности класса

TCustomClassName

Библиотека визуальных компонентов содержит несколько классов, у которых не все свойства объявлены как published, т. е. доступны из других модулей, но на основе данных классов можно создавать классы-потомки, в которых можно объявлять данные свойства. Таким образом, разработчик может создать несколько идентичных классов на основе одного класса ClassName и в каждом из этих классов определять необходимые свойства из набора предопределенных свойств

TComponentName

Позволяет создавать компоненты-потомки, предками которых являются обычные компоненты или классы CLX Kylix. Таким образом, если перед разработчиком стоит задача расширить возможности какого-либо компонента Kylix, можно использовать данный класс

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

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


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



Таблица 19.2. Размещение методов компонента в различных секциях

Секция

Размещаемые методы

Private

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

Protected

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

Public

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

Published

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


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


Типы файлов пакетов



Таблица 20.1. Типы файлов пакетов

Расширение файла

Содержание файла

dpk

Исходный файл пакета, содержащий список модулей данного пакета. Он создается при запуске редактора пакета (по своему назначению и функциональности похож на файл проекта Kylix .dpr)

dcp

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

dpu

Двоичный файл, содержащий текст модуля, находящийся в пакете. Для каждого модуля создается один файл dpu

so

Файл пакета, используемого во время работы приложения. Этот файл является аналогом библиотеки разделяемых объектов (so) Linux, которая содержит специфичные характеристики среды Kylix. Если это пакет времени выполнения, то вы должны передавать данный пакет пользователю вместе с файлом приложения. В случае, если это пакет разработки, он должен распространяться среди программистов, использующих его для написания приложений


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


Основные runtime пакеты Kylix



Таблица 20.2. Основные runtime пакеты Kylix

Имя файла пакета

Модули, входящие в пакет

bplclx.so.6

Classes, Consts, Contnrs, IniFiles, MaskUtils, QactnList, QButtons, Qclipbrd, QcomCtrls, QcomStrs, QConsts, Qcontrols, QDialogs, QextCtrls, QForms, Qgraphics, QGrids, QImgList, QMask, QMenus, Qsearch, QStdActns, QStdCtrls, QStyle, QTypes, SyncObjs, TypInfo

bpldataclx. so. 6

DB, DBClient, DBCommon, DBConnAdmin, DBConsts, DBXpress, DSIntf, MidConst, Midas, Provider, QDBCtrls, QDBGrids, SqlConst, SqlExpr

Рассмотрим теперь пакеты разработки, которые поставляются вместе с Kylix (табл. 20.3). Напомним, что данные пакеты используются IDE Kylix для установки компонентов в палитру компонентов, задания свойств компонентов и многого другого.



Основные designtime пакеты Kylix



Таблица 20.3. Основные design-time пакеты Kylix

Имя файла пакета

Вкладки палитры компонентов

dclstd

Standard, Additional, Common Controls, Dialogs

dcldbdesign

Data Controls, dbExpress, Data Access

dclnet

Internet

dclindy

Indy Clients, Indy Servers, Indy Mlsc

Все вышеперечисленные пакеты разработки вызывают при своей работе пакеты времени выполнения. Например, пакет dclstd вызывает bplclx. Первый пакет содержит код, который позволяет делать доступными многие компоненты, входящие во второй пакет на палитре компонентов Kylix.

В дополнение ко всем рассмотренным выше пакетам вы можете устанавливать в IDE пакеты собственного производства, а также пакеты, созданные другими разработчиками. Пакет Kylix dclusr является стандартным контейнером для новых компонентов.

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


Директивы компилятора пакетов



Таблица 20.4. Директивы компилятора пакетов

Директива

Применение

{$IMPLICITBUILD OFF}

Служит для предотвращения перекомпиляции пакета. Применяется в тех случаях, когда пакет не изменяется

{$G-} или {IMPORTEDDATA OFF}

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

{ $WEAKPACKAGEUNIT ON}

Когда в файле модуля встречается данная директива, компилятор опускает данный модуль из файла so и создает локальную копию модуля тогда, когда это необходимо (при вызове данного модуля из приложения или из пакета). Модуль, имеющий данную директиву, называется слабым пакетом (weakly packaged)

{ $DENYPACKAGEUNIT ON }

То же, что и { IMPORTEDDATA OFF}

{$DESIGNONLY ON}

Компилирует пакет как пакет design-time

{$RUNONLY ON}

Компилирует пакет как пакет runtime

Рассмотрим более подробно директиву {$WEAKPACKAGEUNIT}.

Слабый пакет применяется, когда пакет ссылается на отсутствующие библиотеки so. Данная директива используется очень редко. Она позволяет обрабатывать специфические ситуации. Например, есть два компонента (в разных пакетах), которые обращаются к одному и тому же интерфейсному модулю so. Если приложение будет использовать сразу оба компонента, это приведет к загрузке двух экземпляров so, при этом могут возникнуть конфликты инициализации и использования глобальных переменных.

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

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