Ключи для компиляции пакета из командной строки
Таблица 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 |
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. Установите свойства нового набора данных в соответствии с оригинальным набором данных:
если оригинальным набором данных был компонент 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 имеется еще несколько типов данных, не относящихся ни к тем, ни к другим. Рассмотрим их.
Указатели
Указатель — это переменная, в которой хранится адрес памяти, указывающий на начало размещения некоторых данных в памяти.
Указатели применяют для определения адреса в памяти конкретного объекта, например какой-либо переменной.
Переменные типа "указатель" содержат и изменяют свои значения в процессе выполнения программы.
Указатели бывают типизированными и нетипизированными.
Типизированный указатель — это указатель, который ссылается на данные определенного типа и указан при объявлении указателя или типа указателя.
Для объявления типа указателя используется специальный значок ^, который располагается перед типом адресуемых данных.
Приведем пример объявления типизированного указателя:
X, Y: Integer ; / / X и Y переменные типа Integer
Р: ^Integer ; / / Р - указатель типа Integer
Нетипизированный указатель всегда имеет тип Pointer и ссылается на данные любого типа.
Пример объявления нетипизированного указателя:
Р: 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
Данная вкладка содержит компоненты, предназначенные для отображения записей из наборов данных. Мы не будем рассматривать свойства каждого компонента этой вкладки. Мы лишь отметим два главных свойства этих компонентов:
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 (Компонент/ Конфигурация палитры). Палитра компонентов состоит из следующих вкладок:
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 произойдет создание нового метода вместо замещения старого.
Замещение методов не работает со статическими методами — при замещении статического метода новым произойдет простая замена метода родителя в потомке.
Защита ресурсов
Защита ресурсов