МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ Н.П. ОГАРЕВА
Факультет светотехнический
Кафедра светотехники
КУРСОВАЯ РАБОТА
КРОССПЛАТФОРМЕННОЕ ПРОГРАММИРОВАНИЕ ДЛЯ LINUX
Автор курсовой работы А.В. Богданов
Специальность 100101 сервис
Обозначение курсовой работы КР-02069964-100101-05-08
Руководитель работы С.Д. Шибайкин
Саранск 2008
МОРДОВСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ ИМЕНИ Н.П. ОГАРЕВА
Факультет светотехнический
Кафедра светотехники
ЗАДАНИЕ НА КУРСОВУЮ РАБОТУ (ПРОЕКТ)
Студент ______________________________________________________
1 Тема _______________________________________________________
2 Срок представления работы (проекта) к защите___________________
3 Исходные данные для научного исследования (проектирования) __________________________________________________________________
4 Содержание курсовой работы (проекта)
4.1 _________________________________________________________
4.2 _________________________________________________________
4.3 _________________________________________________________
4.4 _________________________________________________________
Руководитель работы (проекта) _______________________________
подпись, дата, инициалы, фамилия
Задание принял к исполнению _________________________________
дата, подпись
Реферат
Дипломная работа содержит 26 страниц, 1 таблицу, 20 использованных источников, 2 приложения.
ПРОГРАММИРОВАНИЕ, LINUX, DELPHI, KYLIX, CLX, ПРИЛОЖЕНИЕ.
Объектом исследования является способ создания приложений для Linux в среде Delphi.
Цель работы - проанализировать принцип создания приложений для Linux на уровне пользователя и среды Delphi с целью выявления основных сходств и различий его c программированием для Windows.
Задачи: изучить состав стандартного проекта CLX и кроссплатформенные элементы Репозитория, иерархию классов CLX, общие свойства и методы компонентов, их отличия от компонентов VCL; особенности кроссплатформенного программирования, дополнительные возможности кроссплатформенных приложений.
Степень внедрения - частичная.
Содержание
Введение
1 Проект CLX
1.1 Общие сведения
1.2 Объектная концепция кроссплатформенного программирования
1.3 Библиотека компонентов CLX
1.4 Сходства и различия визуальных компонентов CLX и VCL
2 Особенности программирования для Linux
2.1 Общие сведения
2.2 Приложения баз данных для Linux
2.3 Internet-приложения для Linux
Заключение
Список использованных источников
Приложение А
Приложение Б
Введение
Времена безраздельного господства операционных систем Windows для домашних компьютеров и корпоративных рабочих станций подходят к концу. Все большее число рядовых компьютеров работает под управлением других операционных систем. Среди них по праву выделяется операционная система Linux, сочетающая в себе открытость и хорошие возможности настройки.
В этих условиях, когда бывает необходимо разрабатывать программное обеспечение с одними функциями сразу для нескольких операционных систем, программистам была бы весьма полезна среда разработки, позволяющая делать это по возможности с наименьшими затратами.
Существует вполне самостоятельный программный продукт Kylix, который и предназначен для разработки программ для Linux. Delphi и Kylix очень схожи, но каждый из них работает в своей операционной системе и о переносе программ не может быть и речи.
Однако, Delphi 7 действительно позволяет писать программы для Linux.
Теперь разработчик, использующий Delphi 7, может создавать приложения, исходный код которых будет компилироваться без каких-либо дополнительных усилий не только в Delphi для Windows, но и в Kylix для Linux.
Для этого необходимо выбрать в Delphi соответствующий тип проекта и затем написать приложение. При этом разработчику будут доступны многие компоненты Палитры компонентов и соответственно возможности визуального программирования в Delphi.
Несомненное преимущество кроссплатформенного программирования в Delphi заключается в том, что для совместного использования доступны не только обычные конструкции и операторы языка программирования, но и множество высокоуровневых компонентов для визуального программирования.
Кроссплатформенная разработка приложений в Delphi стала возможной благодаря созданию специального варианта библиотеки VCL, которая называется Component Library for Cross Platform (CLX). В основе CLX лежит иерархия специально созданных базовых классов, обеспечивающих работоспособность визуальных компонентов - потомков сразу в двух операционных системах. Конечно, набор компонентов CLX не столь богат по сравнению с нынешним разнообразием VCL, однако вполне сравним с Палитрой компонентов Delphi или Delphi 2.
Конечно же, серьезное кроссплатформенное программирование, включающее, например, взаимодействие с памятью, обработку процессов с учетом их приоритетов и т. д., потребует скрупулезной и вдумчивой работы. Но это неизбежно - совмещение возможностей двух операционных систем в одной программе - дело нелегкое, и проблема здесь не столько в недостатках среды разработки, сколько в сложности самой задачи. Delphi берет на себя все заботы по созданию интерфейса кроссплатформенной программы.
В моей работе рассматриваются следующие вопросы:
состав стандартного проекта CLX и кроссплатформенные элементы Репозитория;
CLX - библиотека компонентов кроссплатформенного программирования;
иерархия классов CLX, общие свойства и методы компонентов, их отличия от компонентов VCL;
особенности кроссплатформенного программирования Windows - Linux;
дополнительные возможности кроссплатформенных приложений.
1 Проект CLX
1.1 Основные сведения
Создание кроссплатформенного приложения в Delphi требует выполнения абсолютно стандартных действий. Достаточно создать новый проект, выбрав для этого в Репозитории пункт CLX Application.
На первый взгляд новый проект ничем не отличается от обычного, но это не так. Среда разработки тоже претерпела некоторые изменения. В Палитре компонентов теперь представлены компоненты из библиотеки CLX, той самой, которую использует Kylix. Другие немногочисленные изменения в составе проекта также связаны с необходимостью совмещения с Kylix.
Проект CLX отличается от обычного типом файла, содержащего информацию о форме. Если в обычном проекте файл формы имеет расширение *.dfm, то в проекте CLX это файл с расширением *.xfm, одинаково понятный и для Delphi, и для Kylix, так как и те и другие файлы являются обычными текстовыми файлами и сведения о форме представлены в них в текстовом виде. Примерно то же самое мы увидим, просматривая форму в текстовом представлении в окне Редактора Delphi (команда View as Text из всплывающего меню формы) [1].
Форма и модуль CLX связываются при помощи директивы {$R *.xfm}.
Кроме этого, в проектах Delphi и Kylix различаются расширения файла опций проекта (в Delphi - *.dof, в Kylix - *.kof). Однако это не принципиальная проблема и при отсутствии такого файла среда разработки создаст новый с настройками по умолчанию. Таким образом, всегда можно придумать как минимум несколько способов перенести текстовое содержимое файла настроек проекта.
По синтаксису и основным элементам исходный код не отличается от стандартного. Файл проекта содержит список модулей и секцию begin, end. Файл модуля также обычен, за исключением списка используемых модулей в секции uses. Модули с непривычными названиями QControis, QForms и др. содержат базовые классы библиотеки CLX.
В остальном проект CLX подобен стандартному проекту Delphi и в нем можно использовать весь инструментарий среды разработки и приемы визуального программирования.
В подтверждение этого при помощи нескольких изменений в проекте VCL можно легко преобразовать проект VCL в CLX и обратно. Для этого понадобится любой текстовый редактор. И конечно проект не должен содержать компонентов, которые не входят в состав библиотеки CLX.
В файле проекта в секции uses сылка на модуль Forms заменяется на QForms.
В файлах модулей заменяются ссылки на модули VCL на модули CLX. Например, секция uses может выглядеть так:
uses SysUtils, Types, Classes, QGraphics, QControls, QForms;
В файлах модулей заменяется директива {$R *.dfm} на {$R *.xfm}.
В файлах форм меняется расширение с dfm на xfm.
Сохранив сделанные изменения и открыв проект в среде разработки, можно убедиться, что Delphi приняла его за проект CLX, изменила соответствующим образом Палитру компонентов и с готовностью компилирует его.
При необходимости разработчик может добавлять к проекту новые шаблоны, используя для этого Репозиторий. При этом в Репозитории доступны только те шаблоны, которые можно использовать в проекте CLX (например, форма, модуль или модуль данных). Отсутствуют шаблоны, использование которых в Linux невозможно или поддержку которых не обеспечивает библиотека CLX (например, шаблон однодокументного приложения или шаблоны печатных форм Quick Report).
1.2 Объектная концепция кроссплатформенного программирования
Программирование в Delphi подразумевает использование тех или иных классов, будь то формы, невизуальные компоненты или списки. Концепция кроссплатформенного программирования в рамках одной среды разработки имеет в виду наличие общего ядра, обеспечивающего функционирование зависимой от операционной системы программной надстройки. В Delphi таким ядром стала библиотека времени выполнения (RunTime Library - RTL), с использованием классов которой созданы библиотеки компонентов VCL и CLX.
В соответствии с этим для обеспечения кроссплатформенной разработки в исходные коды базовых классов Delphi были внесены изменения. Общим ядром библиотек компонентов VCL и CLX является иерархия классов TObject - TFersistent - TComponent, которые входят в состав RTL. Это позволяет среде разработки легко интегрировать кроссплатформенные проекты и работать со стандартными проектами для Windows.
Расхождения двух ветвей начинаются с класса TControl, который обеспечивает функциональность всех визуальных компонентов. Начиная с этого класса и далее, библиотеки компонентов имеют собственные исходные коды. Многие модули CLX имеют названия, аналогичные модулям VCL, но с добавлением первой буквы Q, например QControls.pas.
В библиотеке VCL классы TControl и Twincontrol являются предками всех компонентов, которые должны уметь отображать себя на экране при помощи графических средств операционной системы. В библиотеке CLX аналогичную задачу выполняют классы TControl и TWidgetControl. Они обеспечивают работоспособность компонентов-потомков в качестве экранных объектов widget.
Большинство свойств и методов классов Twincontrol и TWidgetControl совпадают. Однако есть и различия, вызванные особенностями графических интерфейсов операционных систем Windows и Linux.
Для обеспечения работоспособности кроссплатформенных классов CLX применяется динамическая библиотека Qt. Для использования ее методов в классах CLX в составе Delphi имеется заголовочный файл Qt.pas. При создании объекта CLX конструктором create в исходном коде или переносом компонента на форму автоматически создается специальный объект - widget. Widget связан с объектом CLX, обеспечивает взаимодействие объекта CLX с операционной системой и уничтожается вместе с ним.
Widget может быть создан и напрямую. Такая ситуация может возникнуть, к примеру, при создании собственных компонентов. Для этого применяется функция QWidget_Create динамической библиотеки Qt. В этом случае widget не привязан к объекту CLX и, соответственно, не уничтожается вместе с ним [2].
1.3 Библиотека компонентов CLX
Библиотека компонентов CLX более бедна по сравнению с VCL. Тем не менее, ее компоненты позволяют создавать полноценные приложения. В целом состав компонентов CLX напоминает Палитру компонентов ранних версий Delphi. Библиотека CLX загружается в Палитру компонентов при открытии существующего или создании нового проекта CLX.
Все компоненты CLX, имеющие аналоги в VCL, а таких большинство, имеют те же имена, что и компоненты VCL. Так как при переносе компонентов из Палитры компонентов на форму соответствующие модули подключаются в проект автоматически.
Исходные модули библиотеки CLX содержатся в папке Delphi7Source С1х [3].
Первые три страницы Палитры компонентов (Standard, Additional, Common Controls), а также страница Dialogs содержат визуальные и невизуальные компоненты для конструирования пользовательского интерфейса приложения.
Из-за некоторых различий стандартов пользовательского интерфейса Windows и Linux часть визуальных компонентов CLX имеют несвойственные для Windows дополнительные функции.
Большинство компонентов на этих страницах хорошо знакомы разработчикам (правда, некоторые из них перекочевали из других страниц VCL - например TTimer и TSpinEdit). Однако существуют некоторые новинки. Это компоненты TLCDNumber, TTextviewer и TTextBrowser. Их краткая аннотация представлена в таблице 1.
Таблица 1 - Уникальные визуальные компоненты CLX
|
Компонент
|
Страница палитры компонентов
|
Описание
|
|
TLCDNumber
|
Additional
|
Компонент отображает совокупность символов (букв и цифр), которые можно представить в режиме цифрового дисплея. Соответственно, не все буквы можно показать в этом компоненте. Например, буквы J, Q, Z и т. д. Строка символов содержится в свойстве Value
|
|
TTextviewer
|
Common Controls
|
Компонент является аналогом компонента VCL TRichEdit. Предназначен для редактирования текстов
|
|
TTextBrowser
|
Common Controls
|
Компонент развивает возможности компонента TTextviewer, предоставляя функции гипертекстовой разметки
|
|
|
Дополнительные возможности по созданию кроссплатформенных приложений баз данных дают компоненты на страницах Data Access, DataControIs, DBExpress, InterBase. Безусловно, механизмы доступа к данным, используемые такими приложениями, в значительной степени зависят от операционной системы. Поэтому выбор способов доступа к данным сравнительно невелик.
1.4 Сходства и различия визуальных компонентов CLX и VCL
Большинство свойств и методов компонентов VCL и CLX идентичны. А существующие различия вызваны необходимостью использования специальных объектов - widget и особенностями представления визуальных элементов в Linux.
Базовые классы CLX - TControl и Twidgetcontrol для обеспечения прорисовки обращаются к динамической библиотеке Qt через заголовочный файл Qt.pas.
Таким образом, разработчик избавлен от необходимости работы с графическим интерфейсом Linux на низком уровне.
Для компонента CLX существует свойство property Handle: QWidgetH; которое является указателем на связанный объект widget и позволяет вызывать его методы напрямую.
Если экземпляр widget не создан, метод procedure CreateHandle; virtual;не только создает и инициализирует widget, но и устанавливает указатель Handle, создает объекты-перехватчики (см. ниже) и задает настройки по умолчанию для этого визуального компонента. При необходимости в классах-потомках метод CreateHandle перекрывается и в него добавляется новая функциональность.
Уничтожение созданного widget осуществляется методом procedure DestroyHandle; который уничтожает все дочерние widget и объекты-перехватчики, а также обнуляет свойства Handle И Hooks.
При необходимости для простого создания и инициализации widget можно использовать метод procedure CreateWidget; virtual; который сделает это, вызвав внешнюю функцию Qwidget_Create, и метод procedure InitWidget; virtual;который определяет визуальные параметры widget.
Также в классах CLX доступен указатель на родительский widget за счет использования свойства property ParentWidget: QWidgetH;
Если это свойство не определено, можно использовать свойство property ChildHandle: QWidgetH; родительского класса, например, таким образом:
if Not Assigned(ParentWidget) then if Assigned(Parent) then
Result := Parent.ChildHandle;
В классах CLX иначе реализована обработка событий. В Linux все события делятся на два вида - системные и события widget. Системные события обрабатываются процедурой - аналогом процедуры wndProc для компонентов VCL.
События, генерируемые widget, перехватываются и обрабатываются специальными объектами, взаимодействующими с объектом widget. Затем они передаются связанному объекту CLX, который вызывает необходимые обработчики событий.
Объекты-перехватчики создаются при вызове метода
procedure HookEvents; virtual;
а непосредственно для создания перехватчиков используется библиотечная функция Qwidget_hook_create. Метод HookEvents вызывается автоматически при создании widget.
Доступ к объекту-перехватчику возможен при помощи свойства
property Hooks: QWidget_hookH;
которое объявлено в секции protected и может быть использовано только при создании новых компонентов.
Классы CLX имеют очень интересное и важное свойство
property Style: TWidgetStyle;
которое позволяет управлять внешним видом и процессом отрисовки компонента.
Свойство
type TDefaultStyle = (dsWindows, dsMotif, dsMotifPlus, dsCDE, dsQtSGI, dsPlatinum, dsSystemDefault); property DefaultStyle: TDefaultStyle;
класса TWidgetStyle определяет стиль визуального компонента, задающий его внешний вид по умолчанию. Естественно, операционная система должна поддерживать выбранный стиль.
Кроме того, класс Twidgetstyle определяет некоторые наиболее общие параметры визуальных компонентов и обладает огромным числом обработчиков событий, которые вызываются при отрисовке всех возможных компонентов и экранных элементов.
Таким образом, свойство style является прекрасным инструментом для создания собственных компонентов с нестандартной функциональностью.
Для использования в Linux модернизирована система контекстной помощи для компонентов CLX. Теперь статья подсказки для визуального компонента может быть вызвана двумя способами.
Традиционно, путем определения уникального номера статьи в свойстве
property HelpContext: THelpContext;
и дополнительно, путем определения ключевого слова подсказки в свойстве
property HelpKeyword: String;
Способ вызова помощи определяется свойством
type THelpType = (htKeyword, htContext);
property HelpType: THelpType;
Свойства контекстной подсказки являются новыми в Delphi 7 и имеются у компонентов CLX и VCL.
Кроме того, отдельные компоненты CLX имеют дополнительные свойства и методы, определяющие их дополнительную функциональность в Linux.
В то же время некоторые привычные для программирования в Windows свойства компонентов отсутствуют в компонентах CLX. Это свойства обрамления компонента (BevelEdges, Bevellnner, BevelKind, BevelOuter); возможность двунаправленной печати текстов (свойство BioiMode); свойства для обратной совместимости с Windows 3.x (Ctl3D и ParentCtl3D); механизм присоединения и свойства Drag-and-Drop, хотя сам механизм Drag-and-Drop остался (свойства DockSite, DragKind, DragCursor). [4]
2 Особенности программирования для Linux
2.1 Общие сведения
Операционные системы Windows и Linux имеют достаточно серьезных различий, чтобы сделать кроссплатформенную разработку делом сложным и кропотливым. В первую очередь необходимо хорошо знать обе операционные системы и иметь опыт работы с ними.
Создание исходного кода для кроссплатформенных приложений - это трудоемкий процесс, который усложняется по мере использования специфических возможностей операционных систем. Простейшим путем в данном случае будет применение только стандартных свойств и методов компонентов CLX. Но такой путь возможен для сравнительно несложных приложений.
Большинство приложений имеют функции для работы с файлами. Файловые системы Windows и Linux отличаются настолько, что кроссплатформенная реализация любых сложных операций с файлами требует серьезного внимания и усилий.
Linux чувствительна к регистру символов в именах файлов и путях, поэтому не стоит использовать в исходном коде имена файлов напрямую, а при необходимости делать это нужно аккуратно. Во многих компонентах для решения проблемы заглавных и строчных букв можно использовать свойство
property CaseSensitive: Boolean;
После присвоения свойству значения True компонент производит все строковые операции с учетом регистра символов.
Для формирования полного пути файла используются константы из модуля SysUtils. Это PathDelim (символ разделителя каталогов в пути файла), DriveDelim (символ логического диска), pathsep (символ разделителя между несколькими путями файлов в одной строке).
При работе с текстовыми файлами необходимо помнить о различии управляющих символов в Windows и Linux. Для обозначения конца строки в Windows используются символы CR/LF, а в Linux - только символ LF. В Windows окончание текста определяется символом Ctrl-Z, а в Linux - просто концом файла [4].
Так как в Linux отсутствует системный реестр, то для сохранения настроек приложения используется класс TMeminiFile, обеспечивающий сохранение переменных среды в INI-файле.
При создании кроссплатформенных приложений необходимо использовать только свойства и методы классов CLX. В библиотеке CLX также доступны для применения такие важные для написания бизнес-логики приложения классы, как TList, TStringList, TCollection, TAction и др.
Если это ограничение является слишком жестким, и в программе требуется использовать функции системных API, применяются директивы условного перехода:
{$IFDEF MSWINDOWS}
{код для Windows}
{$ENDIF}
{$IFDEF LINUX}
{код для Linux}
{$ENDIF}
2.2 Приложения баз данных для Linux
Главной составной частью любого приложения баз данных является механизм доступа к данным. Для традиционных приложений баз данных, создаваемых в Delphi, выбор способов доступа к данным достаточно широк. Однако про кроссплатформенные приложения этого сказать нельзя. По существу, разработчик может выбрать только набор компонентов dbExpress.
К сожалению, компоненты dbExpress ограничены по своим функциональным возможностям, обеспечивая однонаправленное перемещение курсора и просмотр данных в режиме «только для чтения».
Преимуществом этого способа доступа к данным является простота и отсутствие многомегабайтных вспомогательных библиотек. В частности, для каждого из четырех поддерживаемых dbExpress серверов баз данных необходима лишь одна динамическая библиотека Windows и только один разделяемый объект (shared object) Linux [5].
2.3 Internet-приложения для Linux
Для Internet-приложений вполне обычной является ситуация, когда клиентская часть должна работать на компьютерах с различными операционными системами, например Windows и Linux. В этом случае кроссплатформенное программирование клиентской части становится весьма привлекательным способом уменьшения затрат на процесс разработки.
В составе библиотеки CLX имеется достаточно большой набор компонентов для разработки Internet-приложений. Однако в Linux можно использовать только сервер Apache или CGI. Это накладывает существенные ограничения на вновь создаваемые кроссплатформенные приложения и требует серьезных усилий при переделке приложений Windows, использующих ISAPI или NSAPI.
Заключение
Кроссплатформенное программирование стало доступно в Delphi 7 благодаря использованию библиотеки компонентов CLX. Имея общее с библиотекой компонентов VCL ядро базовых компонентов, библиотека CLX обеспечивает совместимость приложений Delphi для Windows и Kylix для Linux.
При неизбежных для кроссплатформенного программирования трудностях реализации сложного кода, использующего системные вызовы и технологии удаленного доступа, в Delphi решена задача быстрого визуального проектирования пользовательского интерфейса и создания бизнес - логики приложения. Для этого применяется набор специальных компонентов, имеющих практически идентичную функциональность и схожий программный интерфейс, но их количество значительно отличается от стандартного набора компонентов.
Рассмотрены следующие вопросы:
состав стандартного проекта CLX и кроссплатформенные элементы Репозитория;
CLX - библиотека компонентов кроссплатформенного программирования;
иерархия классов CLX, общие свойства и методы компонентов, их отличия от компонентов VCL;
особенности кроссплатформенного программирования Windows - Linux;
дополнительные возможности кроссплатформенных приложений.
Список использованных источников
1. Шупрута, В.В. Delphi 2005. Учимся программировать: NT Press. - М., 2005.
2. Дарахвелидзе, И.В. Программирование в Delphi 7: BHV-СПб. - Санкт-Петербург, 2003.
3. Культин, С.Д. Delphi в задачах и примерах: BHV-СПб. - Санкт-Петербург, 2008.
4. Осипов, О.И. Delphi. Профессиональное программирование: Символ-Плюс. - М., 2006.
5. Фаронов В.В. Delphi4. Учебный курс. - М.: Нолидж, 1999.
6. Возневич Э. «Освой самостоятельно Delphi: Полное руководство для самостоятельного обучения. /Под ред. В. Тимофеева. - М.: Бином, 1996.
7. Гофман В.Э./ Хомоненко А.Д. Delphi 6. - СПБ.: БХВ, 1996.
8. Дарахвелидзе П.Г. Марков Е.П. Delphi - средства визуального программирования. - СПБ.: BHV - С-Петербург, 1996.
9. Конопка Р. Создание оригинальных компонент в среде Delphi: Пер. с англ. - Киев: DiaSoftLtd, 1996.
10. Сван Том. Основы программирования Delphi для Windows 95. Киев: Диалектика, 1996.
11. Зуев В. А.. Turbo Pascal 6.0, 7.0. М.: Веста; Радио и связь, 1998.
12. Коцюбинский А.О., Грошев С.В. Язык программирования Delphi 5 - М.: «Издательство Триумф», 1999.
13. Леонтьев В. Delphi 5 - М.: Москва «Олма-Пресс», 1999.
14. Немнюгин С.А. Программирование - М.: Питер, 2000.
15. Программирование под ред. В.В.Старлова - М: Питер, 1999
16. Ремизов Н. Delphi - М.: Питер, 2000.
17. Справочная система Delphi 5.0 Help.
18. Т.А. Ильина. Программирование на Delphi 6 - М.: Питер, 2000.
19. Фаронов В. В. Delphi 4. Учебный курс. М.: Нолидж, 1999.
20. Федоров А. Г. Создание Windows-приложений в среде Delphi. М.: ТОО «Компьютер Пресс», 1999.
21. Хендерсон К. Руководство разработчика баз данных в Delphi 2. Киев: Диалектика, 1998.
22. Ч. Куписевич. Программирования на Delphi. - М: Киев, 1986
23. Шапошников И. Delphi 5 - М.: Санкт-Петербург, 2001.
Приложение А
Программа «База данных Games»
Приложение Б
Исходный код программы «База данных Games»
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBTables, DB, Grids, DBGrids, StdCtrls;
type
TForm1 = class(TForm)
DataSource1: TDataSource;
Table1: TTable;
DBGrid1: TDBGrid;
Label1: TLabel;
GroupBox1: TGroupBox;
Button1: TButton;
Edit1: TEdit;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
if Table1.Locate(Game, Edit1.Text,[loCaseInsensitive, loPartialKey])
then Form1.Label2.Caption:=
else Form1.Label2.Caption:=ничего не найдено.
end;
end.
|