Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Горев “Эффективная работа с СУБД”.pdf
Скачиваний:
225
Добавлен:
28.06.2014
Размер:
4.71 Mб
Скачать

converted to PDF by HupBaH9I

Object.HelpContextID [ = nContextID]

Параметр nContextID определяет идентификатор темы, содержание которой выводится на экран, если пользователь нажимает клавишу F1, когда активен указанный объект.

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

Control.Value [ = nSetting]

которое возвращает информацию о состоянии указанного элемента управления. При более

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

Object.Visible [ = lExpression]

Позволяет сделать указанный объект невидимым на экране, если выражение lExpression будет иметь значение .F.. При создании объекта в Конструкторе формы свойство по умолчанию имеет значение .T., в программе - .F.. При добавлении объекта в форму, пока происходит определение его свойств или при изменении сразу нескольких характеристик объекта, чтобы избежать многочисленных перерисовок, установите свойство Visible равным .F..

Object.Enabled [ = lExpression]

Позволяет сделать объект недоступным для изменения пользователем, если выражение lExpression будет иметь значение .F.. При этом данный объект перестает реагировать на какие- либо события и может использоваться, как например, TextBox или EditBox, только для отображения выводимых в него данных.

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

Control.TabIndex [ = nOrder]

Параметр определяет номер элемента управления в объекте-контейнере (например, в форме),

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

Если вы заранее знаете, что будущие пользователи не любят использовать мышь, то установить действие, происходящее для элемента управления при нажатии клавиши Tab можно с

помощью свойства

Control.TabStop [ = lExpression]

Выражение lExpression определяет, включен ли элемент управления Control в стек свойства TabIndex для перехода между элементами управления с помощью клавиши Tab. Если выражение lExpression равно .F., то элемент управления в стек не включен, и при нажатии клавиши Tab этот элемент пропускается.

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

Объекты для работы с данными

Наиболее универсальным объектом для работы с данными, бесспорно, является Text Box - текстовое поле. С его помощью можно отображать и редактировать данные любого типа, кроме, пожалуй, изображений.

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

Object.ControlSource [ = cName]

Впараметре cName указывается имя переменной или поля в таблице.

ВVisual Basic для того, чтобы привязать какой-либо объект к данным в БД, необходимо сначала создать объект Data - элемент управления для работы с БД и указать для него в

свойстве

Object.DatabaseName [ = cName]

имя и путь к базе данных. Если в качестве источника данных используется формат, в котором таблицы хранятся в отдельных файлах и не объединены на постоянной основе, например FoxPro 2.x, то указывается только путь к папке с этими файлами.

В число обязательных действий включается установка значений еще для двух свойств.

Сначала выберите значение для свойства

Object.RecordsetType [= Value ]

Процессор баз данных Microsoft Jet допускает выбор из трех вариантов:

0 - tables - позволяет работать непосредственно с таблицами. Этот вариант допустим только для Access или БД, поддерживаемых драйверами ISAM. Но его нельзя использовать, например, для работы с БД, расположенной на MS SQL Server.

converted to PDF by HupBaH9I

1 - dynasets - позволяет создать обновляемый набор записей, выбирая и считывая из

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

2 - snapshots - позволяет создать набор записей, которые не будут иметь возможности обновления в источнике данных.

После этого вы можете выбрать нужную для работы таблицу с помощью свойства

Object.RecordSource [= Value ]

В качестве параметра Value для этого свойства можно использовать имя таблицы, символьное выражение, содержащее команду SQL, приемлемую для используемой БД, или имя одного из объектов QueryDef, содержащегося в коллекции QueryDefs объекта Database (об объектах для доступа к данным, используемых в процессоре баз данных Microsoft Jet, см. главу 6).

Вот теперь, вернувшись к объекту TextBox и предварительно указав в свойстве DataSource имя элемента управления для работы с БД, мы можем назначить для него требуемый источник

данных с помощью свойства

Object.DataField [ = cName]

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

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

ВVisual Basic для этого используется текстовое поле, которое имеет специальное свойство Multiline. При установке его значения в True текстовое поле может занимать несколько строк.

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

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

свойству Style значение 2 (drop-down list). Комбинированный список с возможностью ввода создается при значении свойства Style равным 0 (drop-down combo). В Visual Basic вы можете использовать еще одно значение - 1. При этом создается список Simple Combo, состоящий из текстового поля, в которое пользователь может вводить данные, и незакрывающегося списка. В комбинированный список можно включать самые разнообразные данные. В Visual Basic

источник данных будет определяться по такой же схеме, как для текстового поля. В Visual FoxPro тип определяется значением свойства RowSourceType.

Control.RowSourceType [ = nSource]

Значения параметра nSource могут быть:

0 - (по умолчанию) - нет данных. Список заполняется во время работы пользовательской программы с помощью методов AddItem или AddListItem.

1 - значения. Список заполняется данными, непосредственно указанными в свойстве

RowSource.

2 - псевдоним. Список заполняется данными из полей в таблице, открытой в указанной рабочей области.

3 - операторы SQL.

4 - запрос. В список помещаются результаты выполнения файла запроса (QPR).

5 - массив.

6 - поля. В отличие от значения 2, поля в список можно включить в произвольном порядке и из различных таблиц.

7 - файлы.

8 - структура таблицы.

Для заполнения списка используются значения, задаваемые свойством

Control.RowSource [ = cList]

Параметр cList может представлять, в зависимости от значения свойства RowSourceType, разделенный запятыми список значений, таблиц, файлов, операторы SQL, имя массива или имя файла запроса. Перечень файлов можно задать, используя символы шаблона.

В Visual Basic для вывода списков файлов, доступных устройств или папок есть специальные объекты - FileListBox, DirListBox и DriveListBox. Комбинация этих элементов дает возможность интерактивного выбора пользователем каких-либо файлов или места записи данных во время работы пользовательского приложения.

В первых двух список выводимых файлов или папок определяется свойством Path.

converted to PDF by HupBaH9I

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

Свойство Value этого элемента управления может принимать значение "истина" .T. (1) или "ложь" .F. (0). Например, при изменении данных можно создать копию файла с данными до изменения, а можно не создавать. Программно для поля проверки можно задать и третье, неопределенное состояние, когда элемент управления не находится ни в первом, ни во втором состоянии. При этом свойство Value будет иметь значение NULL или 2.

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

В отличие от Visual FoxPro в Visual Basic нет "родного" объекта Grid. Для создания таблицы вы можете использовать поставляемые вместе с Visual Basic дополнительные элементы управления - ActiveX. Об этих объектах мы расскажем в отдельном разделе этого параграфа.

Объект Grid является объектом-контейнером, который содержит объект-контейнер Columns, содержащий, в свою очередь, объект Header. Объекты Columns и Header тоже имеют свои свойства, события и методы. По умолчанию данные в каждой колонке отображаются с помощью текстового поля, но мы можем использовать для этого любой другой элемент управления, способный работать с данными. Например, ничто не мешает нам в каждой клетке Grid разместить еще один Grid.

Объект Grid является элементом управления, который позволяет эффективно работать

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

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

Grid.RecordSourceType [ = nType]

Определяет тип источника данных для заполнения Grid. Параметр nType может принимать следующие значения:

0 - таблица. Автоматически открывается таблица, указанная в свойстве RecordSource.

1 - псевдоним (по умолчанию).

2 - по выбору пользователя. Источник данных устанавливает пользователь во время работы программы.

3 - запрос. В свойстве RecordSource должно быть указано имя файла-запроса (QPR).

Grid.RecordSource [ = cName]

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

время работы программы при каждом обновлении Grid. К таким свойствам относятся:

DynamicAlignment - выравнивание данных;

DynamicCurrentControl - используемый элемент управления;

DynamicForeColor - цвет символов;

DynamicBackColor - цвет фона;

DynamicFontName - имя шрифта;

DynamicFontSize - размер шрифта;

DynamicFontBold - полужирное начертание шрифта;

DynamicFontItalic - курсивное начертание шрифта;

DynamicFontStrikeThru - перечеркнутое начертание шрифта;

DynamicFontUnderline - подчеркнутое начертание шрифта.

Объекты для управления работой приложения

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

converted to PDF by HupBaH9I

работы с данными.

Наиболее часто используемым объектом для управления работой приложения, несомненно, является элемент управления CommandButton - кнопка управления.

Объект CommandButton создает отдельную управляющую кнопку. Управляющая кнопка обычно используется для запуска процедуры или события, которые реализуют какие-либо действия типа закрытия формы, перемещения к другой записи в таблице и т. д.

На кнопку мы можем поместить поясняющий текст с помощью свойства Caption или изображение (только в Visual FoxPro) с помощью свойства Picture.

Чтобы не задумываться над размерами кнопки, особенно если вы интерактивно меняете на ней текст, в Visual FoxPro установите для свойства Autosize значение .T..

Как правило, действие, которое должно выполниться при нажатии на управляющую кнопку, определяется событием Click. Мы можем предусмотреть выполнение этого события и при нажатии клавиши Enter, для одной из двух или более управляющих кнопок в форме, когда активен какой-либо другой элемент управления, с помощью свойства

CommandButton.Default [ = lExpression]

Если для указанной кнопки параметр lExpression равен .T., то эта кнопка сработает при нажатии клавиши Enter на любом другом элементе управления в форме. По умолчанию значение lExpression равно .F.. Естественно, только одна кнопка в форме может иметь значение lExpression, равное .T..

Совершенно аналогично для одной из управляющих кнопок в форме мы можем предусмотреть выполнение присвоенного ей действия при нажатии клавиши Esc с помощью свойства

CommandButton.Cancel [ = lExpression]

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

Обратите внимание, что кнопку выбора мы можем использовать только как объект для создания группы кнопок выбора. Если вы используете визуальные средства проектирования, то кнопка выбора как объект может использоваться в Visual FoxPro только в Конструкторе класса.

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

Стоит отметить, что в Visual FoxPro для создания сразу нескольких кнопок существуют соответствующие объекты CommandButtonGroup и OptionButtonGroup. Их применение

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

Объект Timer - таймер (счетчик времени) - позволяет задать интервал времени или продолжительность выполнения каких-либо действий в программе. В отличие от других элементов управления, этот объект не виден пользователю во время работы программы. Его

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

Основным свойством для таймера, которое позволяет задать интервал времени между его срабатыванием (выполнением события Timer), является

Timer.Interval [ = nTime]

По умолчанию значение nTime равно 0, что препятствует срабатыванию таймера. Максимальное значение параметра nTime может быть равным 2147483647 миллисекунд, что превышает продолжительность 24 дней. При выборе значения для интервала срабатывания таймера необходимо учитывать следующее:

В связи с тем, что система вырабатывает прерывания с частотой 18 раз в секунду, реальное значение интервала не может быть меньше, чем 56 миллисекунд.

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

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

Для сброса времени отсчета интервала и установки его отсчета с нуля используется метод

Reset.

В Visual Basic своеобразный элемент управления в виде движка может быть выполнен на основе объектов HScrollBar и VScrollBar. Эти же объекты могут быть использованы для прокрутки длинных списков или больших объемов данных.

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

converted to PDF by HupBaH9I

Объект Image создает элемент управления в виде изображения формата BMP. Может использоваться для создания областей на форме, реагирующих на действия пользователя.

В Visual Basic кроме объекта Image есть и объект PictureBox, который обладает расширенной функциональностью, например, может выводить дополнительно изображения в формате ICO и WMF, но работает медленнее.

Источник изображения для этого объекта устанавливается с помощью свойства

Control.Picture = cFileName

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

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

Control.Alignment [ = nValue]

Если параметр nValue будет равен 0 (по умолчанию), то текст в метке выравнивается по левому краю, если 1 - по правому, если 2 - по центру.

Label.WordWrap [ = lExpression]

Позволяет регулировать процесс изменения текста, заполняющего метку при изменении ее размера. По умолчанию параметр lExpression равен .F. и текст в метке не переносится между строками, при этом горизонтальный размер метки изменяется так, чтобы вместить текст по длине, а вертикальный остается без изменения, чтобы вместить имеющееся число строк текста с учетом размера шрифта. Если параметр lExpression равен .T., то текст может переноситься между

строками с изменением вертикального размера метки в зависимости от длины текста и размера шрифта. При этом свойство AutoSize игнорируется.

Object.BorderStyle [ = nStyle]

Это свойство определяет вид рамки для метки. По умолчанию параметр nStyle равен 0 и рамка не изображается. Если параметр nStyle равен 1, то метку будет окаймлять одинарная линия.

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

Объект Line создает элемент управления в виде линии, а Shape - в виде прямоугольника, окружности или овала. Требуемая форма последнего объекта в Visual FoxPro определяется

свойством

Shape.Curvature [ = nCurve]

По умолчанию параметр nCurve равен 0 и рисуется прямоугольник. Если значение параметра nCurve находится в диапазоне от 1 до 98, то будет рисоваться прямоугольник со все более скругленными углами, если 99 - круг или эллипс.

В Visual Basic форма объекта определяется другим свойством и более жестко

Object.Shape [ = Value]

Параметр может принимать одно из следующих значений:

0 - прямоугольник (по умолчанию);

1 - квадрат;

2 - овал;

3 - окружность;

4 - прямоугольник со скругленными углами;

5 - квадрат со скругленными углами.

ВVisual Basic объекты Line и Shape выполняют чисто оформительские функции, так как не реагируют на события. Аналогом объекта Shape, как элемента управления, в Visual Basic

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

Соседние файлы в предмете Программирование на Delphi