Программирование >>  Разработка пользовательского интерфейса 

1 ... 99 100 101 [ 102 ] 103 104 105 ... 147


Глава 9

Увеличиваем размер указанного устройства With objNewDatabase

.ExtendOnDevices (strDeviceName & = & CStr(lngSize)) .Shrink (lngSize)

End With

Else

SQLMakeNewDatabase = False End If

SQLMakeNewDatabaseExit:

DoCmd.Hourglass False

Exit Function SQLMakeNewDatabaseErr:

MsgBox Error & Err.Number & : & Err.Description, vbCritical, SQLMakeNewDatabase()

SQLMakeNewDatabase = False

Resume SQLMakeNewDatabaseExit End Function

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

Dim oTable As Table

Dim oCol As Column

Set db = ss.Databases( pubs )

For Each oTable In db.Tables

Выполняем для каждой таблицы в коллекции

Set oCol = New Column

oCol.AllowNulls = True

oCol.Datatype = varchar

oCol.Length = 30

oCol.Name = NewCol

oTable.BeginAlter Начинаем процесс изменения oTable.InsertColumn oCol, oTable.DoAlter Завершаем процесс изменения Next oTable

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

Alert

AlertSystem

Article

Executive

Operator

Publication

RemoteServer

SubscriberInfo

Subscription

Table

Task

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

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



Разработка пользовательского интерфейса

9.1. Инструментарий разработчика

9.2. Конструируем форму

Создание формы Прием заказов на Visual FoxPro Создание формы Прием заказов на Access

9.3. Разработка управляющего меню

Разработка меню в Visual FoxPro Разработка меню в Access

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

При работе с современными средствами разработки приложений программист с самого начала окунается в проблемы построения интерфейса. Также и мы, обсуждая проблемы работы с данными, не могли не коснуться этих проблем. В этой главе мы как бы подведем итог обсуждаемым ранее вопросам под привычным лозунгом Microsoft Putting It All Together! - Объединим все вместе!

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

9.1. Инструментарий разработчика

В третьей главе мы уже рассматривали визуальный инструментарий для разработки пользовательского интерфейса. Все три пакета для построения пользовательских программ (Visual FoxPro, Visual Basic и Access) имеют соответствующие средства, выполненные в виде Конструкторов и Мастеров. Если в Visual Basic и Access основным визуальным инструментарием для построения пользовательского интерфейса следует считать Конструктор формы, то в Visual FoxPro сюда следует отнести и Конструктор класса, который может эффективно использоваться для разработки многократно используемых элементов от отдельных объектов до целых форм.

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

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

И все-таки даже такие мощные программные средства порой бессильны перед жесткими требованиями пользователя и неудержимым желанием программиста сделать свою программу самой совершенной в мире. В этом случае на помощь можно призвать дополнительные средства в виде богатого набора функций операционной системы - Windows API.

Windows API - это интерфейс, позволяющий прикладной программе использовать функции, встроенные в операционную систему.

При использовании функций Windows API программист может реализовать следующие преимущества :

Повышение скорости работы. В большинстве случаев функции, встроенные в ОС,

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



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

Отсутствие потребности в дополнительных модулях. Альтернативой использования Windows API является приобретение дополнительных компонентов, обеспечивающих расширенную функциональность, что повышает затраты на разработку пользовательского приложения и создает дополнительные сложности при его распространении.

В то же время мы рекомендуем использовать Windows API только в крайнем случае и при необходимости повышения скорости работы программы, так как здесь программисту приходится сталкиваться с более сложными программными конструкциями. Это, естественно, требует времени на освоение, так как те сложные задачи, которые были скрыты от программиста при использовании любимого языка программирования высокого уровня с приставкой Visual, теперь придется решать самому. При этом учтите, что Microsoft до сих не выпустила хорошего руководства или четко структурированного файла контекстной помощи по Windows API и вам придется долго блуждать среди многих сотен функций с мудреными названиями. С профессиональными версиями Visual FoxPro (только на CD-ROM) и Visual Basic поставляется файл со справочными сведениями по Windows API, но он содержит синтаксис для программирования на языке Си.

Если вы все же не раздумали использовать функции Windows API, в своей программе вам придется позаботиться о двух необходимых составляющих. Во-первых, вы должны определить путь для передачи параметров в вызываемую функцию. Во-вторых - определить механизм для получения значения, возвращаемого функцией. Эти задачи выполняет команда DECLARE.

В Visual Basic она имеет следующий синтаксис:

[Public Private] Declare Function FunctionName Lib LibraryName [Alias AliasName ] [([ParamList])][As ParamType]

В Visual FoxPro при том же составе параметров синтаксис команды выглядит чуть иначе:

DECLARE [cFunctionType] FunctionName IN LibraryName [AS AliasName] [cParamType1 [@] ParamName1,cParamType2 [@] ParamName2, ...]

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

Сведения о функции определяются ее именем FunctionName, заданном в библиотеке DLL. Имя функции следует указывать с соблюдением регистра! Если функция возвращает какое-либо значение, перед ее именем следует указать тип возвращаемого значения cFunctionType. Вероятно, здесь уместно напомнить, что в Visual Basic объявление Public используется для обеспечения доступа к функции из всех процедур, раположенных во всех модулях. Объявление Private обеспечивает доступ к функции только внутри данного модуля.

Имя библиотеки DLL Windows LibraryName, содержащей требуемую функцию. Если вы хотите использовать функцию, входящую в API Windows, то здесь достаточно написать WIN32API, что автоматически обеспечит поиск функции в одном из следующих файлов:

KERNEL32.DLL, GDI32.DLL, USER32.DLL, MPR.DLL или ADVAPI32. DLL.

Псевдоним имени функции для использования в Visual FoxPro или в Visual Basic. Его удобно использовать для сокращения слишком длинного названия функции или при угрозе совпадения имени функции с зарезервированным словом.

Список передаваемых параметров включает обозначение типа и имени параметров, передаваемых из приложения в функцию DLL Windows. Знак @ после типа параметра показывает, что он будет передаваться по ссылке, а не по значению. Имя параметра никак не используется ни приложением, ни функцией DLL и может применяться в команде только в информационных целях. Если функция DLL требует в качестве аргумента передачи нулевого указателя (null pointer), то его следует передавать как целое число по значению.

Для передачи параметров в Visual Basic следует использовать следующий синтаксис: [Optional][ByVal ByRef][ParamArray] varname[( )][As ParamType]



1 ... 99 100 101 [ 102 ] 103 104 105 ... 147

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика