Програма за управление на диалогови форми. За целта



Дата08.05.2017
Размер62.52 Kb.
#20839
ТипПрограма

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

Управление на диалогови форми.

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


УПРАВЛЕНИЕ НА ДИАЛОГОВИ ФОРМИ.
1. Въведение.
Visual Basic.Net предлага множество от диалогови форми с помощта, на които могат да бъдат програмирани и изпълнени рутинни действия. По важните от тях са:

OpenFileDialog – за отваряне на диалогова форма, визуализираща посочената директория и съответно нейните поддиректории и файлове. Визуализацията се ограничава от филтър.

SaveFileDialog – аналогично на предната, но с функции за определяне на директорията и наименованието на записвания файл.

FontDialog – диалогова форма, позволяваща избор на шрифт и определяне на неговите параметри.

ColorDialog – диалогова форма, позволяваща манипулации с цветовата палитра.

PageSetupDialog – диалогова форма за настройка на принтираната страница.

PrintPreviewDialog - за визуализация на принтирана страница и др.
2. Цел на упражнението.
Упражнението има обобщаващ характер. В заданието за разработка на лабораторното упражнение са включени програмни решения за организиране на потребителски интерфейс с помощта на диалогови форми. Студентите ще могат практически да разработят програмни конструкции за управление на най-често използваните диалогови форми.
3. Задание на лабораторно упражнение.
Да се разработи експериментална програма за управление на диалогови форми. За целта:



    1. Стартирайте ново приложение с форма Form1 оформена по начин показан на Фиг.1.1.




Фиг.1.1.

Форма “Управление на диалогови форми




    1. Създайте главно меню с позиции: OpenFileDialog, SaveFileDialog, FontDialog, ColorDialog, Print с падащо подменю PageSetupDialog, InstalledPrinters, PrintPreviewControl , PrintPreviewDialog, PrintDialog и др.




    1. Поставете надпис “Избран път и файл”, Label за визуализация на избрания път и файл и ComboBox за визуализация на списъка на инсталираните в конфигурацията принтери.




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


ToolStripStatusLabel1.Width = Me.Width / 2

ToolStripStatusLabel2.Width = Me.Width / 4

ToolStripStatusLabel3 .Width = Me.Width / 4


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




    1. Поставете Timer и го свържете с третия StatusBarPanel3 като съответно форматирате представянето на текущото време.




    1. В процедурата на главното меню валидна за OpenFileDialog поставете следния текст:


OpenFileDialog1.InitialDirectory = "c:\"

OpenFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"

OpenFileDialog1.FilterIndex = 2

OpenFileDialog1.RestoreDirectory = True

OpenFileDialog1.Title = "OpenFileDialog"
If OpenFileDialog1.ShowDialog() = DialogResult.OK Then

Label1.Text = OpenFileDialog1.FileName

ToolStripStatusLabel1 .Text = "Избран е файл с път и име: " +

Label1.Text

Else

ToolStripStatusLabel1 .Text = "Не е избран файл."

Label1.Text = ""

End If

Обърнете внимание на начина, по който се проектира филтъра на диалоговата форма. FilterIndex показва, коя от позициите в списъка е валидна при отваряне на формата. Ако бъде върнат резултата DialogResult.OK , то името на файла FileName се записва в първия панел и в Label1.




    1. Програмната част, изпълняваща функциите свързани с позиция SaveFileDialog от главното меню, е следната:


SaveFileDialog1.Filter = "txt files (*.txt)|*.txt|All files (*.*)|*.*"

SaveFileDialog1.FilterIndex = 2

SaveFileDialog1.RestoreDirectory = True

SaveFileDialog1.Title = "SaveFileDialog”

SaveFileDialog1.FileName = Label1.Text
If SaveFileDialog1.ShowDialog () = DialogResult.OK Then

If Trim (Label1.Text) <> "" Then

FileCopy (Trim (Label1.Text), SaveFileDialog1.FileName)

ToolStripStatusLabel2 .Text .Text = "Копие: " +

SaveFileDialog1.FileName

Else

ToolStripStatusLabel2 .Text .Text = "Не е избран файл за копиране. "

StatusBarPanel2.Text = ""

End If

End If

Т.к. няма създаден нов файл в програмата се копира избрания в предната позиция файл. Съществува възможност името на файла да се промени (създава се копие) или да се запише със същото име. Новото име се визуализира във втория панел.




    1. Третата позиция от главното меню активира следния програмен код:

FontDialog1.ShowColor = True

If FontDialog1.ShowDialog() <> DialogResult.Cancel Then

Label1.Font = FontDialog1.Font

Label1.ForeColor = FontDialog1.Color

End If
Примерът демонстрира промяна на шрифта на текста записан в Label1. Допълнителна възможност предоставена от диалоговата форма е избор и промяна цвета на текста. За целта посредством OpenFileDialog трябва да бъде избрано име на файл.


    1. От позиция се избира и съответно сменя само цвета на текста в Label1.


ColorDialog1.Color = Label1.ForeColor

ColorDialog1.ShowDialog()

Label1.ForeColor = ColorDialog1.Color
Характерно за примера е, че първоначално се запомня цвета на текста, който се съхранява при положение, ако не се избере цвят.


    1. В една компютърна конфигурация могат да бъдат инсталирани повече от един принтери. Следният програмен текст създава списък на “намерените” принтери в ComboBox1 с наименование CInstalledPrinters:


Dim pkInstalledPrinters As String

CInstalledPrinters.Items.Clear()

For Each pkInstalledPrinters In PrinterSettings.InstalledPrinters

CInstalledPrinters.Items.Add(pkInstalledPrinters)

Next

If CInstalledPrinters.Items.Count > 0 Then

CInstalledPrinters.Text = CInstalledPrinters.Items.Item(1)

End If

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


    1. Позиция от главното меню отваря диалогова форма за настройка на печатната страница (Фиг.1.2.).



Фиг. 1.2.

Програмния текст е следния:


Try

If (storedPageSettings Is Nothing) Then

storedPageSettings = New PageSettings()

End If
PageSetupDialog1.PageSettings = storedPageSettings

PageSetupDialog1.ShowDialog()

Catch ex As Exception

MessageBox.Show("Грешка: " + ex.Message)

End Try


    1. Преди отпечатването на зададен текстов файл е препоръчително да се визуализира неговото съдържание. Възможни са два начина:

  • посредством PrintPreviewControl и

  • с помощта на PrintPreviewDialog

Всеки от посочените начини има своите предимства и недостатъци.


    1. Върху проектираната форма поставете контрола PrintPreviewControl1. Препоръчително е да бъде разположен максимално в ляво и съответно горе, без да закрива останалите обекти.




    1. Поставете допълнително следните обекти показани на фиг. 1.3.



Фиг.1.3.
където с бутона btnPrev “Покажи !” се визуализира съдържанието на избрания текстов файл, намиращ се в Label1. Визуализацията е в зависимост от избрания мащаб.


    1. При стартиране на формата PrintPreviewControl1 трябва да заеме максимално възможна площ на екрана. За целта в процедурата Load поставете следния текст:


Me.Left = 0

Me.Top = 0

Me.Width = Screen.PrimaryScreen.Bounds.Width - 10

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

PrintPreviewControl1.Width = Me.Width - PrintPreviewControl1.Left

PrintPreviewControl1.Height = Me.Height - PrintPreviewControl1.Top


    1. В събитийната процедура на позицията от падащото меню PrintPreviewDialog запишете следното:


Dim pd As PrintDocument = New PrintDocument()

Dim Lb As String

Try

Lb = Label1.Text

If UCase(Lb.Substring(Lb.Length - 4)) <> ".TXT" Then Exit Sub

streamToPrint = New StreamReader(Me.Label1.Text)

printFont = New Font("Arial", 10)

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage

Me.PrintPreviewControl1.Document = pd

If ComboBox1.Text.Trim <> "" Then

PrintPreviewControl1.AutoZoom = False

PrintPreviewControl1.Zoom = Val(ComboBox1.Text.Trim)

Else

PrintPreviewControl1.AutoZoom = True

End If

ComboBox1.Visible = True

btnPrev.Visible = True

Label2.Visible = True

PrintPreviewControl1.Visible = True

Me.PrintPreviewControl1.Show()

Catch ex As Exception

MsgBox(ex.ToString, , "Изберете текстов файл !")

End Try
където процедурата се изпълнява само, ако избрания файл има продължение ".TXT". В първия момент ComboBox1 няма избрана стойност, затова PrintPreviewControl1.AutoZoom = True. Визуализира се групата обекти от т.3.15. и съответно PrintPreviewControl1.


    1. Добавете процедурата pd_PrintPage със следното съдържание:


Private Sub pd_PrintPage(ByVal sender As Object, ByVal ev As

PrintPageEventArgs)

Dim linesPerPage As Single = 0

Dim yPos As Single = 0

Dim count As Integer = 0

Dim leftMargin As Single = ev.MarginBounds.Left

Dim topMargin As Single = ev.MarginBounds.Top

Dim line As String = Nothing
' Calculate the number of lines per page.

linesPerPage = ev.MarginBounds.Height /

printFont.GetHeight(ev.Graphics)
' Print each line of the file.

While count < linesPerPage

line = streamToPrint.ReadLine()

If line Is Nothing Then

Exit While

End If

yPos = topMargin + count * printFont.GetHeight(ev.Graphics)

ev.Graphics.DrawString(line, printFont, Brushes.Black, leftMargin,

yPos, New StringFormat())

count += 1

End While
' If more lines exist, print another page.

If Not (line Is Nothing) Then

ev.HasMorePages = True

Else

ev.HasMorePages = False

End If

End Sub
Забележка: Процедурата е взета от фирмените примери.



    1. Програмният текст в събитийната процедура btnPrev_Click на бутона е същия, както в събитийната процедура на позиция PrintPreviewControl от падащото меню. Може да се изпълни посредством препратка.




    1. За да може да се извършва мащабиране на визуализирания текстов файл е необходимо в Collection на Items на ComboBox1 да се запишат стойностти по-малки и по-големи от 1.0.




    1. За изпълнението на позиция PrintPreviewDialog е необходимо за се избере и постави върху формата едноименния обект.




    1. В събитийната процедура на позицията PrintPreviewDialog от падащото меню въведете следния текст:


Dim pd As PrintDocument = New PrintDocument()

Dim Lb As String

Try

Lb = Label1.Text

If UCase(Lb.Substring(Lb.Length - 4)) <> ".TXT" Then Exit Sub

streamToPrint = New StreamReader(Me.Label1.Text)

printFont = New Font("Arial", 10)

AddHandler pd.PrintPage, AddressOf Me.pd_PrintPage

Me.PrintPreviewDialog1.Document = pd

PrintPreviewDialog1.MaximizeBox = False

PrintPreviewDialog1.MinimizeBox = False
PrintPreviewDialog1.WindowState =

FormWindowState.Maximized

Me.PrintPreviewDialog1.ShowDialog ()

Catch ex As Exception

Съобщение



Finally

streamToPrint.Close ()

End Try

Процедурата ще визуализира текстови файлове с продължение ".TXT".




    1. Препоръчително е при изпълнението на отделните позиции от основното и падащото меню да се визуализират само тези обекти, които имат отношение към изпълняваните функции. За тази цел в състава на програмата може да се включи процедурата ClearObj със следния текст:


Sub ClearObj ()

Label1.Visible = False

Label2.Visible = False

Label3.Visible = False

Button1.Visible = False

Button2.Visible = False

btnPrev.Visible = False

ComboBox1.Visible = False

Printers.Visible = False

PrintPreviewControl1.Visible = False

End Sub


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




    1. По аналогичен начин да се разработи позицията PrintDialog от падащото меню.




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




    1. Да се разработи програма за записване във файл на въведен текст и с помощта на диалогови форми да се програмират отделни операции с файловете.




Сподели с приятели:




©obuch.info 2024
отнасят до администрацията

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