Задание: Применение элементов управления для обработки информации



Содержание

Задание: Программное формирование текстового документа. 2

Ситуация. 2

Задание. 2

Примечание. 3

Решение. 3

Задание: Применение элементов управления для обработки информации. 5

Подготовка. 5

Задание. 7

Решение. 9

Задание: Программное добавление элементов в демонстрационные материалы 12

Задание. 12

Решение. 12

Задание: Программирование приложения базы данных. 13

Ситуация. 13

Задание. 13

Решение. 14

Задание: Создание многодокументного приложения, осуществляющего работу с файлами 18

 


Задание: Программное формирование текстового документа

Ситуация:

Вам необходимо автоматизировать формирование договоров в виде документов Word. Типичный договор выглядит так, как представлено на рис. 10.2 (для простоты в этом задании вам нужно формировать только его начало). Изменяемые данные, которые должны подставляться программно, выделены зеленым цветом.

Рис. 10.2 Так должен выглядеть созданный программно договор

Задание:

- Создайте в шаблоне normal.dot пользовательскую форму с именем Dogovor, аналогичную представленной на рис. 10.3.

 

Рис. 10.3 Форма для занесения данных договора

- Создайте макрос, который по которому эта форма должна открываться, и назначьте этому макросу кнопку на панели инструментов Word.

- Создайте и сохраните на диске с именем C:\dogovortemplate.dot шаблон Word, в который будут подставляться необходимые данные, и добавьте в нужные места закладки.

- Создайте для кнопки Сформировать договор на форме программный код, при помощи которого на основе шаблона и подставляемых данных из формы формировался бы новый документ с текстом договора.

Примечание:

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

По этой же причине все данные в этом примере (включая дату и номер договора) текстовые.

 

Решение:

К пункту 1 — создание пользовательской формы:

- Откройте окно редактора Visual Basic для Word и щелкните правой кнопкой мыши по проекту Normal в Project Explorer, а затем выберите в контекстном меню Insert -> UserForm.

- В дизайнере форм сконструируйте форму, аналогичную представленной на рис. 10.1-2. В нашем примере элементы управления на форме будут называться так:

- текстовое поле для ввода города: txtCity;

- текстовое поле для ввода номера договора: txtNumber;

- текстовое поле для ввода даты: txtDate;

- текстовое поле для ввода наименования организации: txtOrg;

- текстовое поле для ввода представителя организации: txtPerson;

- текстовое поле для ввода его должности: txtTitle;

- текстовое поле для ввода юридического основания: txtLaw;

- кнопка для формирования договора: cmdDog;

- кнопка Отмена: cmdСancel.

- Настройте оформление для элементов управления по вашему вкусу. Установите значение для свойства Caption для формы как "Данные договора". Для кнопки cmdDog установите True для значения свойства Default, а для кнопки cmdCancel установите True для значения свойства Cancel. Для свойства (Name) самой формы введите значение FormDog.

К пункту 2 — создание макроса и кнопки для показа формы:

- В стандартном модуле NewMacros проекта Normal создайте новую процедуру с именем FormDog(). Код ее может быть таким:

Public Sub FormDogShow ()

FormDog.Show

End Sub

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

- В Word в меню Сервис выберите Настройка, а затем перейдите на вкладку Команды. В списке Категории выберите Макросы, а затем перетащите на любую панель инструментов макрос Normal. NewMacros. FormDogShow. Настройте для созданной кнопки подходящий формат отображения (см. главу 1 этой книги). После этого закройте окно Настройка и убедитесь, что при нажатии на эту кнопку открывается форма.

 

К пункту 3 — создание шаблона документа Word:

- Создайте новый документ Word, аналогичный представленному на рис. 10.4.

Рис. 10.4 Шаблон договора

- Поместите в нужные места этого документа закладки. Места вставки закладок можно посмотреть на рис. 10.2 (текст, выделенный зеленым). В нашем примере закладки будут называться так:

-закладка для ввода номера договора: bNumber;

-закладка для ввода города: bCity;

-закладка для ввода даты: bDate;

-закладка для ввода наименования организации: bOrg;

-закладка для ввода представителя организации: bPerson;

-закладка для ввода его должности: bTitle;

-закладка для ввода юридического основания: bLaw.

- Сохраните этот файл как шаблон Microsoft Word с именем C:\DogovorTemplate.dot.

 

К пункту 4 — создание программного кода для кнопок на форме:

- Для события Click кнопки cmdCancel введите следующий программный код:

Private Sub cmdCancel_Click()

FormDog.Hide

End Sub

- Для события Click кнопки cmdDog можно использовать следующий программный код:

Private Sub cmdDog_Click()

Dim oDoc As Document

Set oDoc = Application.Documents.Add("C:\DogovorTemplate.dot")

oDoc.Bookmarks("bNumber").Range.Text = txtNumber.Value

oDoc.Bookmarks("bCity").Range.Text = txtCity.Value

oDoc.Bookmarks("bDate").Range.Text = txtDate.Value

oDoc.Bookmarks("bOrg").Range.Text = txtOrg.Value

oDoc.Bookmarks("bTitle").Range.Text = txtTitle.Value

oDoc.Bookmarks("bPerson").Range.Text = txtPerson.Value

oDoc.Bookmarks("bLaw").Range.Text = txtLaw.Value

FormDog.Hide

oDoc.Activate

End Sub

 


Задание: Применение элементов управления для обработки информации

Подготовка:

Создайте новую книгу Excel и сохраните ее как Prikaz.xls. Заполните ячейки с A1 по A5 значениями, аналогичными представленным на рис. 5.12.

 

Рис 5.12 Список сотрудников на листе Excel

 

Откройте редактор Visual Basic и в окне Project Explorer щелкните правой кнопкой мыши по объекту "Эта книга" и в контекстном меню выберитеView Code.

В окне редактора кода для этой книги введите следующий код:

'При открытии рабочей книги показываем форму UF1

Private Sub Workbook_Open()

UF1.Show

End Sub

'Специальная процедура, которая печатает приказ в Word

Public Sub DocWrite(sPovod As String, sFio As String, bFlagPremia As Boolean, bFlagGramota As Boolean, nSummaPremii As Long, sOtvIsp As String)

Dim oWord As Word.Application

Dim oDoc As Word.Document

Set oWord = CreateObject("Word.Application")

Set oDoc = oWord.Documents.Add()

oWord.Visible = True

oDoc.Activate

With oWord.Selection

.TypeText "Приказ"

.Style = "Заголовок 1"

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.TypeText vbCrLf

.Style = "Обычный"

.TypeText vbCrLf

.TypeText " г .Кузнецк" & Space(90) & Date

.TypeText vbCrLf

. TypeText vbCrLf

. TypeText "За проявленные успехи в " & sPovod & _

" наградить " & sFio & ":"

.TypeText vbCrLf

If bFlagPremia Then

. TypeText vbTab & "- денежной премией в сумме " & nSummaPremii & " рублей"

End If

If bFlagGramota Then

.TypeText ";"

.TypeText vbCrLf

.TypeText vbTab & "- почетной грамотой."

Else

.TypeText "."

End If

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

.TypeText vbCrLf

. TypeText "Генеральный директор" & vbTab & vbTab & vbTab & "Иванов И.И."

.ParagraphFormat.Alignment = wdAlignParagraphCenter

.TypeParagraph

.TypeText vbCrLf

.TypeText vbCrLf

.ParagraphFormat.Alignment = wdAlignParagraphLeft

.TypeText Text:=("Отв. исполнитель" & sOtvIsp)

.TypeParagraph

End With

End Sub

 

Щелкните правой кнопкой мыши по вашему проекту Prikaz.xls и в контекстном меню выберите Insert -> UserForm. Выделите созданный вами объект формы и нажмите на кнопку <F4>. Настройте для свойства (Name) этой формы значение UF1.

Поместите на форму из Toolbox единственную кнопку — элемент управления CommandButton1. Установите для этой кнопки значение свойства Caption как "Напечатать приказ" и измените размеры и местонахождение этой кнопки, чтобы форма выглядела так, как представлено на рис. 5.13.

Рис. 5.13 Форма — пока с единственной кнопкой

Щелкните правой кнопкой мыши по кнопке CommandButton1 на вашей форме, в контекстном меню выберите View Code и добавьте в код событийной процедуры для события Click этой формы следующий код:

Private Sub CommandButton1_Click()

Dim sPovod As String

Dim sFio As String

Dim bFlagPremia As Boolean

Dim bFlagGramota As Boolean

Dim nSummaPremii As Long

Dim sOtvIsp As String

 

'Подставить данные из формы

sPovod = "освоении новых информационных технологий"

sFio = "Иванова Ивана Ивановича"

bFlagPremia = True

bFlagGramota = True

nSummaPremii = 100000

sOtvIsp = "Петрова П . П ."

' Конец подстановки данных

 

Call ЭтаКнига.DocWrite(sPovod, sFio, bFlagPremia, bFlagGramota, nSummaPremii, sOtvIsp)

End Sub

7) Запустите вашу форму на выполнение и убедитесь, что она работает: выводит в создаваемый документ Word приказ с фиксированными значениями.

Задание:

Измените форму таким образом, чтобы вместо присвоения переменным в выделенном комментариями блоке заранее определенных значений пользователь смог выбирать данные при помощи формы. При этом:

- Значение переменной sPovod должно выбираться из трех возможных значений: "освоении новых информационных технологий", "внедрении новых программных продуктов" и значение, которое пользователь может ввести через текстовое поле. Используйте для этого набор из трех переключателей и текстовое поле (оно должно быть спрятано, если пользователь выбрал один из двух других переключателей). По умолчанию должно подставляться "освоении новых информационных технологий".

- Значение переменной sFio должно выбираться пользователем при помощи комбинированного списка. В этот комбинированный список должны автоматически помещаться значения из всех непустых ячеек столбца A листа Excel. По умолчанию должно выбираться значение "Иванова Ивана Ивановича".

Примечание.

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

- Значения переменных bFlagPremia и bFlagGramota должны устанавливаться в зависимости от состояния двух флажков — "Премия" и "Грамота". По умолчанию оба флажка должны быть установлены.

- Если пользователь снял оба флажка, то ему должно выводиться предупреждающее сообщение "Не выбрана ни премия, ни почетная грамота!" с отменой вывода документа.

- Пользователь должен иметь возможность задавать значение переменной nSummaPremii либо при помощи полосы прокрутки с диапазоном значений от 0 руб. до 100 000 руб., либо при помощи текстового поля. Если флажок "Премия" снят, то полоса прокрутки и текстовое поле должны быть спрятаны от пользователя.

- Ход полосы прокрутки должен быть равен 100 рублям.

- По умолчанию размер премии должен быть равен 100 рублям.

- Поместите на форму еще одну кнопку "Отмена". Эта кнопка должна закрывать текущую форму и срабатывать при нажатии на клавишу <Esc>.

- В заголовке формы должно выводиться значение "Формирование приказа о выплате премии".

Общий вид формы может выглядеть, например, так, как представлено на рис. 5.14:

Рис. 5.14 Готовая форма

 

Решение:

К пункту 1 (работа с переключателем и текстовым полем):

- В окне Project Explorer два раза щелкните мышью по объекту формы UF1. Затем в ToolBox щелкните по объекту Label и отведите место этому элементу управления в верхней части формы. Щелкните правой кнопкой мыши по созданному элементу управления Label1 и в контекстном меню выберите Properties. Измените значение свойства Caption на "За что:" и при помощи свойства Font подберите подходящий шрифт и его размер.

- В ToolBox щелкните по элементу управления OptionButton и отведите на форме место этому элементу управления. Повторите эту операцию еще два раза.

- Откройте свойства первого переключателя. Измените значение свойства (Name) на optOsvoenie, а значение свойства Caption — на "освоение новых информационных технологий". Для второго переключателя поменяйте значение свойства (Name) на optVnedrenie и свойство Caption — на "внедрение новых программных продуктов", для третьего — на optDrugoe и "другое:" соответственно.

- В ToolBox щелкните по элементу управления TextBox и поместите его в нужное место формы. Установите для свойства (Name) этого элемента управления значение txtDrugoe.

- Щелкните правой кнопкой мыши по пустому месту на форме и в контекстном меню выберите View Code. Выберите событие Initialize для UserForm и введите для него следующий код:

optOsvoenie.Value = True

txtDrugoe.Visible = False

- Для события Change переключателя optDrugoe введите следующий код:

If optDrugoe.Value = True Then

txtDrugoe.Visible = True

Else

txtDrugoe.Visible = False

End If

- Перейдите к коду события Click для CommandButton1 и вместо строки

sPovod = "освоении новых информационных технологий"

введите следующий код:

If optOsvoenie . Value = True Then sPovod = "освоении новых информационных технологий"

If optVnedrenie . Value = True Then sPovod = "внедрении новых программных продуктов"

If optDrugoe.Value = True Then sPovod = txtDrugoe.Value

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

 

К пункту 2 (работа с комбинированным списком):

- Разместите на форме еще один элемент управления Label с надписью "Кого: " и настройте для него шрифт;

- Щелкните в Toolbox по элементу управления ComboBox и выделите для него место на диске. Присвойте созданному элементу управления ComboBox имя cbFIO.

- Откройте код для события Initialize нашей формы UserForm и дополните его следующими строками:

Dim oColumn As Range

Dim oCell As Range

Set oColumn = Columns("A")

For Each oCell In oColumn.Cells

If oCell.Value <> "" Then

cbFIO.AddItem oCell.Value

End If

Next

cbFIO . Value = "Иванова Ивана Ивановича"

- Перейдите к коду события Click для CommandButton1 и вместо строки

sFio = "Иванова Ивана Ивановича"

введите следующий код:

sFio = cbFIO.Value

- Запустите форму на выполнение и убедитесь, что все работает нормально.

К пункту 3 (работа с флажками):

- При помощи ToolBox поместите на форму два элемента управления CheckBox. Для первого присвойте свойству (Name) значение chPremia и для свойства Caption — значение "Премия", для второго — chGramota и значение "Почетная грамота" соответственно.

- Откройте код для события Initialize нашей формы UserForm и дополните его следующими строками:

chPremia.Value = True

chGramota.Value = True

- Перейдите к коду события Click для CommandButton1 и вместо строк

bFlagPremia = True

bFlagGramota = True

введите следующий код:

bFlagPremia = chPremia.Value

bFlagGramota = chGramota.Value

If bFlagPremia = False And bFlagGramota = False Then

MsgBox "Не выбрана ни премия, ни почетная грамота!"

Exit Sub

End If

- Запустите форму на выполнение и убедитесь, что все работает нормально.

 

К пункту 4 (применение полосы прокрутки и дублирующего текстового поля):

- Поместите на форму еще один элемент управления Label с надписью "Сумма премии:". Присвойте его свойству Name значение lblSum.

- Поместите рядом еще одно текстовое поле и присвойте его свойству (Name) значение txtSum.

- Разместите рядом элемент управления ScrollBar и присвойте следующие значения его свойствам:

- (Name) — значение sbSum;

- Min — значение 0;

- Max — значение 100000;

- SmallChange — значение 100.

- Для события Change элемента управления sbSum введите следующий код:

- txtSum.Value = sbSum.Value

- Для события Change элемента управления txtSum введите следующий код:

sbSum.Value = CInt(txtSum.Value)

Примечание.

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

Для события Initialize нашей формы UserForm добавьте следующий код:

sbSum.Value = 100

txtSum.Value = 100

Для события Change элемента управления chPremia добавьте следующий код:

If chPremia.Value = False Then

lblSum.Visible = False

txtSum.Visible = False

sbSum.Visible = False

Else

lblSum.Visible = True

txtSum.Visible = True

sbSum.Visible = True

End If

Для кода Click кнопки CommandButton1 вместо кода

nSummaPremii = 100000

впишите код

nSummaPremii = sbSum.Value

 

К пункту 5 (применение кнопки):

- Разместите на поле еще одну кнопку и настройте значения ее свойств следующим образом:

- (Name) — значение "btnEscape";

- Caption — значение "Отмена";

- Cancel — значение True.

- Для события Click этой кнопки поместите код

Unload Me

 

К пункту 6 (изменение заголовка формы):

- Щелкните правой кнопкой мыши по пустому месту на форме и в контекстном меню выберите Properties.

- Для свойства Caption настройте значение "Формирование приказа о выплате премии".

 


Дата добавления: 2018-08-06; просмотров: 610; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!