|
Программирование >> Разработка пользовательского интерфейса
Глава 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]
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |