Анимация
JavaScript


Главная  Библионтека 

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [ 43 ] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146

колонок на основании данных объекта Recordset. Элемент управления DBGrid содержит коллекцию Columns для формирования набора колонок. В каждой ячейке DBGrid может отображаться как текст, так и изображение, исключая связанные или внедренные объекты. Если текст слишком большой, чтобы разместиться по длине в ячейке, то он будет автоматически перенесен на следующую строку в той же ячейке. Объект DBGrid обеспечивает возможность программной ссылки на нужную ячейку. Свойства Text и Value объекта Column содержат значение текущей ячейки. Каждая колонка поддерживает свой шрифт, тип рамки, цвет и другие атрибуты, независимо от их установки в других колонках.

В файлах GRID32.OCX и GRID16.OCX содержатся соотвественно 32- и 16- разрядные версии еще одного объекта Grid - Microsoft Grid Control. По своей функциональности он в основном аналогичен вышеописанному объекту - DBGrid.

Файл DBLIST32.OCX включает два элемента управления для вывода данных в виде списков -DBList и DBCombo. Эти элементы управления автоматически заполняют список из полей одного элемента управления Data и могут передавать данные из выбранного поля во второй элемент управления Data, например, для редактирования. Элементы управления DBList и DBCombo отличаются от стандартных элементов управления ListBox и ComboBox тем, что не требуют использования метода AddItem для формирования списка, а также поддерживают автоматический поиск без необходимости написания дополнительного кода.

В файлах MSMASK16.OCX и MSMASK32.OCX содержится элемент управления для ограничения вводимых данных по шаблону или их форматированного вывода на экран - Masked Edit Control. Этот элемент управления по использованию аналогичен стандартному элементу управления TextBox. Если вы опишете шаблон ввода, используя свойство Mask, каждое положение символа будет контролироваться по допустимому типу; станет также возможным использование заранее определенных символов, например, заключение междугородного телефонного кода в скобки: (812). При вводе данных курсор автоматически минует отображаемые символы шаблона, такие, например, как скобки в предыдущем примере. Попытка ввода символов, которые не будут соответствовать шаблону, сгенерирует событие ValidationError. Например, если задан шаблон "?###" и текущее отображаемое значение "A12.", то попытка ввести символ "B" перед "A" вызовет смещение символа "A" вправо, а так как в этом случае будет нарушен тип допустимого символа (число), то будет сгененирировано событие ValidationError.

В файлах SPIN16.OCX и SPIN32.OCX вы можете найти элемент управления SpinButton -счетчик - для ввода дискретных значений. Этот элемент управления по своим возможностям аналогичен рассмотренному ранее стандартному объекту Visual FoxPro - Spinner.

Альтернативой объекту TabStrip являются 16- и 32-разрядные версии элемента управления SSTab, который находится в файлах TABCTL32.OCX и TABCTL16.OCX. Этот элемент управления обеспечивает очень легкий путь создания многостраничных диалоговых окон в одной форме. Объект SSTab содержит страницы, каждая из которых может являться, в свою очередь, объектом-контейнером для любых других элементов управления. Используя соответствующие свойства, вы можете:

• задать число страниц;

• расположить вкладки более чем в одну строку;

• установить для вкладок соответсвующие заголовки или изображения;

• выбрать требуемый стиль оформления;

• установить размеры каждой страницы.

Во время работы программы пользователь может перемещаться между страницами с помощью клавиш Ctrl+Tab.

Разнообразить пользовательский интерфейс вам поможет использование следующих объектов

ActiveX.

В файлах GAUGE16.OCX и GAUGE32.OCX содержатся 16- и 32-разрядные версии элемента управления Gauge, широко известного среди программистов под жаргонным названием "термометр". Это шкальный индикатор, который может использоваться для визуального контроля длительности выполнения какого-то процесса аналогично уже описанному элементу управления Progress-Bar. От последнего Gauge отличается более точными показаниями, которые отслеживаются непрерывно.

С версией Visual Basic масштаба предприятия поставляется объект для доступа к внешним данным - Microsoft Remote Data Control (MSRDC), который обеспечивает доступ к внешнему источнику данных с помощью технологии ODBC. Этот элемент управления обеспечивает интерфейс между объектами для доступа к внешним данным - Remote Data Objects (RDO) и элементами управления для отображения данных, расположенных в экранной форме. Используя элемент управления MSRDC вы можете:

• установить соединение с источником данных, используя свойства MSRDC;

• создать элемент управления для перемещения между записями;



Insert Ub]c>ct

с cmeis Iram Qte Ireartritral

Control Type:

HbtittictrrCefiinl

Арах Data Bound Grid Corlrol

"*-

Calertdei Comret

Caffiincn Oialogs Contial

CtysteJ Report Oontiol

DBlia Outline Соп1то1 \Л

Fadlib Conftrol

( Con cal

Add CtmliuL..

Ineerte &пвПAлitиJйorl Oqiifrol controj into ywJr cfocumenl

Рис. 5.6.

В Visual Basic подобную процедуру вы можете выполнить в любой момент работы над приложением. В меню Tools выберите команду Custom Controls, выберите из появляющегося списка нужный объект (рис. 5.7). Соответствующий объект вы затем можете поместить в проектируюмую форму, выбрав его значок на панели инструментов ToolBox. На рис. 5.8 показана эта панель инструментов с описанными выше элементами управления.

Custom ContfoJs

varlBble Controls:

pes Data Baiirtd Gnd

........................

□ Cryslal Report CortliQl

□ □esawer-e Ar*imated Bution Corifol

□ FOmATJD OLE Control module

□ Mediavievv ] .l OLE Cpntful SMicrnHelp Gauge Control

□ MicroHelp Key Slate Contiol

H Microvolt Access CeJendar Conirol 7.0

13 Micro s oft Comm Corlrol

0Microsoft Commgn Dialog Conirol

Й Wicrotoft Data Bound List Controle

П Microsoft Date Oultire Co ntio И. 1

И Micro soft Grid Conlrot

И Microsoft MAPI Cofllrols

1Э Micro soft Masked Edii Corlrol

Cancel

gnowse..

Help

Г Show-

Г 1лsenable Object?

Г eledct items Ony

p ApSK Data Bourtd Grid-

Location: C:\W1 NDOWS\3YSTEMBGRl03£, OCX

Рис. 5.7.

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

• получать и отображать данные о текущем положении указателя записи;

• обновлять данные в источнике после их изменения пользователем.

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

В Visual FoxPro любой установленный на вашем компьютере объект ActiveX вы можете включить в форму, выбрав объект OLE Container Control, а затем в автоматически появляющемся диалоговом Insert Object окне выбрать опцию Insert Control. Из появляющегося списка можно выбрать соответствующий элемент управления, как это видно на рис. 5.6.



Tabarip TraeView DBList PictineClip MSComm

CommonDiatog Tod Bar

ImageList-- DBCmbo-

тшвш

SHQH ШШШШ

швшт щшшт

- SSTab

\--StatusRar

LlStVlOW

Outline

Cafendar--

SpinButton

MAPI Session

Grid

RichTaxtBox Progre&sBar

- Slider Control

MAPI Messages

- MaskEditBox

Рис. 5.8. Визуальные объекты и элементы управления в Visual Basic с подключенными

компонентами ActiveX

Элементы управления OLE самого различного назначения в виде файлов OCX можно создать с помощью Control Development Kit в Microsoft Visual C++ или с помощью программного обеспечения других фирм. В этом случае вам придется вручную зарегистрировать те OLE-объекты, которые вы захотите использовать, с помощью программы REGSVR32.EXE. Эта программа находится в директории SAMPLES\OLE Visual FoxPro. При запуске программы REGSVR32 имя файла OCX надо указать в качестве параметра.

5.3. Управление событиями

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

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

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

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

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

• Объекты-контейнеры не выполняют код для событий, если действия для этих событий предусмотрены во включенном в него объекте.

• Если для данного события реакция элемента управления не описана, приложение ищет код для данного события в более высоком уровне классовой иерархии. Как только такой код будет найден, он будет выполнен и дальнейший поиск прекратится. В этом случае при разработке приложения в Visual FoxPro не забудьте про оператор "::", с помощью которого можно выполнить код более высокого уровня.

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

PROCEDURE Object.Init

[LPARAMETERS Paraml, ParamI,...]



0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 [ 43 ] 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146