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

converted to PDF by HupBaH9I

Dim oSchedApp As Object, oSchedTable As Object, oSchedItem As Object * Запускаем скрытую копию Schedule+

Set oSchedApp = CreateObject("SchedulePlus.Application") * Проводим процедуру регистрации

If Not oSchedApp.LoggedOn Then oSchedApp.LogOn

End If

*Устанавливаем ссылку на объект типа таблица.

*Свойство ScheduleLogged возвращает объект планирования для

*зарегистрированного пользователя.

Set oSchedTable = oSchedApp.ScheduleLogged.Contacs

*Устанавливаем ссылку на объект типа пункт (новый пункт в таблице) Set oSchedItem = oSchedTable.New

*Записываем в пункт данные с помощью его свойств

oSchedItem.SetProperties FirstName:="Андрей", LastName:="Горев", _ Notes:="Эффективная работа с СУБД на основе решений Microsoft", _ PhoneBusiness:="(812)259-4277", PhoneFax:="(812) 112-6872"

` Стираем ссылки на объекты

Set oSchedItem = Nothing

Set oSchedTable = Nothing

Set oSchedApp = Nothing End Sub

После выполнения этой программы откройте Schedule+, и вы увидите, что на вкладке Contacts появилась новая запись.

Совершенно аналогично можно записать в Schedule+ какое-либо планируемое событие. В этом

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

Sub NewAppoint()

Dim oSchedApp As Object, oSchedTable As Object, oSchedItem As Object

Set oSchedApp = CreateObject("SchedulePlus.Application")

If Not oSchedApp.LoggedOn Then

oSchedApp.LogOn

End If

'Устанавливаем ссылку на таблицу планируемых событий

Set oSchedTable = oSchedApp.ScheduleLogged.Appointments

'Создаем новое событие, в котором хотим участвовать

Set oSchedItem = oSchedTable.New ' Описываем это событие

oScedItem.SetProperties Text:="DevCon97", _

Notes:="Ежегодная международная конференция разработчиков Microsoft", _ Start:=("06/10/97 10:00"), _

End:=("06/13/97 18:00") ' Стираем ссылки на объекты

Set oSchedItem = Nothing

Set oSchedTable = Nothing

Set oSchedApp = Nothing End Sub

10.4. Применяем ActiveX

В этом параграфе на примерах иерархического списка и календаря мы опишем, как можно использовать элементы ActiveX в пользовательском приложении.

Иерархический список

Одним из поставляемых компонентов ActiveX (OCX) для средств разработки Microsoft является Outline. Необходимо сказать, что элемент управления Outline (файл MSOUTL32.OCX) представляет собой особую разновидность списка, в котором можно отображать элементы в иерархическом порядке. Этим пользуются при схематическом изображении каталогов и файлов в файловой системе. Именно такой метод применен в Windows 95 и Windows NT 4.0.

У каждого элемента в списке Outline могут быть подчиненные элементы, которые визуально

converted to PDF by HupBaH9I

представляются дополнительными уровнями с отступами. Когда элемент развертывается, его подчиненные элементы становятся видимыми. Когда элемент сворачивается, его подчиненные элементы скрываются. Элементы в списке Outline могут также сопровождаться графикой, служащей визуальным обозначением состояния элемента.

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

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

Отступ. Характеристика уровня подчиненности элемента. Каждый уровень отступа соответствует определенному уровню подчиненности, который вы задаете с помощью свойства Indent.

Значок "плюс/минус". Указывает, видимы подчиненные элементы или скрыты. Если щелкнуть мышкой на значке "плюс", подчиненные элементы становятся видимыми и значок "плюс" заменяется значком "минус". Если щелкнуть мышкой на значке "минус", подчиненные элементы скрываются и значок минус заменяется значком "плюс".

Изображения типа. Отображают состояние элемента. На рисунках с изображением типа обычно показывается, допускает ли элемент, обладающий подчиненными элементами, развертывание или свертывание. Например, изображение закрытой папки указывает на то, что элементы каталога можно развернуть. Состояние элемента определяется пользователем. Рисунок с изображением типа генерирует события PictureClick и PictureDblClick.

Текст. Символьная строка, отображаемая для элемента.

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

Свойство Style позволяет задать или запретить отображение всех или некоторых графических элементов для каждого элемента списка Outline.

Чтобы выбрать элемент списка, необходимо щелкнуть (или дважды щелкнуть) на строке с соответствующим текстом. Щелчка мышкой только на графическом элементе недостаточно.

В качестве примера рассмотрим создание формы для Администратора БД, с помощью которой он может проконтролировать доступ пользователей к полям и таблицам БД. Для отображения структуры данных в БД Auto_Store используем элемент управления Outline.

Итак, начнем с того, что в Visual FoxPro создадим новую форму. Затем, выбрав команду Options из меню Tools, активизируем вкладку Controls. На данной вкладке в списке Selected установим крестик на пункте Outline Control, как это показано на рис. 10.11. Далее нажмем кнопку View Classes панели инструментов Controls и в открывшемся меню выберем OLE Controls. На рис. 10.12 показано меню кнопки View Classes. Таким образом, у вас появится возможность визуально поместить данный элемент управления в форму посредством нажатия кнопки Outline Control (рис. 10.13). Однако в Visual FoxPro есть и более простой способ подключения элементов управления ActiveX, включающий в себя ледующие действия:

converted to PDF by HupBaH9I

Рис. 10.11.

Рис. 10.12.

Рис. 10.13.

1.Создаем новую форму.

2.Нажимаем кнопку OLE Container Control панели инструментов Controls.

3.Обводим мышкой контур на форме для элемента управления Outline Control.

4.В открывшемся диалоговом окне Insert Object выбираем кнопку Insert Control и в списке

Control Type дважды щелкаем по элементу Outline Control (рис. 10.14).

Независимо от выбранного варианта действия в форме появится новый объект (рис. 10.15). Для определения свойств объекта Outline нажмите правую кнопку мыши на данном объектом и из контекстного меню выберите команду Properties.

converted to PDF by HupBaH9I

Рис. 10.14. Диалоговое окно Insert Object для размещения объекта Outline Control

Рис. 10.15. Элемент управления Outline в разрабатываемой форме

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

Properties активизируем вкладку Pictures, где для свойств PictureClosed и PictureOpen установим соответствующие графические файлы. Найти их на диске можно с помощью диалогового окна, вызываемого при нажатии кнопки Browse (рис. 10.16).

converted to PDF by HupBaH9I

Рис. 10.16. Вкладка Pictures в диалоговом окне свойств Outline Control

Для определения цвета фона (BackColor) и цвета текста (ForeColor) в диалоговом окне Properties активизируем вкладку Colors, где для свойства ForeColor определяем синий цвет (рис. 10.17).

Рис. 10.17.

На рис. 10.18 показан Конструктор формы, использующий элемент управления Outline Control

и заданные свойства ForeColor, PictureClosed и PictureOpen.

converted to PDF by HupBaH9I

Рис. 10.18.

Для события Init объекта Olec1 записываем следующий код:

&&Помещаем в массив aTabList список таблиц из словаря данных.

&&В связи с установленным уровнем доступа, равным по умолчанию пяти,

&&данный список таблиц фильтруем с помощью предложения WHERE SELECT tableslist.table_name ;

FROM datavocabulary!tableslist ;

WHERE ALLT(Tableslist.table_name)<<>>"Sale" ;

AND ALLT(Tableslist.table_name)<<>>"Account" ;

AND ALLT(Tableslist.table_name)<<>>"Customer" ;

AND ALLT(Tableslist.table_name)<<>>"Order" ;

AND ALLT(Tableslist.table_name)<<>>"Salesman" ;

INTO ARRAY aTabList

&&Определяем значение переменной nnPabl nnPabl=0

&&Последовательно заносим список полей для каждой таблицы

&&в массивы 1nnAr, 2nnAr, 3nnAr, <193>

&&После чего в объект Olec1 добавляем имена таблиц и соответствующих

&&этим таблицам полей, а для каждого поля устанавливаем отступ (indent)=2

&&и тип изображения (PictureType)=2

FOR X=1 TO ALEN(aTabList) ThisForm.Olec1.AddItem(ALLT(aTabList(X))) nnTab=ALLT(aTabList(X)) nnAr="nnAr"+ALLT(STR(X))

SELECT Tables.field_name ; FROM datavocabulary!tables ;

WHERE Tables.table_name = nnTab ; INTO ARRAY &nnAr nnAddItem="ThisForm.Olec1.AddItem" nnArn="nnAr"+ALLT(STR(X))

FOR I=1 TO ALEN(&nnArn) &nnAddItem(ALLT(&nnArn(i))) nnBeby=nnPabl+X+I-1 ThisForm.Olec1.indent(nnBeby)=2 ThisForm.Olec1.PictureType(nnBeby)=2

ENDFOR nnPabl=nnPabl+ALEN(&nnArn)

ENDFOR

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