Программирование в среде Visual Basic for Applications (1082430), страница 19
Текст из файла (страница 19)
Две последние инструкции связаны с удалением объектов %оге)Агт с рабочего листа. Подсказка со стороны Масгойесогйег очень полезна, так как у объекта Ноге)Аг1 нет метода Ре1е1е. Удаляемый объект необходимо выбрать, что приведет к образованию объекта Яе1ес11оп. Удалять надо не непосредственно объект ЪуогбАг1, а полученный указанным способом объект Бе1ес11оп.
Эта идея как раз и реализована в данном приложении. Самостоятелькоезадаяие Разработайте приложение, с помощью которого можно: ° либо Вычислить значение заданной функции, например у(х)=сов (х)/(х + х ), при вводимом значении аргумента и вывести найденное значение в поло диалогового окна; ° либо протабулировать значения этой функции на заданном интервале (с заданным шагом, вывести результат табуляции в список и построить график на рабочем листе). Операция, выполняемая над функцией, должна устанавливаться выбором переключателя из группы Операции диалоговых окон Значение или График. При выборе переключателя Значение в диалоговом окне должны отображаться только элементы управления, относящиеся к нахождению функции при вводимом значении аргумента (рис.
18.5), а при выборе переключателя График — в диалоговом окне должны отображаться только элементы управления, относящиеся к построению графика функции (рис. 18.6). Рис. 18.5. Диалоговое окно «Функция» при выборе переключателя «Значениеа 146 Програм.мирование в среде ггкиа! Ваьк гог Аррбсалопз Рис. 18.6. Диалоговое окно «Функция» при выборе переключателя «График» 19. Заполнение базы данных Разработаем приложение, позволяющее при помощи диалогового окна заполнять базу данных (14)). Конструируя данное приложение, вы сможете освоить такие опсрации, как: ° последовательное заполнение плоской базы данных, ° программирование примечаний, ° программирование текстовых полей на рабочем листе, ° использование переключателя и флажков, ° создание пользовательского заголовка окна приложения, ° программное закрепление области на рабочем листе.
Для заполнения базы данных на рабочем листе с помощью редактора пользовательских форм создадим диалоговое окно Регистрация туристов фирмы «Маню> (рис. 19.1). При инициализации диалогового окна программа проверяет, есть ли заголовки у полей создаваемой базы данных о регистрации туристов. Если этих заголовков нет, то программа автоматически создает их, снабжая примечаниями, имеющими пояснительный текст о содержании полей. Выбор переключателя о программе приведет к отображению на экране текстового поля с пояснениями к данной программе.
Снятие этого флажка удаляет данное поле. Обратите внимание, что у окна приложения пользовательское имя Регистрация. База данных туристов. Обсудим, как приведенная ниже программа решает перечисленные задачи и что происходит в программе. Программирование в среде Мвиа1 Вапс гог Аррбсапот 148 1.
Активизирует диалоговое окно. 2. Назначает клавише Езс функцию кнопки Отмена, а клавише Еп1ег — Вычислить. На- значает кнопкам Вычислить, Отмена и Пе- реключателю всплывающие Подсказки. 3. Закрепляет первую строку так, чтобы она всегда отображалась на экране. Создает заго- ловки полей базы данных, если онн еще не были созданы. 4. Устанавливает начальное значение пере- ключателя о программе. 5. Заполняет раскрывающийся список.
6. Устанавливает текст заголовка окна при- ложения Нвегроггп 1п111а11яе 1. Определяет номер первой пустой строки в базе данных о регистрации туристов, куда будет введена новая запись. 2. Считывает данные из диалогового окна. 3. Вводит нх в первую пустую строку Нажатие кнопки Вычислить запус- кает на выполнение процедуру Сопт- пзапйВнггоп1 С!1с1с Рис. 19.1. Диалоговое окно «Регистрация туристов фирмы "Маяк" » 19. Заполнение базы данных 149 Вр(пВптгоп1 С(заике Вводит значение в поле Продолжительность тура Тояя1еВпгсоп1 СВс1г Отображает текстовое поле в выбранном состоянии и удаляет его — в снятом состоянии Создает заголовки полей базы данных о ре- гистрации туристов. Эти заголовки отобра- жаются с примечаниями Заголовок- РабочегоЛиста я(1)) + 1 окна Ртфчате ЯцЬ СотппапбВцттоп1 С11сК () Процедура считывания информации из диалогового окна' и записи, ее в базу данных на рабочем листе Смысл переменных однозначно определен их названиями Рхп Фамилия Ая Бтттпо * 20 Ргп Имя Ая Бтт1по * 20 Ркп Пол Ая Бтт1по * 3 Рфп ВыбранныйТур Ая Беттино * 20 Ргп Оплачено Ая Бттапо * 3 Ргп Фото Ая Бттгпд * 3 Ргп Паспорт Ая Бттфпд * 3 Рвп Срок Ая Яттапд * 3 Рьп НомерСтроки Ая 1птедет НомерСтроки — номер первой пустой строки рабочего листа НомерСтроки= Арр11сатгоп.СоцпСА(АстьчеЯЬееС.Со1цпп Считывание инФормации из диалогового в переменные Х1тЬ Ряеткотп1 Фамилия = .ТехтВох1.техт Имя = .Техтвох2.техт Срок = .ТехтВохз.техт 11 .Орт1опВпттоп1.Ча1ое = Ттце ТЬеп Пол = "Муж" Е1яе Пол = тЖен" Епб 11 11 .СЬесКВох1.Ча1це = Ттце ТЬеп Оплачено = "Да" Е1яе Оплачено = "Нет" Епд 11 11 .СЬесхвох2.Ча1це = Ттое Тпеп Фото = "Да" Е1яе Фото = "Нет" Епб 11 150 Программирование в среде Пвиа! Вав(с1от АррВсаВолв 11 .СЬесЕВохЗ.Ча1це = Тгце ТЬеп Паспорт = тДа" Е1ве Паспорт = "Нет" Епс? 11 ВыбранныйТур = .СотЬОВох1.ЬЕвт(.СоиЬоВох1.ПЕвт1пс?ех, 0) Епб ХЕтЬ Ввод данных в строку с номером НомерСтроки рабочего листа ХТГЬ Асс1че ЯЬеет .Се11в(НомерСтроки, 1) .Ча1це = Фамилия .Се11в(НомерСтроки, 2) .Ча1це = Имя .Се11в(НомерСтроки, 3) .Ча1це = Пол .Се11в(НомерСтроки, 4) .Ча1це = ВыбранныйТур .Се11в(НомерСтроки, 5) .Ча1це = Оплачено .Се11в(Номерстроки, 6).Ча1ое = Фото .
Се11в (НомерСтроки, 7) .Ча1це = Паспорт .Се11в(НомерСтроки, 8).Ча1це = Срок Епд Х1тЬ Епс? ЯцЬ Рг1чате ЯцЬ Согпиапс?Вцттоп2 С11с)с () Процедура закрытия диалогового окна Установка заголовка окна приложения по умолчанию Пвегропп1.НЕс?е Арр11сат?оп.сарЕЕоп = Етрту Аст1чеЯЬееб.дтаи1пдОЬЗеств.пе1ете Епа Яць Рг1чате ЯцЬ Яр1пВцттоп1 СЬапде() Процедура ввода значения счетчика в поле ввода Х1?Ь Пветроги1 .ТехтВохЗ.Техт = СЯтг(.Яр?пВц? Гоп1.Ча1це) епб х1тЬ Епс? ЯцЬ Рт1чате ЯцЬ ТехГВохЗ СЬапде() Процедура установки значения счетчика из поля ввода ХЕГЬ Пвегроти1 .Яр1пВцгбоп1.Ча1це = С1пт1.ТехГВохЗ.Техт) Епд Х1тЬ Епс? ЯцЬ Рг1чате яоЬ Тодд1еВцттоп1 С11с)с() Процедура отображения или удаления поля с текстом 11 Тодд1еВцетоп1.Ча1це = Тгце ТЬеп Аст1чеЯЬеет.бтаи1пдОЬЗеств.пе1ете Аст1чеЯЬееГ.ЯЬарев.лддтехтЬох 19. Заполнение базы данных 151 Роют — -10 (щяотехтОг1ептат1опног1зопта1,11.25, 44.25, 10б.5, Яб()).яе1ест Яе1ест1оп.СЬагастегя.тех И1ГЬ яе1есвйоп.Ропп .
Иаще = "Аг1а1 Сут" .Роптбту1е = "обычный" .Я1ге = 10 .Ятг1КетЬгоцдЬ = Ра1яе .Яцрегяст1рт = Ра1яе .ЯцЬясг1рт = Ра1яе .Оцт11пеуопт = Ра1ве .ЯЬайоы = Ра1ве .Ппйет11пе = х10пйег11пеЯгу1е)яопе .Со1ог1пйех = х1Ацтощат1с Епй Х1ГЬ Яе1ест1оп.ЯЬареКапде.Р111.РогеСо1ог.ЯсйещеСо1ог Яе1ест1оп.ЯЬарейапде.Р111.Ч1в1Ь1е = щвоТгце Яе1ест1оп.янарейапде.Р111.яо11й Яе1ест1оп.СЬатастегз.Техт "Программа составлена" я СЬг(10) я "Владимиром для регистрации" Я СЬг(10) Я "клиентов" я Свт(10) я "туристической" я СЛг(10) я "фирмы" Х1ГЬ Яе1ест1оп.СЬатастегя(Ятагт:=1, БепдтЬ:=Об).
чаще = "Атйа1 Сут" .РоптЯГу1е = "обычный" .Я1ге ( .Ятг1)сеГЬгоцдЬ = Ра1яе .Яцрегясгйрт = Ра1яе .ЯцЬясг1рт = Ра1яе .Оцт11пеРопт = Ра1яе .ЯЬайои = Ра1яе .Ппйет11пе = х10пйет11пеЯту1еыопе .Со1ог1пйех = х1Ацтотатйс Епй ИЕГЬ Епй 11 15 Тодд1еВцттоп1.уа1це = Ра1яе ТЬеп Аст1чеЯЬееб.бгаи1пдОЬзеств.бе1ете Епй 15 Епй ЯцЬ Рг1чате ЯцЬ Пяегуогщ1 1п1Г1а11ге() Процедура вызова диалогового окна и задание элементов раскрывающегося списка Заголовокрабочегодиста Задание пользовательского заголовка окна приложения Арр11сат1оп.Сартйоп = "Регистрация. База данных туристов" Закрытие строки формул окна Ехсе1 Арр11сат1оп.01яр1аууогщц1ават = Ра1яе 152 Программирование в среде Мвиа! Вав(суог Аррйса(!от Яе1еот Пол", Срок" егда ие Задание элементов раскрывающегося списка Х1тЬ Со1т1щапбвиттоп1 .ПеРаи1т = Ттие .соптто1ТфрТехт = "Ввод данных в базу данных" Епд ХЕтЬ ХТтЬ Сопепапс(Виттоп2 .Сапсе1 = Ттие .Соптто1Т1рТехт = "Кнопка отмены" Епс) ХТтЬ Орт1опВиттоп1.Ча1ие = Ттие ХЕтЬ Тодд1еВиптоп1 .Ча1ие = Ра1яе .соптто1Т1рТехб = "Информация о программе" Епб ХфтЬ ХЯСЬ СощЬоВох1 .11ят = Аттау("Лондон", "Париж", "Берлин" ) .ПЯят1пбех †.
О Епс) ХТтЬ Активизация диалогового окна Пяетротщ1.ЯЬох Епс) ЯиЬ ЯиЬ ЗаголовокрабочегоЛиста() Процедура создания заголовков полей базы данных Если заголовки существуют, то досрочный выход из процедуры 11 Банде("А1").Ча1ие = "Фамилия" ТЬеп Рапде("А2") Ех1т Яиь Епс) 11 Если заголовки не существуют, то создаются заголовки полей Аст1чеЯЬеет.Се11в.С1еат Балде("А1:Н1").Ча1ие = Аттау("Фамилия", "Имя", "Выбранный Тур", "Оплачено", "Фото", "Паспорт", Еапде("А:А").Со1ищпХЕЖЬ = 12 Еапде("Р:П").Со1ищпХТЙГЬ = 14.4 Закрепляется первая строка с тем, чтобы она вс отображалась на экране Еапде!"2:2").Яе1ест Аст1чеХТпбом.ртеегерапея = Тт Еапде("А2").Яе1ест К каждому заголовку поля базы данных присоединяется примечание » Еапде("А1").АсЫСощщепт Ванде("А1").Сопппепт.ЧЕяЕЬ1е = Ра1яе Ванде("А1").Сопвпепт.техт Техт:="Фамилия клиента" Еапде("В1").АсЫСопапепт Ванде("В1").сопппепт.ч1вЕЬ1е = Ра1яе Балде("В1").Сощщепт.техт Техт:="Имя клиента" !9.
Заполнение базы данных 153 клиента" Калде("С1").АсЫСопяпепт Канде("С1").Сопаепс.ЧЕвЕЫе = Ра1яе Калде("01").Сопиево.техс Техпс="Пол Рапде("Р1").АсЫСопхоепе Калде("01").Сопзвепе.ЧЕвЕЫе = Ра1яе Калде(тп1").Сопскепс.Техв Техс:= "Направление" Ь СЬх(10) а "выбранного тура" ванде("Е1").АсЫСоптепе Капде("Е1").Сопзпепе.ЧЕвЕЫе = Ра1яе Калде("Е1").Сопслепс.Техс Техп:= "Путевка оплачена?" ь СЬх(10) а " Яа/Нет) Калде (" Р1"). АсЫСоьпиепе Калде("Р1").Со~шпепе.уаваЫе = Ра1яе Калде("Р1").Сопипепв.Техв Техв:= "Фото сданы" Ь СЬх(10) Ь "Яа/Нет) Калде(тв1").АсЫСопяпепв Канде("01").Сокявепс.ЧЕвьЫе = Ра1яе Калде("01").Сопявепв.ТехТ ТехТ:= Наличие паспорта" Ь С)зх(10) Ь "(Да/Нет) Калде("Н1").АсЫСопаъепе Калде("Н1").Сопввепе.чвв1Ь1е = Ра1яе Калде ("Н1.") .Соииепв. ТехТ ТехТ "Продолжительность" а СЬх(10) а "поездки" Епс) Зп)з В данной программе для определения первой пустой строки в заполняемой базе данных о туристах используется инструкция НомерСтроки = Арр11сапхоп.соспСА(АсххчезпееС.Со1пвпя(1)) е 1, правая часть которой вычисляет число непустых ячеек в первом столбце активного рабочего листа.
Переменной НомерСтроки присваивается значение, на единицу большее, чем число непустых строк, что естественно, так как ей должен быть присвоен номер первой непустой строки базы данных. Подобные инструкции довольно часто используются при разработке приложений, поэтому рекомендуем обратить на них внимание. Процедура ЗаголовокрабочегоЛиста выглядит сложной.
При ее написании лучше всего воспользоваться Масгойесог(1ег, 154 Программирование в среде ( /виа/ Вая/с/от Арр!/салопа который переведет производимые действия по созданию примечаний пользователем вручную на язык 1/ВА. Итак, для активизации МасгоКесог(1ег выберите команду Сервис/Макрос/Начать запись н запустите МасгоКесог(1ег на запись.
После задания всех параметров в появившемся диалоговом окне Запись макроса и нажатия кнопки ОК появится плавающая панель инструментов с кнопкой Остановить запись. Теперь все производимые действия будут записываться до тех пор, пока не будет нажата эта кнопка. Постройте примечания по следующему алгоритму: 1.