Объект
Extender
Объект Extender предоставляет некоторые основные свойства данного элемента управления, такие как Name, Width и Height. Эти свойства поддерживаются непосредственно операционной системой и при изменении их значения процедура Property Let не вызывается. Как известно, свойство Name элемента управления может быть изменено в любое время, если элемент управления используется в режиме конструирования, но процедура Property для этого свойства не существует. Можно выяснить, какое имя назначено пользователем элементу, вызвав свойство Name объекта Extender. Объект Extender является также шлюзом к некоторым
свойствам родительского элемента управления, на котором расположен данный элемент управления.
Свойство Name. Существует возможность выяснить имя контейнерного элемента управления и его размеры. Можно обратиться к объекту Extender, используя следующий вызов:
UserControl.Extender.extProperty
где
extProperty - имя свойства объекта Extender. Имя заказного элемента управления возвращается следующим ниже выражением.
UserControl.Extender.Name
Примечание
Но действительно ли нужно вызывать объект Extender для выяснения имени элемента управления в самом элементе управления? Не перестарались ли мы? Нет, элемент управления, на самом деле, не знает собственного имени! Пользователь может изменять свойство Name элемента управления в любое время в течение всего конструирования, а для того, чтобы прочитать имя элемента управления, необходимо действительно воспользоваться услугами объекта Extender. Для использования свойств такого типа нет необходимости в методах Property Get и Property Let.
Свойства Width и Height. Эти свойства возвращают размеры элемента управления. Используйте следующие ниже вызовы:
UserControl.Extender.Width
и
UserControl.Extender.Height
Свойства Tag и Index. Это еще два свойства, которые поддерживает Visual Basic. Они не являются свойствами объекта Extender (хотя синтаксис указывает на обратное). Это свойства специального элемента управления, к которым нельзя обратиться непосредственно. Код для поддержки этих свойств не был добавлен, но, тем не менее, они появляются в окне свойств элемента управления. Поскольку их значения поддерживаются самим Visual Basic, то доступ к ним можно получить только через объект Extender.
Ambient
Объект Ambient подобен объекту Extender в том смысле, что он предоставляет информацию об окружении элемента управления. И, фактически,'эти два объекта иногда перекрывают друг друга. Объект Ambient дает коду элемента управления информацию о цвете фона контейнера, шрифте и т.д. Единственное действительно важное свойство объекта Ambient — UserMode, которое указывает на то, действует ли элемент управления в режиме конструирования или в режиме выполнения программы.
Как известно из опыта работы с обычными элементами управления, все элементы управления VB функционируют в режимах конструирования и выполнения. Так как элемент управления ведет себя одинаково в обоих режимах, то нет необходимости различать их. При конструировании элементов управления ActiveX, однако, часто необходимо дифференцировать режимы работы в самом коде и реагировать на некоторые события по-разному, в зависимости от того, используется ли элемент управления в режиме конструирования или в режиме выполнения.
Свойство UserMode. Это свойство принимает значение True. когда элемент управления действует в режиме выполнения, или False, когда элемент управления действует в режиме конструирования. Для иллюстрации работы этого свойства попробуем отображать текст "Design Mode", когда элемент находится в режиме конструирования. Откройте код обработчика события Paint и вставьте следующие строки в конец кода.
Программа 16.9. Использование свойства UserMode
Private Sub UserControl_Paint()
DrawCaption
OldFontSize = UserControl.Font.Size
UserControl.Font.Size = 10
If Not Ambient.UserMode Then
UserControl.CurrentX = 0
UserControl.CurrentY = 0
UserControl.Print "Design Mode"
End If
UserControl.Font.Size = OldFontSize
End Sub
Эти операторы определяют, используется элемент управление в режиме конструирования или режиме выполнения. В режиме конструирования строка "Design
Mode" отображается в верхнем левом углу, как показано на рис. 16.8. В данном случае необходимы операторы, сохраняющие и восстанавливающие размер шрифта, в противном случае надпись "FLEXLabel Control" будет отображаться тем же маленьким шрифтом, что и строка "Design Mode", либо, наоборот, строка будет отображаться тем же большим шрифтом, что и надпись. Код устанавливает малый размер шрифта, отображает строку и восстанавливает исходный размер шрифта.
Database
В предыдущих параграфах рассматривалось содержимое базы данных. Обратим внимание на ее структуру. Даже если вы знакомы со структурой базы данных, в некоторых случаях может потребоваться определить характеристики таблиц из кода приложения. Например, понадобится информация о том, сколько полей содержит конкретная таблица или как определен индексный файл.
В приложении Database Structure (рис. 17.24) показаны объекты, описанные в этом параграфе. Сначала рассмотрим объекты, составляющие базу данных, а затем – реализацию приложения Database Structure.
Рис. 17.24. Приложение Database Structure отображает любую базу данных, созданную в Microsoft Access
Объектом верхнего уровня является объект Database, который задает базу данных. Чтобы создать объект Database и задать базу данных, объявите объектную переменную.
Dim DB As Database
Объект Database присваивается переменной DB с помощью функции OpenDatabase, которой в качестве параметра передается путь к существующей базе данных и которая возвращает объект Database.
Set DB = OpenDatabase(dbName)
Параметр
dbName — строка пути к базе данных — может быть свойством FileName элемента управления Common Dialogs. Все объекты, рассмотренные в следующих параграфах, являются свойствами объекта Database.
Каждая таблица в базе данных задается объектом
TableDef, а запрос — объектом QueryDef. Каждый из них имеет собственные свойства, подобные Name (имя таблицы или запроса) и Count (число таблиц в объекте TableDef или количество запросов в объекте QueryDef).
QueryDef: определения запросов
Кроме таблиц, база данных может содержать определения запросов. Запросы, которые обычно используются в базе данных, сохраняются в ней и вызываются по именам. Ко всем запросам в базе данных можно обращаться через объект QueryDefs, подобный объекту TableDef. Объект QueryDefs - это семейство объектов QueryDef, каждый из которых соответствует сохраненному запросу. Из программы можно обращаться к следующим свойствам семейства QueryDefs.
• Count. Возвращает число запросов, сохраненных в базе данных.
• Name. Возвращает имя запроса.
• SQL. Возвращает SQL-оператор запроса.
Число запросов, сохраненных в базе данных, можно получить с помощью следующего выражения.
DB.QueryDefs.Count
Чтобы обратиться ко всем запросам, сохраненным в базе данных, объявите объектную переменную QueryDef
Dim qry As QueryDef
а затем просмотрите элементы семейства QueryDefs с помощью цикла For Each...Next.
For Each qry In DB.QueryDefs
Debug.Print qry.Name
Next
VB6 в действии: проект DBStructure
Приложение DBStruct (см. рис. 17.24) позволяет открыть любую базу данных и просмотреть имена ее таблиц, их структуру, запросы, сохраненные в базе данных, и их определения. Таблицы и запросы базы данных отображаются в двух списках слева. Под именем каждой таблицы находятся названия ее индексов. Щелкните на имени таблицы, чтобы отобразить ее поля, или на имени запроса, чтобы отобразить его определение.
Начнем с кода кнопки Open Database.
Программа 17.14. Кнопка Open Database
Private Sub Command1_C1ick()
On Error GoTo NoDatabase
CommonDialog1.CancelError = True
CommonDialog1.Filter = "Databases|* mdb"
CommonDialogI ShowOpen
' Открытие базы данных
If CommonDialog1.fileName <> " " Then
Set DB = OpenDatabase (CommonDialog1.filename)
Label1.Caption = CommonDialog1.filename
End If
' Очистка элементов управления ListBox
FIdList.Clear
TbiList.Clear
Dim tbl As TableDef
Dim idx As Index
Dim TName As String
File
Объект File задает файл и предоставляет свойства, задающие свойства реального файла, и методы, которые позволяют копировать, перемещать и удалять файлы.
Для создания объекта File и исследования его свойств, выполните следующие действия.
1. Создайте переменную типа FileSystem Object, объявив ее следующим образом:
Dim FSys As New FileSystemObject
либо вызвав функцию CreateObject(), как показано ниже.
Set FSys = Create0b]ect ("Scripting. FileSystemObject")
2. Используйте переменную FSys для создания объекта, задающего указанный файл.
Set file = FSys.GetFile(fileName)
3. Обратимся к свойствам файла с помощью объектной переменной file.
FName = file.Name
FDate = file.DateCreated
FSize = file.Size
Рассмотрим свойства объекта File.
Свойства объекта File
Многие свойства объекта File аналогичны свойствам объекта Folder, который рассматривается в параграфе " Объект Folder" далее в этой главе.
Attributes. Это свойство используется для чтения и установки атрибутов файла. Для чтения используется следующий синтаксис.
thisFile.Attributes
Для установки необходимых атрибутов используйте такой оператор.
thisFile.Attributes = thisFile.Attributes Or new_attribute
Переменная
new_attribute
принимает любое значение, приведенное в табл. 20.2. Для изменения нескольких атрибутов комбинируйте значения с помощью логической операции ИЛИ. Например, следующий оператор
thisFile.Attributes = new_attribute
изменяет заданный атрибут, но при этом очищает все другие. Если файл имеет атрибуты "только для чтения" и "скрытый", то его свойство Attributes равно 3 (1+2 согласно табл. 20.2). Если установить атрибут "архивный", присвоив свойству Attributes значение 32, то другие два атрибута очистятся. Комбинируя новый атрибут (32) и существующие с помощью операции ИЛИ, можно задать файлу одновременно атрибуты "только для чтения", "скрытый" и "архивный".
Таблица 20.2. Допустимые значения переменной newattribute
Shell
Объект Shell — это свойство объекта Wscript, предоставляющее доступ к специальным компонентам (переменной среды и специальным папкам), а также к нескольким методам для работы с системным реестром. Рассмотрим свойства объекта Shell. Перед работой с этими свойствами необходимо создать экземпляр объекта.
Set wShell = Wscript.CreateObiect ("Wscript.Shell")
WshShortcut
Объект WshShortcut предоставляет ярлык и позволяет работать с существующими ярлыками и создавать новые. Для создания WshShortcut используются следующие операторы.
Set WShell = Wscript.CreateObject ("Wscript.Shell")
strDesktop = WShell.SpecialFolders ("Desktop")
Set aShortcut = WShell.CreateShortcut(strDesktop & _
"\Encrypt.lnk")
Если файл Encrypt.lnk существует, то переменная aShortcut
предоставляет ярлык на Рабочем столе. Если он не существует, то он будет создан.
Примечание
Новый ярлык не появится, пока он не будет сохранен методом Save.
Свойства объекта WshShortcut и его метод Save рассмотрены в следующих параграфах. Эти свойства соответствуют параметрам, которые устанавливаются на вкладке Shortcut диалогового окна свойств ярлыка (рис. 20.12).
Arguments. Задает аргументы, передаваемые ярлыку.
Description. Задает описание ярлыка.
FullName. Задает полный путь к ярлыку.
Рис. 20.12. Вкладка Shortcut окна Properties
Hotkey. Задает горячую клавишу, запускающую данную программу. Горячая клавиша состоит из модификатора и клавиши. Возможные модификаторы:
Чтобы назначить комбинацию клавиш для ярлыка, задаваемого переменной myShortCut, используется следующий оператор.
myShortCut.Hotkey =
"ALT+SHIFT+F"
IconLocation.
Задает место расположения значка для ярлыка. Обычно несколько значков хранятся в одном файле. Формат этого свойства имеет вид: Path,index.
C:\Program Files\NetMeeting\conf.exe 1
Для ярлыка NetMeeting используется первый значок из файла conf.exe.
TargetPath. Задает объект, на который ссылается ярлык.
WindowStyle. Задает стиль окна приложения, на которое указывает ярлык, после того, как приложение запущено. Стили перечислены в табл. 20.10.
Таблица 20.10. Возможные значения свойства WindowStyle
Значение | Описание | ||
0
1 2 | Нормальное
Минимизированное Максимизированное |
WorkingDirectory.
Задает рабочий каталог ярлыка.
Save. Сохраняет ярлык в файле, имя которого определяется свойством FullName.
WshNetwork
Объект WshNetwork предоставляет свойства и методы для работы с разделяемыми устройствами (дисками и принтерами) в сети, а также свойства локальных компьютеров (сетевые имена, имена доменов и т.п.). Информация об этом объекте содержится на http://www.microsoft.com.scripting.
Глава 21. Visual Basic и Web
• Объекты для просмотра Web
• Элемент управления WebBrowser и объект InternetExplorer
• Использование гиперссылок в приложениях Visual Basic
• Модель написания сценария Internet Explorer
• Построение элементов управления для использования в Internet
Мы рассмотрели использование VBScript для написания сценария Web-страниц. В этой главе показано слияние рабочего стола и Web, приведены объекты и примеры. Первая рассматриваемая тема - элемент управления WebBrowser, который позволяет отображать HTML-документы в приложениях Visual Basic. При помощи этого элемента управления можно разработать форму для соединения пользователя с Web-узлом (или страницей) и воспроизведения домашней страницы, как с помощью Internet Explorer. Поскольку элемент управления WebBrowser не предусматривает никаких средств навигации, можно ограничить пользователя только собственным узлом (если он не содержит гиперссылки на другие узлы).
В корпоративной среде разрабатываются формы, отображающие объявления, специальные инструкции и все типы информации, которые часто изменяются. Пользователю не нужно запускать броузер для просмотра этой информации. Элемент управления WebBrowser позволяет пользователям получать информацию из приложений, которыми они пользуются ежедневно.
Элемент управления WebBrowser, как и Internet Explorer, может отображать HTML-страницы, заявленные заблаговременно и находящиеся на сервере (или жестком диске). Можно непосредственно манипулировать документом при помощи объектов Internet Explorer Scripting Object Model. С их помощью пишутся приложения Visual Basic, генерирующие код HTML и помещающие его на WebBrowser. Другими словами, возможна разработка приложений Visual Basic, которые генерируют HTML-документы "на лету" и отображают их при помощи элемента управления WebBrowser. Это очень удобно, особенно при разработке средств диалоговых консультаций.
Последняя тема этой главы — создание элемента управления
ActiveX для загрузки информации из Internet. Можно разработать элементы управления ActiveX, которые используют подсоединения к Internet для загрузки информации из сети. В этой главе показано, как это делается. Такие элементы управления называются Internet-enabled, и основной их функцией является подключение к серверу.
Примечание
Другая интересная тема — документы ActiveX. Они были введены с появлением VB5 и являются приложениями, которые могут выполняться в окне Internet Explorer. Документы ActiveX могут запускаться на выполнение дистанционно — через броузер. Но поскольку документы ActiveX — не самые распространенные приложения, разрабатываемые с использованием Visual Basic, эта тема в книге не рассматривается.
InternetExplorer
Объект InternetExplorer позволяет запустить экземпляр Internet Explorer из приложения и манипулировать им с помощью OLE. Он поддерживает те же свойства и методы, что и элемент управления WebBrowser, и имеет дополнительные возможности. Кратко рассмотрим свойства и методы этого объекта, но сначала создадим приложение, которое управляет InternetExplorer. (IExplore на компакт-диске).
Рис. 21.2. Страница Calendar.htm, открытая приложением Browser
VB6 в действии: проект Explore
Чтобы установить ссылку на Internet Explorer из проекта, добавьте ссылку на объект InternetExplorer Для этого выполните следующие действия.
1. Откройте новый проект, выбрав тип проекта Standard EXE
2. Выберите команду References (Ссылки) меню Project (Проект), чтобы открыть диалоговое окно References.
3. Установите флажок Microsoft Internet Controls.
Новый значок на панели элементов управления не появится. Но если открыть окно Object Browser, то можно обнаружить, что класс Internet Explorer был добавлен к проекту. В окне Members будут видны свойства и методы класса IntemetExplorer. С их помощью можно управлять Internet Explorer посредством OLE.
Построим приложение, управляющее одним или несколькими экземплярами IntemetExplorer (рис. 21.3). Пользователь может выбрать адрес из элемента управления ComboBox в окне Visual Basic и щелкнуть на кнопке Show URL, чтобы запустить экземпляр Internet Explorer, в котором воспроизводится выбранный пользователем URL.
Рис. 21.3. Использование приложения IExplore для управления Internet Explorer
Далее выполните следующие действия.
4. Создайте форму, подобную показанной на рис. 21.3.
5. Объявите переменную, которая обращается к элементам класса IntemetExplorer.
Dim IE As New IntemetExplorer
6. Добавьте следующий код инициализации в событие, обрабатываемое при загрузке формы.
Private Sub Form_Load()
List1.AddItem "microsoft"
List1.AddItem "sybex"
List1.AddItem "infoseek"
List1.AddItem "realaudio"
Response
Этот объект используется для пересылки информации клиенту. ASP-файлы могут содержать HTML-код, который просто пересылается клиенту. Если возникает необходимость управлять потоком вывода из программы, то используется метод Write объекта Response. Он поддерживает следующие методы и свойства.
Метод Write
Все то, что записано в объект Response с помощью метода Write, пересылается клиенту. Информация, записываемая с помощью метода Write, является HTML-документом (как и при использовании одноименного метода объекта Document). Приведем пример использования метода Write.
Программа 22.4. Использование метода Response.Write
<HTML>
<SCRIPT LANGUAGE=VBScript RUNAT=Server>
Response.Write "<HTML>"
Response.Write "<HEAD>"
Response.Write "<TITLE>Response.Write Demo</TITLE>"
Response.Write "</HEAD>"
Response.Write "<H1>"
Response.Write "Response Object:Write Method"
Response.Write "</H1>"
Response.Write "This document was created on the fly by an ASP
file on the server"
Response.Write "</HTML>"
</SCRIPT>
</HTML>
Внешние теги <HTML> определяют границы ASP-файла (в данном случае они необязательны), а теги, записанные в объект Response, ограничивают HTML-файл, который виден на экране клиента. Если существует метод, используемый едва ли Не в каждом ASP-файле, то это метод Response.Write. Примеры данной главы не являются исключением из правил.
Метод Write объекта Response является основным способом пересылки данных клиенту. Программа 22.4 достаточно тривиальна. Этот же результат можно было получить непосредственным использованием HTML-тегов или метода Write объекта Document.
Метод Redirect
Этот метод переадресует клиента на другой URL. Если URL вашего узла изменился, то напишите небольшое ASP-приложение для автоматической переадресации клиентов на новый URL.
<HTML>
<%
Response.Write "Our site was moved at a new URL."
Request
Для взаимодействия с пользователем сценарий должен запрашивать информацию, вводимую пользователем в форму, и читать значения из
cookies. Появление ASP позволило упростить процесс чтения данных, поставляемых клиентом, путем инкапсуляции всей совокупности сложных процедур в несколько свойств объекта Request. Этот объект - один из основных инструментов построения серверных сценариев Объект Request обладает пятью свойствами, и все они являются семействами.
QueryString.
Содержит значения, переданные серверу методом GET.
Form. Содержит все формы на странице.
Cookies. Содержит все cookie, записанные на клиентский компьютер Web-узлом.
ServerVariables.
Содержит все HTTP-переменные, определенные сервером
ClientCertificate.
Содержит все сертификаты клиента.
Семейство QueryString
Это семейство, наиболее часто используемое при разработке ASP-приложений Оно предоставляет доступ ко всем параметрам, переданным клиентом вместе с URL Если имена параметров на этапе разработки приложения известны, то их значения можно получить следующим образом.
reqProdName = Request.QueryString ("ProductName")
Если имена параметров на этапе разработки ASP-файла не известны или их нужно обрабатывать последовательно, то воспользуйтесь следующим циклом.
Set Params = Request.QueryString
For Each param in Params
{обработка параметра param}
Next
На рис. 22.5 показана простая HTML-страница (страница SRVRFORM.HTM в папке этой главы на компакт-диске) с единственной формой, посредством которой пользователь вводит информацию, выбирая требуемые пункты в списках.
Рис. 22.5. Типичная форма HTML-страницы
Элементы ListBox на форме имеют следующие имена: HardDisc, Memory, CD, Speaker и Software. Их возможные значения перечислены в тегах <OPTION> для каждого тега <SELECT>. Варианты выбора объема оперативной памяти (Select Memory) представлены значениями 32, 64, 128 и 256. Параметр запроса Memory имеет одно из этих значении, выбранных на форме.
Программа 22.5. Файл SRVRFORM.HTM
Server
Объект Server управляет средой, в которой выполняется серверный сценарий. Наиболее важным членом этого объекта является метод CreateObject, создающий новый экземпляр объекта зарегистрированного класса.
Метод CreateObject
Этот метод идентичен одноименной функции Visual Basic. В качестве аргумента он принимает реестровый идентификатор (Class ID) объекта и возвращает его экземпляр. Метод имеет следующий синтаксис.
Server. CreateObject ("progID")
Для получения доступа к базе данных с помощью ADO-компонента необходимо сначала создать объекты Connection и Recordset с использованием следующих операторов (подробная информация приведена в параграфе "Использование ADO").
Set ADOConnection = Server.CreateObject ("ADODB.Connection")
Set ADORS = Server.CreateObject ("ADODB.Recordset")
Аналогично, необходимо создавать объектные переменные для доступа к другим базовым компонентам ASP, например, File Access или Adviertisement Rotator. Объектные переменные следует создавать для доступа к компонентам ActiveX, разработанным вами. В параграфе " Использование ADO" можно узнать, как установить связь с базой данных, используя объектные переменные. В параграфе "Взаимодействие с компонентами ActiveX" в конце этой главы рассмотрено, как создать объектную переменную для взаимодействия с пользовательскими компонентами ActiveX, работающими на сервере.
Метод MapPath
Это еще один широко используемый метод объекта
Server, который устанавливает соответствие между виртуальными папками и действительными путями на диске. Он чрезвычайно полезен при разработке серверных сценариев: все файлы, с которыми работает сценарий, расположены в виртуальных паПках. Можно реорганизовать структуру папок на Web-узле, затем переименовать несколько виртуальных папок, и ваши сценарии будут работать. Однако бывают случаи, когда требуется знать полный путь к файлу, а получить его можно с помощью метода MapPath.