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

         

Ключи для компиляции пакета из командной строки



Таблица 20.5. Ключи для компиляции пакета из командной строки

Ключ

Назначение

-$G-

Отключает создание ссылок на импортируемые данные. Использование этого ключа повышает эффективность доступа к памяти, но не позволяет компилировать пакеты, внутри которых имеются ссылки на переменные других пакетов

-LEpath

Определяет каталог, в котором будет расположен файл пакета cppackage.so


-LNpath

Определяет каталог, в котором будет расположен файл пакета package. dcp

-LUpackage

За этим ключом перечисляются файлы использующихся пакетов

-Z

Предотвращает в дальнейшем перекомпиляцию данного пакета

Примечание
Использование ключа -$G- предотвращает возможность использования пакета другими пакетами приложения.

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


Части в которые сгруппированы компоненты CLX



Таблица 21.1. Части, в которые сгруппированы компоненты CLX

Часть

Описание

VisualCLX

Межплатформенные графические компоненты и графика. Компоненты этой части могут различаться под Windows и Linux

DataCLX

Клиентские компоненты для доступа к данным. Код этих компонентов одинаков для Linux и Windows

NetCLX

Компоненты Интернета, включающие Apache DSO и CGI WebBroker. Они одинаковы для Linux и Windows

BaseCLX

Библиотека времени выполнения, включающая модуль Classes . pas. Код одинаков для Linux и Windows

В VisualCLX Widgets используется вместо оконных компонентов VCL. В CLX TWidgetControl используется как TWinControl в VCL. Другие компоненты (такие как TScrollingWidget) имеют соответствующие имена. Вам не нужно самостоятельно изменять TWinControl на TWidgetControl. В файле ресурсов OControls.pas имеются объявления типов, такие как:

TWinControl = TWidgetControl;

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

Названия модулей и расположение отдельных классов в CLX отличаются от VCL. Вам придется самостоятельно модифицировать разделы uses для исключения модулей, которых нет в Куliх и смены имен на имена модулей Kylix.

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


Различие возможностей Delphi и Kytix



Таблица 21.2. Различие возможностей Delphi и Kytix

Delphi/Windows возможность

Kylix/Llnux возможность

Вызовы Windows API

Методы CLX, вызовы Qt, вызовы libc или вызовы других системных библиотек

Компоненты СОМ (включая ActiveX)

Не поддерживаются

Компоненты ADO

Компоненты доступа к базам данных

Сообщения Windows

События Qt

Winsock

Сокеты BSD

Messaging Application Programming Interface (MAPI), включая стандартную библиотеку функций сообщений Windows

SMTP/POP3 позволяют вам отсылать, получать и сохранять сообщения e-mail

Компоненты наследования (компоненты, расположенные на вкладке Win 3.1 палитры компонентов)

Не поддерживаются

В Kylix эквивалентом файлов dll Windows являются файлы библиотек разделяемых объектов so, которые содержат независимый от расположения код (position-independent code, PIC). Это приводит к следующему:

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


В Kylix имеются два модуля,



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

Модуль Delphi
Модуль Kylix
Grids
Qgrids
HelpIntfs
HelpIntfs
ImgList
QimgList
IniFiles
IniFiles
Mask
Qmask
MaskUtils
MaskUtils
Masks
Masks
Math
Math
Menus
Qmenus
Midas
Midas
MidConst
MidConst
Printers
QPrinters
Provider
Provider
Qt
Qt
Search
Qsearch
Sockets
Sockets
StdActns
QStdActns
StdCtrls
QStdCtrls
SqlConst
SqlConst
SqlExpr
SqlExpr
SqlTimSt
SqlTimSt
StdConvs
StdConvs
SyncObjs
SyncObjs
SysConst
SysConst
SysInit
SysInit
System
System
SysUtils
SysUtils
Types
Types и QTypes
TypInfo
TypInfo
VarCmplx
VarCmplx
Variants
Variants
VarUtils
VarUtils
В Kylix имеются два модуля, эквивалентов для которых нет в Delphi. Это модули:

DirSel — отвечает за выбор каталога;
QStyle — отвечает за графический интерфейс пользователя.
Табл. 21.4 содержит список модулей, которые не поддерживаются средой Kylix, т. к. содержат объекты, специфичные для среды Windows.



Совместимые модули Delphi и Kylix



Таблица 21.3. Совместимые модули Delphi и Kylix

Модуль Delphi

Модуль Kylix

ActnList

QactnList

Buttons

Qbuttons

CheckLst

QcheckLst

Classes

Classes

Clipbrd

Qclipbrd

ComCtrls

QcomCtrls

Consts

Consts, QConsts и RTLConsts

Contnrs

Contnrs

Controls

Qcontrols

ConvUtils

ConvUtils

DateUtils

DateUtils

DB

DB

DBActns

QDBActns

DBClient

DBClient

DBCommon

DBCommon

DBConnAdmin

DBConnAdmin

DBConsts

DBConsts

DBCtrls

QDBCtrls

DBGrids

QDBGrids

DBLocal

DBLocal

DBLocalS

DBLocalS

DBLogDlg

DBLogDlg

DBXpress

DBXpress

Dialogs

Qdialpgs

DSIntf

DSIntf

ExtCtrls

QExtCtrls

FMTBCD

FMTBCD

Forms

QForms

Craphicis

QGraphics



Модули VCL не поддерживаемые средой Kylix



Таблица 21.4. Модули VCL, не поддерживаемые средой Kylix

Модуль VCL

Причина, по которой он не поддерживается в Kylix

ADOConst

Нет ADO

ADODB

Нет ADO

AppEvnts

Нет объекта TapplicationEvent

AxCtrls

Нет СОМ

BdeConst

Нет ВDЕ

ComStrs

Нет СОМ

CorbaCon

Нет Corba

CorbaStd

Нет Соrbа

CorbaVCL

Нет Сorbа

CtlPanel

Нет панели управления Windows

DataBkr

Может появиться в более поздних версиях

DBCGrids

Нет ВDЕ

DBExcept

Нет ВDЕ

DBInpReq

Нет ВDЕ

DBLookup

Устарело

DbOleCtl

Нет СОМ

DBPWDlg

Нет ВDЕ

DBTables

Нет ВDЕ

DdeMan

Нет DDE

DRTable

Нет ВDЕ

ExtDlgs

Нет графических диалогов

FileCtrl

Устарело

MConnect

Нет СОМ

Messages

Специфичная Windows-функция .

MidasCon

Устарело

MPlayer

Медиа-проигрыватель Windows

Mtsobj

Нет СОМ

MtsRdm

Нет СОМ



по которой он не поддерживается



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

Модуль VCL
Причина, по которой он не поддерживается в Kylix
Mtx
Нет COM
mxConsts
Нет COM
ObjBrkr
Может появиться в более поздних версиях
OleConstMay
Нет СОМ
OleCtnrs
Нет СОМ
OleCtrls
Нет СОМ
OLEDB
Нет СОМ
OleServer
Нет СОМ
Outline
Устарело
Registry
Специфичная для Windows поддержка системного реестра
ScktCnst
Заменено на Sockets
ScktComp
Заменено на Sockets
SConnect
Неподдерживаемый протокол связи
SvcMgr
Поддержка сервисов Windows NT
Tabnotbk
Устарело
Tabs
Устарело
ToolWin
Не поддерживается
VGLCom
Нет СОМ
WebConst
Константы Windows
Windows
Специфичные для Windows виртуальные коды клавиш



Linux не использует расширения имен



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

Отличие

Описание

Расширения имен файлов

Linux не использует расширения имен файлов для определения типов файлов или для ассоциаций файлов с приложениями

Права на файлы

В Linux с файлами и каталогами сопоставлены права на чтение, запись и выполнение для владельца файлов, групп пользователей и отдельных пользователей. Например, -rwxr-xr-x обозначает "слева направо":

• — тип файла (- — обычный файл, d — директорий, I — ссыпка);

rwx— права для владельца файла (r — чтение, w — запись, х — запуск);

r-х — права для группы пользователей (х — выполнение, r— чтение);

r-х — права для всех остальных пользователей (чтение и выполнение).

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

Утилита make

Утилита фирмы Borland make не доступна в среде Linux. Вместо нее вы можете использовать собственную утилиту Linux GNU make

Многозадачность
Linux полностью поддерживает многозадачность. Вы можете запустить несколько различных программ (называемых процессами Linux) одновременно. Вы можете запустить любой из процессов в фоновом режиме. Для этого используйте символ & после имени выполняемого файла

Пути к файлам

Для указания пути к файлу в Linux используется прямой слэш 7", в то время как в DOS и Windows используется обратный слэш "V

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

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


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


Отличия Linux и Windows



Таблица 21.5. Отличия Linux и Windows

Отличие

Описание

Чувствительность к регистру букв в именах файлов

В Linux заглавные буквы не являются эквивалентом прописных букв. Таким образом, файлы Test.txt и файл test.txt — разные

Символ конца строки

В Windows строки текста завершаются двумя байтами ASCII: 13 и 10 (перевод строки и переход на начало строки), в Linux — только одним переходом на начало строки. При переносе кода из Windows помните об этом отличии

Символ конца текстового файла

В DOS и Windows символьное значение #26 (комбинация клавиш <Ctrl>+<Z>) распознается как конец текстового файла. Все, что находится после этого символа, не рассматривается системой как текст. Среда Linux не имеет специального символа, обозначающего конец текстового файла. Текстовые данные завершаются в конце файла



в Linux являются файлы скриптов



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

Отличие

Описание

Пакетные файлы и файлы скриптов оболочки



Эквивалентом пакетных bat-файлов Windows в Linux являются файлы скриптов оболочки. Файлы скриптов — это текстовые файлы, содержащие инструкции и команды. Такие файлы сохраняются и делаются выполняемыми с помощью команды chmod +x <имя файла скриптах>. Для выполнения этого файла достаточно набрать его имя и нажать <Enter>

Подтверждение команды

В DOS и Windows, если вы хотите удалить файл или папку, система запрашивает подтверждение "Вы уверены, что хотите удалить файл или папку?". Linux обычно не выдает такого запроса, а просто удаляет файл или папку. Поэтому будьте особенно внимательны при удалении файлов или папок

Обратная связь с командой

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

Ключи команд

Linux использует дефис "-"для ключей команд и двойной дефис "--" — для множественных опций команды, в то время как DOS и Windows используют слэш "/" или дефис "*"

Файлы конфигурации

В Windows сведения о конфигурации системы хранятся в системном реестре и в файлах, таких как autoexec.bat. В Linux файлы конфигурации созданы как скрытые файлы, имена которых начинаются с точки. Многие из них находятся в каталоге /etc и в вашем домашнем каталоге /home. Кроме того, для хранения системной информации Linux использует переменные среды, такие как LD_LIBRARY_PATH (путь поиска файлов библиотек), НОМЕ (ваш домашний каталог), TERM (тип терминала: xterm, vt100, console), SHELL (путь к файлам оболочки), USER (ваше имя для входа в систему), PATH (список путей к файлам программ). Эти переменные определяются в оболочке или в re-файлах, например bashrc

Динамически присоединяемые библиотеки

В Linux используются файлы разделяемых объектов so, а в Windows — файлы динамически присоединяемых библиотек dll

Буква, обозначающая имя накопителя

В Windows для указания накопителя используется буква, например А: для накопителя на гибких дисках. В Linux такие имена не используются. Об организации файловой системы Linux см. Приложение 3

Исполняемые файлы

В Linux исполняемые файлы не нуждаются в расширении. В Windows такие файлы должны иметь расширение ехе



Методы для подмены системных сообщений Windows



Таблица 21.6. Методы для подмены системных сообщений Windows

Метод

Описание

ChangeBounds

Используется, когда компонент, относящийся к классу TwidgetControl, изменяет свой размер. Является приблизительным аналогом системных сообщений WM_SIZE и WM_MOVE в Windows

ChangeScale

Вызывается автоматически при изменении размера оконного компонента. Используется для смены масштаба формы и всех ее оконных компонентов при смене разрешения экрана или размера шрифта. Так как этот метод изменяет значения свойств Top, Left, Width и Height у всех оконных компонентов, он изменяет положение компонентов и их дочерних элементов в зависимости от размеров

ColorChanged

Вызывается в случае, когда цвет оконного компонента изменился

CursorChanged

Вызывается, когда курсор (указатель мыши) изменяет свою форму

EnabledChanged

Вызывается, когда приложение изменяет состояние активности окна или оконного компонента (то есть когда изменяется значение свойства Enabled)

FontChanged

Приблизительный аналог системного сообщения WM_FONTCHANGE в Windows. Вызывается, когда изменя-ется набор шрифтов

PaletteChanged

Вызывается в случае смены системной палитры. Является приблизительным аналогом WM_PALETTE CHANGED

ShowHintChanged

Вызывается при показе и скрытии всплывающих подсказок (hints)

StyleChanged

Вызывается при смене стиля окна или оконных элементов GUI. Является аналогом системного сообщения WM_STYLECHANGED в Windows

TabStopChanged

Вызывается при смене порядка обхода компонентов по клавише табуляции <Таb>

VisibleChanged

Вызывается при смене состояния видимости оконного компонента

WidgetDestroyed

Вызывается при уничтожении окна


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


Соответствие компонентов доступа к данным



Таблица 21.7. Соответствие компонентов доступа к данным

Компоненты InterBase Express

Компоненты BDE

Компоненты ADO

Компоненты dbExpress

TIBDatabase

Tdatabase

TADOConnection

TSQLConnection

TIBTable

Ttable

TADOTable

TSQLTable

TIBQuery

Tquery

TADOQuery

TSQLQuery

TIBStoredProc

TstoredProc

TADOStoredProc

TSQLStoredProc

TIBDataSet


TADODataSet

TSQLDataSet

Наборы данных dbExpress (TSQLTable, TSQLQuery, TSQLStoredProc и TSQLDataSet) являются, по сравнению со своими аналогами, более ограниченными, так, они поддерживают не редактирование данных, а только прямое (одностороннее) перемещение по записям.

Из-за этих недостатков многие приложения dbExpress не работают напрямую с наборами данных dbExpress. Чаще всего такие приложения соединяют наборы данных dbExpress с клиентскими наборами данных, которые размещают записи из таблиц базы данных в памяти и обеспечивают поддержку редактирования и перемещения по записям.

Примечание

При создании очень простых приложений вы можете воспользоваться компонентом TSQLClientDataSet вместо соединения набора данных dbExpress с клиентским. Но для большинства приложений рекомендуется использовать наборы данных dbExpress, соединенные с компонентом TClientDataSet, представляющим собой клиентский набор данных.

Отличия на уровне интерфейса пользователя

Как уже было сказано ранее, компоненты CLX, отображающие данные, разработаны таким образом, чтобы быть наиболее похожими на соответствующие компоненты Windows.

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

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

Если вы связали набор данных dbExpress с клиентским набором данных, то элементы интерфейса пользователя, связанные с редактированием и перемещением по записям, должны работать. Все, что вам нужно в этом случае — это переключить их на клиентский набор данных. Главной проблемой будет только вопрос обновления данных, записываемых в базу данных. По умолчанию большинство наборов данных в Windows записывают обновленные данные на сервер базы данных автоматически, после их пересылки (например, когда пользователь перемещается на другую запись таблицы). С другой стороны, клиентские наборы данных всегда кэшируют все обновления данных в памяти. Для того чтобы успешно разрешить эту проблему, прочитайте разд. "Обновление данных в приложениях dbExpress", который представлен далее в этой главе.

Перенос приложений баз данных в Linux

Перенос готового приложения базы данных на драйверы dbExpress позволит вам создать межплатформенное приложение, которое будет работать как под управлением Windows, так и под Linux. Из-за того, что dbExpress использует другую технологию, вам придется произвести некоторые изменения в приложении. Трудность переноса приложения из Windows в Linux зависит от типа используемой в приложении технологии. Наиболее трудными для переноса являются те приложения, которые применяют специфичные для Windows технологии, такие как ADO. Наиболее простыми для переноса являются приложения, использующие технологию Delphi для работы с базами данных.

Осуществите восемь следующих шагов для переноса приложения из Windows в Linux:

1. Рассмотрите, где располагается база данных. Технология dbExpress обеспечивает драйверы для работы с базами данных Oracle, Interbase, DB2 и MySQL. Следовательно, данные должны находиться на одном из этих SQL-серверов. Если вы использовали другие серверы баз данных, вам придется преобразовать данные к одному из поддерживаемых типов. Для этого, если у вас есть Delphi 5 версии Enterprise, вы можете воспользоваться утилитой Data Pump, которая поможет преобразовать формат локальных данных таких платформ, как Paradox, dBase и FoxPro в один из поддерживаемых. (Для подробной инструкции работы с утилитой смотрите файл помощи datapump.hlp в каталоге Program Files\Common Files\Borland\Shared\BDE в Windows).

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

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

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

4. Для каждого набора данных оригинального приложения добавьте отдельный набор данных dbExpress, компонент TDataSetProvider и компонент TClientDataSet. Дайте этим компонентам понятные имена. Установите свойство ProviderName компонента TClientDataSet аналогично имени компонента TdataSetProvider и свойство DataSet компонента TDataSetProvider в dbExpress. Смените свойство DataSet во всех компонентах для работы с данными, которые ссылались на оригинальный набор данных, так, чтобы они ссылались на клиентский набор данных.

5. Установите свойства нового набора данных в соответствии с оригинальным набором данных:

если оригинальным набором данных был компонент TTable,TADOTable или TIBTable, задайте свойствоTableName компонента TSQLTable таким же, как и свойство TableName оригинального набора данных. Также скопируйте значения всех свойств, используемых для установки типа связи и определения индексов. Свойства, устанавливающие границы и фильтры, должны быть установлены в клиентском наборе данных, а не в компоненте TSQLTable;
если оригинальным набором данных был компонент TQuery, TADOQuery или TIBQuery, установите свойство SQL компонента TSQLQuery равным значению свойства SQL оригинального набора данных. Задайте свойство Params компонента TSQLQuery в соответствии со значением свойства Params или Parameters оригинального набора данных. Если вы используете свойство DataSource для установки связей, скопируйте его значение тоже;
если оригинальным набором данных был компонент TstoredProc, TADOStoredProc или TIBStoredProc, установите свойство StoredProcName компонента TSQLStoredProc равным значению свой-
ствa StoredProcName или ProcedureName оригинального набора данных, а свойство Params компонента TSQLStoredProc равным значению свойства Params или Parameters оригинального набора данных.

6. Для всех компонентов, предназначенных для соединения с базой данных в oригинальном приложении (TDatabase, TIBDatabase или TADOConnection), добавьте компонент TSQLConnection в новый модуль данных. Нужно также добавить компонент TSQLConnection для каждого сервера баз данных, с которым будет осуществляться соединение без использования компонента соединения с базой данных (например, использующих свойство ConnectionString в наборе данных ADO или свойство DatabaseName
в наборе данных BDE).

7. Для каждого набора данных dbExpress, которые созданы в четвертом шаге, установите их свойства SQLConnection в значение компонентов TSQLConnection, соответствующих нужной базе данных.

8. Для каждого компонента TSQLConnection определите информацию, необходимую для установки связи с базой данных. Для этого щелкните дважды на компоненте TSQLConnection, после чего появится редактор соединения (Connection Editor), и установите нужные значения параметров.

Обновление данных в приложениях dbExpress

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

Если оригинальное приложение не кэшировало данные, вы можете сымити-ровать поведение набора данных Windows с помощью собственного кода, который будет обновлять данные на сервере всякий раз после их изменения. Для этого нужно написать обработчик события AfterPost клиентского набора данных, как показано в листинге 21.5.



базы данных dbExpress



Таблица базы данных dbExpress

SQLMonitor

SQL-монитор

Прерывает сообщения, проходящие между компонентом SQLConnection и сервером базы данных, и сохраняет их в списке



может содержать разнотипные



Таблица может содержать разнотипные данные. Например, пусть таблица состоит из четырех полей: Number, Year, Name и Surname. Эти поля будут обозначать: порядковый номер записи, год рождения, имя и фамилию людей, занесенных в нашу таблицу. Таким образом, первое и второе поле будут

числовыми, а третье и четвертое — символьными. Заполняя данными эти поля, мы будем заносить записи в таблицу базы данных.

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

Ключ — это одно или несколько полей, содержащих уникальные для каждой записи данные.

Ключевое поле — это поле, которое определяет ключ.

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

Ключи можно поделить нa простые и составные:

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

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

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

Среда Kylix поддерживает таблицы баз данных InterBase, Oracle, DB2 и MySQL. Если вы хотите использовать таблицы других типов, вам придется написать собственный драйвер для работы с ними либо преобразовать эти таблицы в поддерживаемые средой Kylix.

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


Различные дистрибутивы Linux иногда размещают



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

Каталоги

Содержание

/var

Log-файлы, сообщения

/proc

Виртуальная файловая система и отчет системы

/tmp

Временные файлы

Примечание

Различные дистрибутивы Linux иногда размещают файлы в других каталогах. Программы-утилиты могут располагаться в каталоге /bin в дистрибутиве Red Hat Linux и в /usr/local/bin в дистрибутиве Debian Linux.

Вы можете получить дополнительную информацию об организации файловой системы в Linux, обратившись по ссылке www.pathname.com.

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


П1 Основные каталоги Linux



Таблица П1. Основные каталоги Linux

Каталоги

Содержание

/

Корневой, верхний, каталог файловой системы Linux

/root

Корневой (домашний) каталог для суперпользователя (root)

/bin

Команды, утилиты

/sbin

Системные утилиты

/dev

Устройства, которые изображены как файлы

/lib

Библиотеки

/home/username

Файлы, принадлежащие пользователю, вошедшему в систему под именем <username>

/opt

Дополнительный каталог

/boot

Ядро, которое запускается при загрузке системы

/etc

Файлы конфигурации

/usr

Приложения, программы. Обычно включает каталоги типа /usr/spool, /usr/man, /usr/include, /usr/iocal

/mnt

Другие медиа-устройства, смонтированные в системе, такие как проигрыватель компакт-дисков (CD-ROM) или флоппи-дисковод (FD-Drive)



со строками



Таблица со строками

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

DrawGrid

баз данных



Таблицы баз данных

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

Рассмотрим структуру таблицы (Рисунок 15.3).



Типы данных


Типы данных

Эта глава представляет обзор типов данных, которые имеются в языке Object Pascal. Мы рассмотрим как простые типы данных, так и структурные, вариантные и процедурные типы данных. Кроме того, кратко остановимся на указателях.

Object Pascal представляет собой строго типизированный язык, который требует особого внимания при объявлении и использовании переменных, процедур и функций.

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

Мы разделим все типы данных языка Object Pascal на пять групп:

простые;
структурные;
указатели;
процедурные;
вариантные.


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


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



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

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



Указатели процедурные и вариантные типы данных



Указатели, процедурные и вариантные типы данных

Кроме рассмотренных выше простых и структурных типов данных, в языке Object Pascal имеется еще несколько типов данных, не относящихся ни к тем, ни к другим. Рассмотрим их.

Указатели

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

Указатели применяют для определения адреса в памяти конкретного объекта, например какой-либо переменной.

Переменные типа "указатель" содержат и изменяют свои значения в процессе выполнения программы.

Указатели бывают типизированными и нетипизированными.

Типизированный указатель — это указатель, который ссылается на данные определенного типа и указан при объявлении указателя или типа указателя.

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

Приведем пример объявления типизированного указателя:

var
X, Y: Integer ; / / X и Y переменные типа Integer
Р: ^Integer ; / / Р - указатель типа Integer

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

Пример объявления нетипизированного указателя:

var
Р: Pointer; / / Р - нетипизированный указатель типа Pointer

Рассмотрим пример использования указателей и поясним на этом примере операции, допустимые над указателями (листинг 2.2)



Установка пакетов компонентов



Установка пакетов компонентов

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

1. В случае, когда вы устанавливаете новый пакет, скопируйте файлы пакета в каталог библиотеки Kylix. Убедитесь, что скопировали все необходимые файлы пакета (имеющие расширения so, dcp, dcu).

2. В главном меню Kylix выберите команду Component/Install Packages либо воспользуйтесь вкладкой Packages диалогового окна свойств проекта, вызываемого командой главного меню Kylix Project/Options (Рисунок 20.3)

3. В вызванном диалоговом окне вы можете увидеть список всех доступных пакетов. Для инсталляции любого пакета, имеющегося в списке, установите флажок напротив наименования пакета. Для удаления пакета из проекта уберите флажок напротив наименования пакета. Для просмотра компонентов, входящих в пакет, щелкните мышкой на имени пакета и нажмите кнопку Components в окне настройки проекта (см. Рисунок 20.1). На Рисунок 20 3 показан список компонентов, входящих в состав пакета Borland Database Components.

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

5. Чтобы удалить пакет из списка, выберите пакет и нажмите кнопку Remove (см. Рисунок 20.1).

Компоненты пакета устанавливаются на вкладке палитры компонентов Kylix.



Установка свойств поля ID в окне Object Inspector



Рисунок 18.5. Установка свойств поля ID в окне Object Inspector



Установка свойств поля Name в окне Object Inspector



Рисунок 18.6. Установка свойств поля Name в окне Object Inspector



В Kylix



в Kylix

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

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

Общий обзор программирования графики в Kylix

Графические компоненты CLX инкапсулируют возможности Qt, которые позволяют достаточно легко добавлять графику в Linux-приложения.

Для рисования в Kylix (так же, как и в Delphi) используется канва объекта, на котором будет производиться рисование.

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

Примечание

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

Главное преимущество канвы объекта в том, что она наиболее эффективно использует ресурсы, и вы можете применять одни и те же методы для вывода графики на экран, принтер или графический образ. Канва объекта доступна программисту только во время работы приложения, таким образом, для обращения к канве нужно использовать команды языка Object Patscal.

Способ отображения графики в вашем приложении зависит от типа объекта CLX, канва которого используется для рисования. Если вы напрямую выводите рисунок на канву объекта управления, изображение будет выведено немедленно.

В то же время, если вы рисуете на канве объекта, находящегося вне экрана, например на канве объекта графического образа TBitmap, изображение не будет отображаться, пока не будет выполнено копирование из графического образа на канву элемента управления.

Примечание

Использование объекта TBitmap в консольных приложениях приведет к исключительной ситуации с выдачей сообщения "Имя проекта: невозможно соединиться с Х-сервером".

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

Черчение — это создание с помощью команд языка Object Pascal особых одиночных графических элементов, например линий и геометрических фигур.

Рисование — это создание готового (полного) графического образа на канве объекта.

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

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


Виртуальные методы



Виртуальные методы

Виртуальные методы, в отличие от статических, поддерживают перегрузку, поэтому вызов таких методов для среды Kylix намного сложнее (заранее неизвестен адрес конкретного вызываемого метода). Для того чтобы решить эту проблему, Kylix строит таблицу виртуальных методов (Virtual Method Table), благодаря которой компилятор может определить адрес метода во время выполнения программы. Такая таблица содержит виртуальные методы не только самого класса или компонента, но и его предков. Естественно, хранение такой таблицы увеличивает расходы памяти, но вызов виртуальных методов выполняется быстрее, чем вызов динамических методов.

Описание виртуального метода выглядит следующим образом:

type TComponent = class
procedure MyProcedure; virtual; end;

В данном случае метод MyProcedure — виртуальный.

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


Вкладка Additional Эта вкладка содержит



Рисунок 8.2. Вкладка Additional Эта вкладка содержит компоненты (слева направо), перечисленные в табл. 8.2.



Вкладка Commands



Рисунок 6.3. Вкладка Commands

Вы можете запретить или разрешить показывать подсказки (Show tooltips) при наведении курсора на любую кнопку панели инструментов. Кроме того, имеется возможность разрешить или запретить показывать во всплывающих подсказках комбинации "горячих клавиш", выполняющих ту же функцию, что и кнопки панели инструментов.



Вкладка Common Controls



Рисунок 8.3. Вкладка Common Controls

Данная вкладка содержит 14 компонентов, которые указаны в табл. 8.3.



Вкладка Data Access



Рисунок 8.5. Вкладка Data Access

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



Вкладка Data Controls



Рисунок 8.7. Вкладка Data Controls

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




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


Вкладка Data Controls

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

DataFields — определяет поле, значения которого будут отображаться в данном компоненте;
DataSource — определяет источник данных для этого компонента, т. е. компонент типа TDataSource.

На этом мы закончим краткий обзор компонентов для работы с базами данных.

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


Вкладка dbExpress



Вкладка dbExpress

Данная вкладка содержит семь компонентов. Рассмотрим эти компоненты и их основные свойства.

Компонент TSQLConnetion — предназначен для обеспечения связи с сервером базы данных. В Delphi аналогом данного компонента является компонент TDatabase. Табл. 16.4 содержит перечень основных свойств данного компонента.





Рисунок 8.6. Вкладка dbExpress

Вкладка содержит компоненты доступа к базам данных dbExpress. Все эти компоненты описаны в табл. 8.6.



Вкладка Dialogs



Рисунок 8.4. Вкладка Dialogs

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



Вкладка Events



Рисунок 6.7. Вкладка Events

Для того чтобы привязать к какому-либо событию процедуру-обработчик (event handler), достаточно сделать двойной щелчок кнопкой мыши в правой части вкладки событий напротив выбранного события. При этом активизируется окно редактора кода.

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

Редактор кода — это полноценный текстовый редактор, который включает в себя дополнительные функции:

стилевое редактирование;
проверка синтаксиса и цветовая подсветка команд
и многое другое.

Большинство команд редактора доступны в его контекстном меню. Для настройки редактора кода нужно выбрать в меню главного окна Kylix пункт Tools/Environment Options (Средства/Настройки среды).

Когда разработчик начинает новый проект, Kylix добавляет новую страницу (модуль) в редакторе кода для главной формы. По умолчанию ей присваивается имя Unit1 .pas (см. Рисунок 4.2).

Если в проекте присутствует несколько форм, то для каждой формы в редактор кода добавляется новый модуль (Unit2, Unit3 и т. д.). Разработчик может сам добавлять новые модули (Unit) при помощи пункта меню главного окна Kylix File/New/Unit (Файл/Новый/Модуль). При этом важно помнить, что для каждой формы Kylix автоматически создает модуль, т. е. форма обязательно связана с каким-либо модулем проекта. Если модуль был создан разработчиком, то он является независимым и не связан ни с какой формой проекта. В такой модуль удобно выносить подпрограммы, используемые разными модулями проекта либо разными проектами. Редактор кода состоит из двух частей: окна просмотра и редактирования кода (Code Browser) и окна проводника (Code Explorer).

Окно просмотра и редактирования кода отображает весь программный код, связанный с текущим модулем. Это окно позволяет мгновенно проверять синтаксис вводимых команд, а также выводить подсказки. Настроить окно просмотра и редактирования кода можно с помощью пункта главного меню Kylix Tools/Editor Options (Средства/Настройки редактора). После выполнения этой команды появляется окно свойств редактора (Editor Properties) (Рисунок 6.8). Оно содержит пять вкладок: General, Display, Key Mappings, Color, Code Insight.



Вкладка Indy Clients



Рисунок 8.9. Вкладка Indy Clients

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



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



Рисунок 8.11. Вкладка Indy MiscКомпоненты этой вкладки описываются в табл. 8.11.



Вкладка Indy Servers



Рисунок 8.10. Вкладка Indy Servers

Компоненты, расположенные на этой вкладке, перечислены в табл. 8.10.



Вкладка Internet



Рисунок 8.8. Вкладка Internet

Все компоненты вкладки Internet кратко описаны в табл. 8.8.



Вкладка Options



Рисунок 6.4. Вкладка Options

Палитра компонентов сразу после установки Kylix содержит девятнадцать вкладок, на которых расположены компоненты в виде значков. Каждая вкладка объединяет компоненты по назначению. Палитру компонентов можно настраивать по своему усмотрению с помощью окна Palette Properties. Открыть это окно можно при помощи контекстного меню, вызываемого щелчком правой кнопки на палитре компонентов или с помощью пункта меню главного окна Kylix Component/Configure Palette (Компонент/ Конфигурация палитры). Палитра компонентов состоит из следующих вкладок:

Standard (содержит стандартные компоненты, такие как кнопки, надписи и т. д.);
Additional (дополнительные компоненты, такие как рисунок, маска ввода и т. д.);
Common Controls (доступ к графическому пользовательскому интерфейсу);
Dialogs (стандартные диалоги для открытия, сохранения и печати файлов. Диалоги вызываются с помощью метода Execute. Возвращаемые значения: True — если пользователь нажал ОК и False — если пользователь выбрал Cancel);
Data Access (компоненты доступа к данным);
dbExpress (компоненты доступа к базам данных dbExpress);
Data Controls (управление данными);
Internet (создание Web-серверов для сети Интернет);
Indy Clients (последние три вкладки представляют компоненты для работы с различными сетевыми протоколами: TCP/IP, NNTP, HTTP и др.);
Indy Servers; П Indy Misc.

Конструктор форм (см. Рисунок 4.1) при первоначальном запуске Kylix представляет собой окно, не содержащее никаких элементов. Это окно называется формой (Form).

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

Компоненты, расположенные на вкладках панели компонентов, делятся на:

визуальные;
невизуальные.

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

Примечание

Визуальные компоненты могут быть не видны на форме, если они перекрыты другими компонентами или свойство видимости компонента (Visible) имеет значение False.

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

Для настройки свойств, методов и событий компонентов используется Инспектор объектов (Object Inspector) (Рисунок 6.5).

Инспектор объектов предназначен для выполнения трех основных функций:

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

Инспектор объектов состоит из списка объектов и вкладок свойств (Properties) и событий (Events).



Вкладка Standart



Рисунок 8.1. Вкладка Standart

На этой вкладке расположены стандартные компоненты, такие как кнопки, фреймы, меню и т. д.

Рассмотрим по порядку (слева направо) компоненты, расположенные на этой вкладке (табл. 8.1).



Для операционной системы Linux долгое



Введение
Для операционной системы Linux долгое время не было достаточно простой среды быстрой разработки приложений. Многие программисты, которые успешно создают программы для Windows, используют среду Borland Delphi. В нашей стране Delphi пользуется особой популярностью как среди начинающих разработчиков, так и среди профессионалов. Многие из них готовы создавать программы для среды Linux, но не было среды, похожей на Delphi. Наконец, летом 2001 года фирма Borland выпустила среду для быстрой разработки приложений в среде Linux и назвала ее Kylix (Kylix — это античная винная чаша, расписанная с внешней и внутренней стороны). На первый взгляд, эта среда — практически копия Delphi, но есть некоторые отличия. Причем эти отличия являются довольно опасными, т. к. одна и та же команда в Delphi и Kylix может привести к совершенно разным последствиям. Данная книга представляет собой краткий обзор среды Kylix версии Kylix Server Developer. С помощью нее вы узнаете особенности среды Kylix и ее отличия от Delphi. Кроме того, заключительная часть книги расскажет вам о методах переноса приложений из Delphi в Kylix и создании межплатформенных приложений.

Для кого предназначена эта книга

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

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

Структура и особенности книги

Книга состоит из семи частей.

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

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

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

Четвертая часть книги содержит главы, посвященные созданию приложений баз данных в Kylix. Вы узнаете основные принципы построения баз данных. Затем мы рассмотрим компоненты для работы с базами данных. Одна из глав части посвящена изучению основ языка SQL. В заключительной главе данной части мы рассмотрим принципы создания простого отчета.

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

Шестая часть книги расскажет о проблемах создания межплатформенных приложений. Вы узнаете об отличиях Kylix и Delphi, а также Linux и Windows.

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

Используемые обозначения

В книге были использованы следующие обозначения:

листинги, идентификаторы, имена функций, классов, переменных и команд выделены моноширинным шрифтом;
курсивом выделены новые термины, которые впервые встречаются в тексте книги, а также важные места текста (особо важные моменты, на которые обязательно стоит обратить внимание, выделены в примечания);
полужирным шрифтом выделены имена элементов интерфейса: окон, пунктов меню, вкладок и т. д.;
названия клавиш клавиатуры заключены в угловые скобки, например <F1>, для иллюстрации одновременного нажатия нескольких клавиш используется символ "+", например <Ctrl>+<Alt>+<O>.
Содержание


Введение в создание компонентов



Введение в создание компонентов

Данная глава посвящена творческому процессу создания собственных компонентов. Мы рассмотрим различные способы создания новых компонентов, а именно — как создавать невизуальные и визуальные компоненты.

Основы создания компонентов

Итак, мы приступаем к процессу создания собственного визуального или невизуального компонента. Для создания собственного компонента важно иметь представление о библиотеке визуальных компонентов Kylix, об иерархии компонентов. Все это вам уже знакомо.

Для чего же нужны новые компоненты? Зачем их создавать? Решение о создании новых компонентов может быть принято по ряду причин, среди которых:

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

Естественно, кроме названных причин, вы можете назвать множество собственных.

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

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

Далее мы рассмотрим перечисленные выше этапы создания компонента.

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


Выбор предка компонента



Выбор предка компонента

Итак, вы уже знаете основные классы, имеющиеся в CLX Kylix. Ранее мы рассмотрели базовые классы, которые могут являться предками вашего компонента (см. главу 7). Эти классы перечислены в табл. 19.1.



Выражения и операторы



Выражения и операторы

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

Выражения

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

В общем случае, в состав выражения входят:

операнды;
знаки операций;
скобки.

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

Знаки операций — это знаки, определяющие конкретные действия, которые должны быть произведены над операндами. Операции могут производиться над одним операндом и над несколькими операндами. Если операция производится над одним операндом, то знак операции ставится перед операндом, например -х. Если операция производится над двумя или несколькими операндами, знак операции ставится между операндами, например х*12.

Скобки — круглые скобки, которые служат для определения порядка выполнения операций, например, (х+у) /2.

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


Вывод сообщений



Вывод сообщений

Директива компилятора $MESSAGE позволяет вашему приложению выводить подсказки сообщения и ошибки таким образом, как это делает компилятор:

{$MESSAGE HINT|WARN | ERROR | FATAL ' строка текста'}

Тип сообщения выбирается вами из перечисленных выше. Если тип не указан, компилятор по умолчанию будет выводить подсказку (HINT). Строка текста — это текст сообщения. Она должна быть заключена в апострофы. Например:

{$MESSAGE 'Подсказка'} // выводит подсказку
{$Message Hint 'Подсказка 2'} // тоже выводит подсказку
{$Message Warn 'Внимание!'} // выводит предупреждение
{$Message Error 'Не поддерживается'} // выводит ошибку и компиляция
// продолжается
{$Message Fatal 'Фатальная ошибка'} // выводит ошибку и прерывает
// процесс компиляции

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



Загрузка и сохранение графических файлов



Загрузка и сохранение графических файлов

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

Компоненты CLX, которые можно использовать для загрузки, сохранения и других действий с графикой, поддерживают несколько графических форматов: bmp, png, xpms, ico и др.

Загрузка графического образа из файла

Если ваше приложение позволяет изменять готовые изображения или создавать новые, необходимо обеспечить возможность загрузки графики из файла. Для этого можно воспользоваться специальным методом LoadFromFile,который имеется у всех компонентов CLX, способных работать с графикой.

Нижеприведенный пример (листинг 13.19) вызывает диалоговое окно открытия файла и получает из него имя файла, содержащего графический образ. Затем происходит загрузка этого образа в компонент Image1.



Замещенные методы



Замещенные методы

Замещение методов предполагает передачу и изменение методов от компонента (класса) предка компоненту (классу) наследнику. Как мы уже отметили, только виртуальные или динамические методы могут быть замещенными. Рассмотрим пример:

type TComponentChild = class (TComponentParent) procedure MyProcVirtual; override; procedure MyProcDynamic; override; end;

Применение служебного слова override после названия метода позволяет заместить оригинал метода компонента предка методом компонента наследника. При этом замещение происходит непосредственно в таблице виртуальных методов (или таблице динамических методов). При использовании служебных слов virtual или dynamic вместо override произойдет создание нового метода вместо замещения старого.

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

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


Защита ресурсов



Защита ресурсов