Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Базы данных и знаний. Управление базами и защита информации учебное п

.pdf
Скачиваний:
3
Добавлен:
15.11.2022
Размер:
1.29 Mб
Скачать

DВТехt – простой компонент этой группы. Он позволяет выводить текст из какого-нибудь поля базы данных, не подлежащий редактированию, при изменении текущей записи в базе данных значение поля автоматически обновляется. Этот тип очень удобно использовать для вывода дополнительной информации по текущей строке в таблице. Для длинных строк имеется возможность автоматического разбиения текста, для того нужно использовать свойство WordWrap. Если оно установлено в True, текст переносится на другую строку, иначе – нет. Относительным неудобством DBText является то, что в многострочном варианте нет возможности прокрутить текст в окне (т.е. реально размер текста в поле ограничен занимаемым органом управления DBText местом на экране). В том случае, если необходима возможность изменения значения или нужен IiРОСМОТ действительно большого текста, нужно использовать DBEdit, DBMemo или DBRichEdit.

ВВЕdit – наиболее часто используемый компонент. Используется для реализации строки редактирования, напрямую связанной с полем текущей записи указанного источника данных. При завершении ввода значения оно автоматически записывается в соответствующую таблицу базы данных. Верно и обратное: при изменении записи базы данных значение поля автоматически обновляется. Данный орган управления удобен в том случае, если редактирование полей базы данных осуществляется не в таблице, а за ее пределами. Например, именно он будет использован для изменения полного названия фирмы (причем в обоих вариантах).

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

71

так же, как и тип полей, которые обычно просматриваются с его помощью. Мелю поля хранятся в отдельном файле базы данных отличаются достаточно большой длиной. Например, в поле Меmo можно хранить информацию об основных особенностях данной модели монитора или мнениях пользователей по поводу его работы. Если программе нужен специальный доступ к данным, редактируемым в поле Меmо, то они также доступны через свойство Техt. Имеется возможность запретить редактирование данных компонента, для чего используется свойство ReadOnly.

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

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

DBComboBox во многих отношениях похож на DBListBox, но сделан в виде выпадающего списка. У него есть два принципиально различных стиля работы (изменяются через свойство

Stуlе): CsDropdown и CsDropdown List (есть и другие, но они не особенно сильно отличаются). Первый из них позволяет редактировать данные в строке ввода, таким образом пользователь может

72

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

Как DBComboBox, так и DBListBox имеют возможность замены текстовых строк списка на рисуемые программой изображения. Таким образом, можно, например, позволить пользователю выбирать нужное значение но пиктограммам. Это особенно полезно, если необходимо выбрать такой параметр, как шрифт или тип линии. Можно предоставить возможность сразу увидеть, как будет выглядеть результат. Списки рисуемые пользователем, бывают двух видов: с фиксированной высотой строки

(в DBComboBox это стиль csOwnerDrawFixid, а в DBListBox – lbOwnerDrawFixid) и с переменной высотой (csOwnerDrawVariable

и lbOwnerDrawVariable соответственно). Если вы выбрали один из этих двух стилей, то нужно создать обработчик сообщения OnDrawItem, который будет рисовать нужную строчку, когда это понадобится системе Windows или самому компоненту. В случае использования списков с переменной высотой строк также нужно обработать сообщение OnMeasureItem, в обработчике которого нужно возвратить (через параметр Неight) высоту строки, индекс которойпередается обработчику одним из аргументов.

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

73

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

DBRadioGroop в некотором смысле аналогичен DBCheckВох, но позволяет выбирать один из нескольких вариантов. Кроме того, у него много общего с компонентом DBListBox. Он очень удобен в том случае, если необходимо менять какойнибудь параметр, имеющий небольшое количество альтернатив (наиболее оптимально при трех возможных значениях). В этом случае использование списков DBComboBox и DBListBox не имеет особого смысла, а без DBCheckВох уже не обойтись. При большем количестве элементов место, занимаемое ими на экране, становится слишком большим, и лучше перейти к спискам. Редактирование строк-вариантов выбора компонента DBRadioGroop осуществляется с помощью его свойства Items. При щелчке по нему левой кнопкой мыши появляется текстовый редактор, в котором можно указать требуемый текст. По окончании ввода соответствующие строки сразу появляются на экране. В этом случае если вы не изменяли свойства Values (т.е. оно осталось пустым), эти значения будут использоваться также и для записи в базу данных. Если вы этого не хотите (например, тексты на русском языке, а база на английском), то такую ситуацию можно изменить. Для этого нужно отредактировать значения свойства Values, вызвав его редактор, в котором можно указать

74

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

DBLookupListBox – этот компонент работает аналогично DBListBox, но в качестве списка используется другая база данных. Таким образом, в этом смысле DBLookupListBox родственен ссылочным полям (Lookup Fields). Для компонентов этого типа (если поле не помечено как ссылочное) необходимо установить дополнительно к DataSource и DataField свойства Listsource (источник данных для расшифровки значений), КеуField (ключевое поле) и ListField (поле для вывода в Список). Возможности сделать DBLookupListBox рисуемым пользователем, к сожалению, нет, хотя такой необходимости обычно не возникает. В остальном отличий от DBListBox практически нет.

DBLookupComBox – компонент очень похож на DBComBox, но для списка используется дополнительная таблица. В новой версии программисту стало недоступным свойство Stуlе, что помимо отсутствия возможности сделать список рисуемым пользователем заблокировало возможность изменения внешнего вида списка. Поэтому вы не сможете переключить DBLookupComBox в режим с возможностью ручного редактирования данных (могло бы быть использовано для пополнения базы). В результате функционально этот компонент почти ничем не отличается от DBLookupListBox (кроме внешнего вида).

DBRichEdit используется для редактирования полей примечаний, содержащих различные шрифты и другие параметры форматирования. Так же, как и DВМеmо, он работает с многострочным текстом. В отличие от DВМеmо, где можно было устанавливать шрифт и выравнивание только одно на весь текст, в DBRichEdit может сочетаться сразу несколько видов формати-

75

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

ТDBGrid обеспечивает табличный способ отображения на экране строк данных из компонентов ТТаblе или ТQuery. Приложение может использовать ТDBGrid для отображения, вставки, уничтожения, редактирования данных БД. Обычно ТDBGrid используется в сочетании с DBNavigator, хотя можно использовать и другие интерфейсные элементы, включив в их обработчики событий ме-

тоды First, Last, Next, Ptior, Insert, Delete, Edit, Append, Post, Cancel

компонента ТТаblе. Внешний вид таблицы (например, надписи

взаголовках столбцов) может быть изменен с помощью редактора свойств Coloms Editor. Для вызова Coloms Editor нужно либо выбрать соответствующую опцию в контекстном меню компонента 1ВС, либо щелкнуть Grid мышью в колонке значений напротив свойства Coloms в инспекторе объектов. Вторым способом получения контроля над характеристиками ТDBGrid или другими компонентами является создание описанным выше способом статического набора компонентов ТField, созданных для каждого из полей

внаборе данных, можно установить ширину, формат, маску, расположение, метку для отображения в IВGrid и другие характери-

стики. Поля Float, Integer, Date обладают свойством DisplayMask.

Это свойство можно использовать, чтобы форматировать данные

вкомпоненте ТВСгid или другом компоненте Data Controls. Например, экранный формат mm-dd-yy может использоваться для размещенияполейтипаData.

2.6.2. Компоненты страницы ADO

ВDelphi 5.0 и выше появились компоненты для работы

сMicrosoft® ActiveX® Data Objects (далее ADO) (рис. 2.2). ADO – это технология стандартного обращения к реляционным данным от Microsoft. Эта технология аналогична BDE по назначению и довольно близка по возможностям.

76

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

Обзор компонентов

Для работы с ADO на вкладке компонентов ADO есть шесть компонентов: TADOConnection, TADOCommand, TADODataSet, TADOTable, TADOQuery, TADOStoredProc.

Рис. 2.2. Палитра компонентов ADO

TADOConnection (рис. 2.3) аналогичен компоненту BDE TDatabase и используется для указания базы данных и работы транзакциями.

TADOTable – таблица, доступная через ADO.

TADOQuery – запрос к базе данных. Это может быть как запрос, в результате которого возвращаются данные и базы (например, SELECT), так и запрос, не возвращающий данных (на-

пример, INSERT).

TADOStoredProc – вызов хранимой процедуры. В отличие от BDE и InterBase хранимые процедуры в ADO могут возвращать набор данных, поэтому компонент данного типа является потомком от TDataSet и может выступать источником данных

вкомпонентах типа TDataSource*.

TADOCommand и TADODataSet являются наиболее об-

щими компонентами для работы с ADO, но и наиболее сложными в работе. Оба компонента позволяют выполнять команды на языке провайдера данных (так в ADO называется драйвер базы данных).

77

Разница между ними в том, что команда, исполняемая через TADODataSet, должна возвращать набор данных, и этот компонент позволяет работать с ними средствами Delphi (например, привязать компонент типа TDataSource). А компонент TADOCommand позволяет исполнять команды, не возвращающие набор данных, но не имеет штатных средств Delphi для последующего использования возвращенного набора данных.

Очевидно, что все компоненты должны связываться с базой данных. Делается это двумя способами: либо через компонент TADOConnection, либо прямым указанием базы данных в остальных компонентах. К TADOConnection остальные компоненты привязываются с помощью свойства Connection, к базе данных – напрямую через свойство ConnectionString.

База данных может быть указана двумя способами: через файл линка к данным (файл в формате Microsoft Data Link, расширение UDL) либо прямым заданием параметров соединения.

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

Рис. 2.3. Панель TADO Connection

При выборе "Use data link file" и нажатии на кнопку "Browse…" появляется стандартный диалог выбора файла. Этот файл можно создать в любом окне explorerа (в этом окне откры-

78

тия файла, в самом explorer, на desktop и т.д.), вызвав контекстное меню и выбрав пункт "New/Microsoft Data Link". Потом вызвать локальное меню для созданного файла и выбрать в нем пункт "Open". После этого появится property sheet, описанный чуть ниже. Эти же вкладки содержит и property sheet, вызываемый через пункт "Property" локального меню UDL файла, но в нем еще есть вкладки, относящиеся к самому файлу.

Использование файлов Microsoft Data Link упрощает поддержку приложений, т.к. возможно использование средств Windows для настройки приложения.

При выборе в редакторе свойства "Use connection string" и нажатии на кнопку "Build…" появляется такой же property sheet, как и при выборе "Open" для Microsoft Data Link файла.

В этом окне (рис. 2.4) выбирается тип базы данных, местоположение базы и параметры соединения.

Рис. 2.4. Местоположение базы и параметры соединения

79

На первой странице выбирается тип базы данных или

Provider, в терминах ADO.

Базы MS Access доступны как через "Microsoft Jet OLE DB Provider", так и через "Microsoft OLE DB Provider for ODBC".

Следующая страница зависит от выбранного типа базы, однако для всех типов есть кнопка "Test connection", позволяющая проверить правильность и полноту параметров.

Для "Microsoft Jet OLE DB Provider" она выглядит так (рис. 2.5–2.8).

Рис. 2.5. Проверка правильности и полноты параметров (Connection)

80