Лабораторно упражнение №3



Дата16.04.2017
Размер104.88 Kb.

Лабораторно упражнение № 3

Разработка на приложение, използващо функционалните възможности на Word


ЛАБОРАТОРНО УПРАЖНЕНИЕ № 3


РАЗРАБОТКА НА ПРИЛОЖЕНИЕ, ИЗПОЛЗВАЩО ФУНКЦИОНАЛНИТЕ ВЪЗМОЖНОСТИ НА MS WORD
1. Въведение.
В състава на MS Office се намира специализирана програмна система за обработка на текстове MS Word. Това е сложна система от колекции и обекти с изключително разнообразни методи и свойства. MS Word може да се използва самостоятелно, да се разширяват неговите функции посредством VBA или да се проектират програми, използващи неговите функционални възможности.

Основно, MS Word се състои от обекта Application, представляващ неговото конкретно приложение, Options предоставящ достъп до параметрите на MS Word, Browser - преместване на документи и множество колекции с различно предназначение.

Основната колекция в MS Word е Documents, състояща се от обекти Document. Методите на колекцията позволяват създаване Add, отваряне Open, закриване Close и съхраняване Save на документи. Обектът Document представлява конкретен документ в колекцията, притежаващ свойства и методи. По-важните от тях са CheckGrammar, CheckSpelling, PrintPreview, Redo, Save, SaveAs, Undo, UpdateStyle и др.

Колекцията Paragraphs е съставена от обекти Paragraph и поддържа два метода Add и Reset.



MS Word притежава колекции и обекти за работа с таблици, за работа с текст, обектите Range за достъп до определени символи от текста и Selection за работа с избрана част от текста и т.н. Допълнително колекцията Windows е предназначена за управление на визуалната част с методи Add , за аранжиране на формите и т.н.
2. Цел на лабораторното упражнение.
Основната цел на лабораторното упражнение е проектиране, разработване и изпълнение на програма, съставена на VB.NET и работеща съвместно с MS Word. Като допълнителни задачи са определени:

  • въвеждане на текстова информация от външен файл и съставяне на текстово меню съответствуващо на приетите синтактични конструкции във файла,

  • проектиране на събитийни процедури за обработка на позициите от главното меню и от неговите подменюта,

  • въвеждане на информация в главната форма на приложението и нейното вмъкване (заместване) на предварително определени места в текстовия файл поддържан от MS Word,

  • създаване на референция към COM – обекти (MS Word )и използване на техните функционални възможности.

Поради изключително голямото разнообразие от колекции, обекти, методи и свойства включени в състава на MS Word не е възможно тяхно цялостно включване в упражнението.

3. Задание за лабораторно упражнение.


Да се разработи програмна система за поддържане и обработка на набор от документи по образец. В заданието влиза формиране на директория, включваща зададени текстови файлове, представляващи образци на документи. Последните са класифицирани по предназначение и вид. Всеки образец на документ има уникално име, което предварително е известно.

В заданието на разработваната система е включено изискването състава на главното меню да се въвежда и определя от външен файл, записан в Unicode (виж приложението към упражнението и фиг.3.1) при следните условия:


Фиг.3.1


Вид на формата след стартиране на програмата
- наименованията на позициите от основното меню са на български език и задължително започват с главна буква. Това в конкретния пример се използва като идентификатор за определяне местоположението на текста,

- наименованията на позициите от падащите менюта са на български език и започват с малка буква,

- след всеки текст от основното меню следват текстовете от неговото падащо меню.

- всяка позиция предизвиква намирането и отварянето на определен текстов файл – образец. Това позволява да се коригира образеца или посредством Save As да се създаде конкретно негово копие

- след наименованието на позицията е поставен разделител “|” и след това е записано името на файла – образец.

При разработката на проекта в основната форма менюто не се поставя като обект, а се генерира при изпълнение.

За изпълнението на заданието е необходимо следното:




    1. Отваря се ново приложение на VB.NET с една единствена форма. Препоръчително е да се постави подходяща икона. Да се отстранят управляващите бутони за минимизиране и максимизиране на формата. Надписът да бъде “Програмна система за документооборот”.




    1. Създава се референция към библиотеката на MS Word. От главното меню на средата за развитие се избира Project | Add Reference. От отворената диалогова форма се избира СОМ страницата и съответно обектната библиотека Microsoft Word 10.0 Object Library или следваща по-висока версия.




    1. В класа, определен от основната форма се обявява следното:


Public MyWord As Word.Application

Public MyDocument As Word.Document

Public TabMenu(100, 1) As String

Public TabMenuEnd As Integer

Public MyPath As String

Public DocName As String

Public TextLine As String

където TabMenu е двуколонен масив. При изпълнение в първата колона се зарежда от външен файл текста на позиция от менюто, а във втората – наименованието на файла, съдържащ образец на съответния текстов документ. TabMenuEnd - броя на всички позиции от менюто. Това ограничава диапазона на проверките. MyPath – стрингова променлива, която показва примерен път до файловете – образци. Препоръчително е да се работи с текущата директория, определена при инсталиране на приложението. TextLine - стринг използван при четене от външен файл.




    1. При зареждането на приложение се определя местоположението и ширината на основната форма


Me.Left = 0

Me.Top = 0

Me.Width = Screen.PrimaryScreen.Bounds.Width
Така определената ширина зависи от използвания монитор и се адаптира към него.


    1. Създава се приложение с наименование MyWord


MyWord = CreateObject ("Word.Application")


    1. Обявяват се необходимите променливи и обекти


Dim mainMenu1 As New MainMenu

Dim MenuItem As System.Windows.Forms.MenuItem

Dim subMenuItem As MenuItem

Dim i As Integer = 0

Dim k As Integer = 1

Dim PosIndex As Integer

Dim B As String

Dim inputText As TextReader = File.OpenText(MyPath + "MENUTEXT.txt")

където, освен компонентите на менюто, PosIndex ще определя местоположението на специалния разделител “|” между текста на позицията от менюто и името на съответния файл – образец. B – помощна променлива, приемаща първата буква (главна или малка) за определяне на позиция от основно или падащо подменю. inputText е от типа на TextReader, разгледан в предното упражнение.




    1. Останалата част от процедурата е за зареждане на формата и съдържа:


TextLine = inputText.ReadLine()

While Not (TextLine Is Nothing)

If TextLine.Trim <> "" Then

B = TextLine.Substring(0, 1)

Select Case B

Case "А" To "Я" ' главно меню

MenuItem = New System.Windows.Forms.MenuItem

mainMenu1.MenuItems.Add(MenuItem)

MenuItem.Text = TextLine

If TextLine.IndexOf("|") > 0 Then

MenuItem.Text = TextLine.Substring(0, TextLine.IndexOf("|"))

TabMenu(k, 0) = MenuItem.Text

TabMenu(k, 1) = TextLine.Substring(TextLine.IndexOf("|") + 1)

subMenuItem.Index = 0

k = k + 1

Else

MenuItem.Text = TextLine

End If

MenuItem.Index = i : i = i + 1

AddHandler MenuItem.Click, AddressOf TopMenuItem_Click

Case Else ' подменю

subMenuItem = New System.Windows.Forms.MenuItem

If TextLine.IndexOf("|") > 0 Then

subMenuItem.Text = TextLine.Substring(0, TextLine.IndexOf("|"))

TabMenu(k, 0) = subMenuItem.Text

TabMenu(k, 1) = TextLine.Substring(TextLine.IndexOf("|") + 1)

k = k + 1

End If

subMenuItem.Index = 0

MenuItem.MenuItems.Add(subMenuItem)

AddHandler subMenuItem.Click, AddressOf MenuItem_Click
End Select

End If

TextLine = inputText.ReadLine()

End While

inputText.Close()

Me.Menu = mainMenu1

TabMenuEnd = k – 1
където основните конструкции включват:

  • прочитане на първата линия от външния файл,

  • организиране на цикъл до достигане на празна линия. Може да се организира и друг начин за следене и достигане края на файла.

  • определяне на първата буква и разпределяне за основно меню или подменю

  • и в двата случая се определя позицията на специално избрания разделител “|” . Първият подстринг се приема за текст на позицията, а втория за наименование на съответния файл – образец. Т.к. конструкцията се повтаря два пъти, може да се оформи като самостоятелна процедура.

  • Отделените стрингове се записват в масива TabMenu

При активиране на позиция от основното меню, която няма подменю се изпълнява процедурата TopMenuItem_Click, в противен случай MenuItem_Click


    1. Програмният текст на процедурата TopMenuItem_Click е следния:


Public Sub TopMenuItem_Click(ByVal sender As System.Object, ByVal e As System.EventArgs)

'-процедура обработваща главното меню

Dim x As Integer

Dim SubMenuItem As New System.Windows.Forms.MenuItem

SubMenuItem = CType(sender, MenuItem)

Dim str As String

str = SubMenuItem.Text

If str = "КРАЙ" Then

Try : MyWord = Nothing

Catch ex As Exception : MsgBox(ex.ToString)

Finally : Me.Close() : End

End Try

End If

Dim i As Integer

For i = 0 To TabMenuEnd

If TabMenu(i, 0) = SubMenuItem.Text Then

x = MsgBox("Създаване на текстов документ по образец?", 36, SubMenuItem.Text)

If x = 7 Then Exit Sub

DocName = ""

For x = 0 To TabMenuEnd

If TabMenu(x, 0) = SubMenuItem.Text Then

DocName = TabMenu(x, 1) + ".Doc"

End If

Next

If DocName.Trim <> "" Then

If File.Exists(MyPath + DocName) = False Then Exit Sub

MyWord = CreateObject("Word.Application")

MyWord.Top = 0

MyWord.Width = Screen.PrimaryScreen.Bounds.Width

MyWord.Height = Screen.PrimaryScreen.Bounds.Height - Me.Height

MyWord.Caption = SubMenuItem.Text

MyWord.Documents.Open(MyPath & DocName, ReadOnly:=True)

'===========================================

FillingWord(MyWord, "/@Име", TextBox1.Text)

FillingWord(MyWord, "/@Държава", ComboBox1.Text)

MyWord.Visible = True

'===========================================

End If

End If

Next
End Sub
където ключовата дума "КРАЙ" се различава по изпълнение от останалите думи в менюто. Нейната идентификация е свързана с прекратяване изпълнението на приложението. В примера не са показани възможностите на метода Quit за записване на отворени документи, за организиране на диалог в подобни случай и т.н.

SubMenuItem.Text съхранява текста на избраната позиция от менюто. Организира се цикъл за откриване му в TabMenu и съответно се определя името на файла – образец. Същият се комплектова с пътя и стринга “.Doc”.

След организиран диалог и проверка за наличност на файла се отваря документа. Образецът може да се редактира или след попълване да се запише под ново име.


    1. Процедурата FillingWord намира в текстовия файл – образец кодираната дума и я замества с тази въведена от главната форма на приложението (Фиг.3.2.).

Фиг.3.2.


Допълнение към главната форма на приложението
Примерният текст на процедурата е следния:

Function FillingWord(ByVal MyWord As Word.Application, ByVal ReplaceText As String, ByVal ReplaceWith As String)

'-процедура за заместване на текст

Dim i As Integer

Try

i = MyWord.Documents.Count

Dim ActiveDocument As Word.Document = MyWord.Documents(i)

ActiveDocument.Activate()

With ActiveDocument.Range.Find

.ClearFormatting()

.Text = ReplaceText

.Replacement.ClearFormatting()

.Replacement.Text = ReplaceWith

.Execute(Replace:=Word.WdReplace.wdReplaceAll, forward:=True, Wrap:=Word.WdFindWrap.wdFindContinue)

End With

Catch ex As Exception
End Try

End Function


    1. По аналогичен начин е организирана процедурата за обработка на позициите от падащо меню. В следващия програмен текст са показани новите възможности за организиране на диалогова форма в стила на изискванията на VB.NET


Dim Message As String = "Желаете ли създаване на текстов документ по образец?”

Dim Caption As String = topMenuItem.Text + " " + SubMenuItem.Text

Dim Buttons As Integer = MessageBoxButtons.YesNo

Dim Result As DialogResult

Result = MessageBox.Show (Me, Message, Caption,

MessageBoxButtons.YesNo, _

MessageBoxIcon.Question, MessageBoxDefaultButton.Button1,

MessageBoxOptions.RightAlign)

If Result = DialogResult.No Then Exit Sub


    1. При визуализацията на MS Word е възможно да се управляват неговите размери и местоположение, например


MyWord.Top = Me.Height

MyWord.Width = Screen.PrimaryScreen.Bounds.Width

MyWord.Height = Screen.PrimaryScreen.Bounds.Height - Me.Height
Конкретните стойности зависят и от мерните единици на екрана, формата и т.н.



  1. Задания за самостоятелна разработка.

Така проектираната система обхваща само някои най-общи функции и възможности на MS Word. Допълнително може да бъде разработено следното:




    1. При откриването на файл – образец, същият да се копира като документ с уникално име, определяно от приложението автоматично. За целта да се организира брояч, който променя стойността си при всеки записан нов документ. Между сесиите стойността на брояча да се съхранява по подходящ начин във външен файл. Като пример, името на новия файл се образува от името на файла – образец и текущата стойност на брояча.

    2. Документите в приложението са свързани с име на конкретен студент. За целта да се разширят възможностите на приложението, като към формата се добави полета за въвеждане на личните данни, статута на студента (курс, група, факултетен номер, специалност и пр.) и друга информация, необходима при попълването на документите.

    3. Създаденият нов документ да се свърже с името на студента като отделен файл или да се използва възможността предоставена от Windows за автор на файла.

    4. Да се добави нова уникално разпознаваема позиция “СПРАВКИ” , аналогична на “КРАЙ”. При активирането й да се визуализира нова форма, съдържаща същото меню с тази разлика, че при активиране на позиция се визуализират всички файлове (документи) създадени от избрания образец.

    5. Аналогично, при въвеждане име на студент да се изработи справка с всички документи, съдържащи неговото име.

    6. Препоръчително е при прекратяване работата с приложението да се прави проверка за наличност на отворени документи и същите да се запишат при направени промени, с или без диалог.

    7. Да се програмира възможността за отваряне на няколко документа и съответно да се осигури тяхното аранжиране при визуализация.

    8. При отворен документ да се програмира граматическа проверка на избран текст, параграф или на целия текст.

    9. Да се програмира прехвърляне на селектиран текст или параграф от един отворен документ на друг.

    10. На основание методически съображения в примерното задание са използвани външни файлове. Да се разработи програмната система за управление на документооборота, посредством използване база от данни.



  1. Приложение.

Примерно съдържание на файла MENUTEXT.TXT записан в Unicode. С главни букви са позициите от основното меню, а с малки – на съответствуващото му подменю. След разделителния знак е записано името на файла - образец. Файловете задължително трябва да се намират в определената за целта директория.


МОЛБА

за уверение|obrDOC11

за прекъсване по семейни причини|obrDOC12

за прекъсване по слаб успех|obrDOC13

за удължаване на сесия|obrDOC14

за записване|obrDOC15

УДОСТОВЕРЕНИЕ|obrDOC2

УВЕРЕНИЕ|obrDOC3

ДОКЛАД

за отстраняване по финансови причини|obrDOC41



за отстраняване поради слаб успех|obrDOC42

за прекъсване по семейни причини|obrDOC43

ЗАПОВЕД

за отстраняване по слаб успех|obrDOC51



за прекъсване по семейни причини|obrDOC52

за записване|obrDOC53

за отписване|obrDOC54

за анулиране на заповед|obrDOC55



КРАЙ



База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

    Начална страница