Слайд 14wddoc.Tables(1).Cell(z + 1, 5).Range.Text = rsData!GOROD
rsData.Close
Set rsData = Nothing
cnData.Close
Set cnData
= Nothing
'.PrintOut
wddoc.SaveAs (App.Path + "\test2.doc")
wddoc.Close
wd.Quit
Set wd = Nothing
End Sub
Слайд 16МОДЕЛИРОВАНИЕ РЕАКТОРА ИДЕАЛЬНОГО ВЫТЕСНЕНИЯ
В РЕАЛЬНОМ РЕЖИМЕ ВРЕМЕНИ
Слайд 17МОДЕЛИРОВАНИЕ РЕАКТОРА ИДЕАЛЬНОГО ВЫТЕСНЕНИЯ
В РЕАЛЬНОМ РЕЖИМЕ ВРЕМЕНИ (ПРОГРАММНЫЙ КОД)
Const
k1 = 0.8
Const k2 = 0.7
Dim ca As Single, cb
As Single, cd As Single, ce As Single, tau As Single
Dim dt As Single, k As Integer, m As Integer
Dim ca1 As Single, cb1 As Single, cd1 As Single, ce1 As Single
Private Sub Command1_Click()
Timer1.Interval = 250
Timer1.Enabled = True
End Sub
Private Sub Command2_Click()
Timer1.Enabled = False
End Sub
Private Sub Command3_Click()
Timer1.Enabled = True
End Sub
Слайд 18МОДЕЛИРОВАНИЕ РЕАКТОРА ИДЕАЛЬНОГО ВЫТЕСНЕНИЯ
В РЕАЛЬНОМ РЕЖИМЕ ВРЕМЕНИ (ПРОГРАММНЫЙ КОД)
Private
Sub Command4_Click()
Dim i As Integer, j As Integer
Timer1.Enabled = False
Picture1.Cls
For
i = 1 To 11
MSFlexGrid1.Row = i
For j = 0 To 4
MSFlexGrid1.Col = j
MSFlexGrid1.Text = ""
Next j
Next i
tau = 0: k = 0: m = 0
dt = 0.1: ca = 0.8
cb = 0.5: cd = 0: ce = 0
ca1 = ca: cb1 = ca: cd1 = cd: ce1 = ce
Label6.Caption = CStr(ca)
Label7.Caption = CStr(cb)
Label8.Caption = CStr(cd)
Label9.Caption = CStr(ce)
Label11.Caption = CStr(dt)
Picture1.PSet (m, Picture1.Height - Int(ca * Picture1.Height)), RGB(255, 0, 0)
Picture1.PSet (m, Picture1.Height - Int(cb * Picture1.Height)), RGB(0, 255, 0)
Picture1.PSet (m, Picture1.Height - Int(cd * Picture1.Height)), RGB(0, 0, 255)
Picture1.PSet (m, Picture1.Height - Int(ce * Picture1.Height)), RGB(255, 255, 0)
End Sub
Слайд 19Private Sub Command5_Click()
End
End Sub
Private Sub Form_Load()
MSFlexGrid1.Row = 0
MSFlexGrid1.Col = 0
MSFlexGrid1.Text
= "Tau"
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "CA"
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "CB"
MSFlexGrid1.Col
= 3
MSFlexGrid1.Text = "CD"
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = "CE"
tau = 0: k = 0: m = 0: dt = 0.1: ca = 0.8
cb = 0.5: cd = 0: ce = 0
ca1 = ca: cb1 = cb: cd1 = cd: ce1 = ce
Label6.Caption = CStr(ca)
Label7.Caption = CStr(cb)
Label8.Caption = CStr(cd)
Label9.Caption = CStr(ce)
Label11.Caption = CStr(dt)
Picture1.PSet (m, Picture1.Height - Int(ca * Picture1.Height)), RGB(255, 0, 0)
Picture1.PSet (m, Picture1.Height - Int(cb * Picture1.Height)), RGB(0, 255, 0)
Picture1.PSet (m, Picture1.Height - Int(cd * Picture1.Height)), RGB(0, 0, 255)
Picture1.PSet (m, Picture1.Height - Int(ce * Picture1.Height)), RGB(255, 255, 0)
End Sub
Слайд 20Private Sub HScroll5_Change()
'dt
Label11.Caption = CStr(HScroll5.Value / 100)
End Sub
Private Sub HScroll5_Scroll()
HScroll5_Change
End
Sub
Private Sub HScroll4_Change()
'ce
Label9.Caption = CStr(HScroll4.Value / 10000)
End Sub
Private Sub HScroll4_Scroll()
HScroll4_Change
End
Sub
Private Sub HScroll3_Change()
'cd
Label8.Caption = CStr(HScroll3.Value / 10000)
End Sub
Слайд 21Private Sub HScroll3_Scroll()
HScroll3_Change
End Sub
Private Sub HScroll2_Change()
'cb
Label7.Caption = CStr(HScroll2.Value / 10000)
End
Sub
Private Sub HScroll2_Scroll()
HScroll2_Change
End Sub
Private Sub HScroll1_Change()
'ca
Label6.Caption = CStr(HScroll1.Value / 10000)
End
Sub
Private Sub HScroll1_Scroll()
HScroll1_Change
End Sub
Слайд 22Private Sub Timer1_Timer()
Dim i As Integer, j As Integer
Picture1.AutoRedraw =
True
k = k + 1: m = m + 1
If
m * 100 > Picture1.Width Then
m = 1
Picture1.Cls
End If
dt = CSng(Label11.Caption)
ca = CSng(Label6.Caption)
cb = CSng(Label7.Caption)
cd = CSng(Label8.Caption)
ce = CSng(Label9.Caption)
tau = tau + dt
MSFlexGrid1.Row = k
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = CStr(Int(tau * 1000) / 1000)
ca = ca - dt * (k1 * ca * cb)
Picture1.Line ((m - 1) * 100, Picture1.Height - Int(ca1 * Picture1.Height))-(m *_ 100, Picture1.Height - Int(ca * Picture1.Height)), RGB(255, 0, 0)
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = CStr(Int(ca * 10000) / 10000)
Слайд 23Label6.Caption = CStr(ca)
cb = cb - dt * (k1 *
ca * cb + k2 * cd * cb)
Picture1.Line ((m
- 1) * 100, Picture1.Height - Int(cb1 * Picture1.Height))-(m *_ 100, Picture1.Height - Int(cb * Picture1.Height)), RGB(0, 255, 0)
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = CStr(Int(cb * 10000) / 10000)
Label7.Caption = CStr(cb)
cd = cd + dt * (k1 * ca * cb - k2 * cd * cb)
Picture1.Line ((m - 1) * 100, Picture1.Height - Int(cd1 * Picture1.Height))-(m *_ 100, Picture1.Height - Int(cd * Picture1.Height)), RGB(0, 0, 255)
MSFlexGrid1.Col = 3
MSFlexGrid1.Text = CStr(Int(10000 * cd) / 10000)
Label8.Caption = CStr(cd)
ce = ce + dt * (k2 * cd * cb)
Picture1.Line ((m - 1) * 100, Picture1.Height - Int(ce1 * Picture1.Height))-(m *_ 100, Picture1.Height - Int(ce * Picture1.Height)), RGB(255, 255, 0)
MSFlexGrid1.Col = 4
MSFlexGrid1.Text = CStr(Int(10000 * ce) / 10000)
Label9.Caption = CStr(ce)
Слайд 24HScroll1.Value = Int(10000 * ca)
HScroll2.Value = Int(10000 * cb)
HScroll3.Value =
Int(10000 * cd)
HScroll4.Value = Int(10000 * ce)
HScroll5.Value = Int(100 *
dt)
ca1 = ca: cb1 = cb: cd1 = cd: ce1 = ce
If ca = 0 Or cb = 0 Then
Timer1.Enabled = False
End If
If k > 10 Then
k = 0
For i = 1 To 11
MSFlexGrid1.Row = i
For j = 0 To 4
MSFlexGrid1.Col = j
MSFlexGrid1.Text = ""
Next j
Next i
End If
End Sub
Слайд 25РАБОТА С ФОРМАМИ. СОБЫТИЯ ФОРМ
Формы в Visual Basic являются каркасом
пользовательского интерфейса приложения. Под приложением будем понимать программу, работающую в
среде Windows.
Под интерфейсом будем понимать внешнюю оболочку приложения вместе с программами управления доступом и другими скрытыми для пользователя механизмами управления, дающую возможность работать с документами, данными и другой информацией, хранящейся в компьютере или за его пределами.
Слайд 26ДОБАВЛЕНИЕ ФОРМЫ В ПРОЕКТ
ПЕРВЫЙ СПОСОБ:
1) Выполнить последовательность команд главного меню:
Project ►Add Form.
2) В появившемся меню перейти на вкладку New,
где дважды щелкнуть левой кнопкой мышки по значку Form.
Слайд 27ВТОРОЙ СПОСОБ:
Нажать на стрелку направленную вниз, расположенную справа от кнопки.
В
появившемся выпадающем списке выбрать пункт Form, затем нажать на клавиатуре
клавишу Enter.
Слайд 29СМЕНА СТАРТОВОЙ ФОРМЫ
Выполнить последовательность команд меню: Project ►Project Properties.
В появившемся
окне перейти на вкладку General .
В выпадающем списке Startup
Object необходимо выбрать имя формы, которую предполагается сделать стартовой.
Нажать на кнопку Ok.
Слайд 31СОБЫТИЯ, СВЯЗАННЫЕ С ФОРМАМИ
Системные события, связанные с формой выполняются
в следующем порядке:
Initialize
Load
Activate
Deactivate
QueryUnload
Unload
Terminate.
Слайд 32Событие Initialize
Обычно, данное событие используется для подготовки приложения к работе.
В обработчике данного события (в процедуре обработки данного события) присваиваются
переменным начальные значения, расставляются на форме элементы управления, задаются их свойства.
Private Sub Form_Initialize()
…….
End Sub
Событие Initialize возникает в момент создания экземпляра формы (до ее загрузки в память компьютера и отображения на экране). Это событие генерируется только один раз в течение всего сеанса работы приложения. Для того, чтобы еще раз вызвать событие Initialize, потребуется завершить программу и перезапустить приложение.
Таким образом, если какой-то код необходимо выполнить в приложении более чем один раз, то он должен быть помещен в обработчик другого события.
Слайд 33Событие Initialize генерируется в методах:
Form1.Show и Load Form1
Также, событие Initialize
возникает, когда возвращается одно из свойств формы, или вызывается метод,
определенный в модуле (процедуре или функции) формы. Например, в форме Form2 определена процедура общего вида Proc1. При вызове этой процедуры из модуля другой формы Form2.Proc1, создается экземпляр формы Form2, что приводит к генерации события Initialize. Переменные уровня формы при инициализации существуют, пока выполняется приложение, даже если форма выгружена из памяти. При повторном запуске формы событие Initialize не генерируется.
Слайд 34Событие Load
Событие Load используется для выполнения каких-либо действий перед выводом
формы на экран. Оно позволяет присвоить исходные значения свойствам формы
и ее элементов управления. Данное событие происходит при каждой загрузке формы в память. При первой загрузке событие Load следует за событием Initialize.
Событие Load генерируется в результате применения оператора Load или метода Show, также может генерироваться после ссылки на свойства, методы или элементы управления незагруженной формы.
Пример.
Private Sub Form_Load()
List1.Clear
List1.AddItem (“Элемент1”)
List1.AddItem (“Элемент2”)
List1.AddItem (“Элемент3”)
End Sub
Слайд 35События Activate / Deactivate
Если в приложении предполагается переключение между формами,
то для определения поведения этих форм могут быть использованы события
Activate и Deactivate.
Событие Activate возникает, когда фокус ввода переходит на данную форму от другой формы того же приложения. При этом форма должна быть видима. Например, форма, загруженная оператором Load, остается невидимой, пока к ней не применен метод Show или не установлено свойство формы Visible в положение True. Событие Activate генерируется до события GotFocus.
Слайд 36Событие Deactivate происходит, когда ввода переходит с данной формы на
другую форму того же приложения. Оно генерируется после события LostFocus.
События
Activate и Deactivate генерируются только в том случае, если фокус ввода переходит между формами одного и того же приложения. Если пользователь переходит в другое приложение, а потом вернется в программу на Visual Basic, то ни одно из этих событий не происходит.
Слайд 37Событие QueryUnload
Данное событие может быть использовано, если требуется узнать, как
именно пользователь закрывает форму. Оно генерируется перед событием Unload. Аргумент
процедуры обработки данного события UnloadMode сообщает, как закрывается форма и при необходимости позволяет аннулировать это действие.
Слайд 38Событие QueryUnload возникает:
когда пользователь выбирает из системного меню формы команду
Close
когда в программе выполняется оператор Unload
когда текущий сеанс работы в
операционной системе Windows завершается
когда Диспетчер задач операционной системы Windows закрывает данное приложение
когда закрывается дочерняя MDI-форма, так как закрывается основная MDI-форма.
Слайд 39Чтобы предотвратить выгрузку формы, необходимо аргументу Cancel присвоить значение True.
Пример.
Private
Sub Form_QueryUnload(Cancel as Integer, UnloadMode As Integer)
If UnloadMode vbFormCode
then
MsgBox “Используйте для закрытия формы кнопку Выход”
Cancel = True
End If
End Sub
Слайд 40Событие Unload
Данное событие генерируется перед событием Terminate. Обработчик события Unload
может быть использован для проверки того, надо ли выгрузить форму,
или для определения операций, выполняемых при выгрузке формы. Сюда можно включить программный код проверки введенных значений на уровне формы, код для сохранения данных в файле.
При обработке события Unload можно добавить оператор End – он гарантирует выгрузку всех форм до завершения программы.
Присвоение аргументу Cancel любого ненулевого значения предотвращает удаление формы, но не запрещает другие события, вроде выхода из среды Windows. Чтобы не допустить выхода из Windows нужно использовать событие QueryUnload.
Слайд 41Событие Terminate
Это событие генерируется, когда из памяти удаляются все ссылки
на экземпляр формы. Чтобы убрать из памяти переменные этой формы
и освободить занимаемые системные ресурсы, объектной переменной формы нужно присвоить значение Nothing.
Set Form2=Nothing
Для всех объектов, кроме классов, событие Terminate генерируется после события Unload.
Но, оно не возникает, если экземпляр формы или класса удаляется из памяти вследствие некорректного завершения программы. Если Ваша программа рухнет перед удалением из памяти всех существующих экземпляров класса или формы, то событие Terminate не произойдет.