Макросы (
VBA (Visual Basic for Application) - Visual Basic для приложений встроен в приложения Microsoft Office; программист имеет возможность работать как с объектами текущего, так и с объектами других приложений. Приложение предоставляет свои функции в виде объектов, работа с которыми обеспечивается средствами VBA. Здесь рассматриваются элементы работы с макросами.
Рассматриваются следующие этапы создания макроса:
Процесс записи
Макрокоманда обрабатывает текст, находящийся между курсором и концом документа. Ниже приведeн текст созданного протоколированием макроса. Он создан (здесь) копированием сгенерированного в результате процедуры протоколирования макроса:
Sub Макрос34 () ' Подчеркнуть слова из латинских букв Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend If Selection.Font.Underline = wdUnderlineNone Then Selection.Font.Underline = wdUnderlineSingle Else Selection.Font.Underline = wdUnderlineNone End If End Sub
Рассматривается пример создания
Описание некоторых используемых функций дано после кода макроса.
Sub macrosm() ' программирование макроса
Dim sw$ ' описание проверяемого слова текста
Dim fc$ ' описание первой буквы проверяемого слова
' текст: подчеркнуть слова из латинских букв"
r = MsgBox("lateinische Woerter" + Chr$(13) + "unterstreichen", 1)
If r Then
' сравнение закладок
While WordBasic.CmpBookmarks("\StartOfSel", "\EndOfDoc") <> 0
WordBasic.SelectCurWord ' выделить текущее слово
' возвратить строку - выделенный фрагмент текста
sw$ = WordBasic.Selection$()
fc$ = WordBasic.Mid$(sw$, 2, 1) ' возвратить символ
If fc$ >= "A" And fc$ <= "z" Then
' подчеркнуть, если буквы лежат в заданном диапазоне
WordBasic.Underline (-1)
WordBasic.WordRight ' продвинуться дальше
End If
Wend
End If
End Sub
Ниже приведeн список некоторых функций.
| Значение | Положение закладок |
| 0 | Положения совпадают |
| 1 | Закладка 1 ниже закладки 2 |
| 2 | Закладка 1 выше закладки 2 |
| 3 | Закладка 1 ниже и пересекается с закладкой 2 |
| 4 | Закладка 1 выше и пересекается с закладкой 2 |
| 5 | Закладка 1 включает закладку 2 |
| 6 | Закладка 2 включает закладку 1 |
| 7 | Закладки начинаются в одном месте, но закладка 1 длиннее закладки 2 |
| 8 | Закладки начинаются в одном месте, но закладка 2 длиннее закладки 1 |
| 9 | Закладки заканчиваются в одном месте, но закладка 1 длиннее закладки 2 |
| 10 | Закладки заканчиваются в одном месте, но закладка 2 длиннее закладки 1 |
| 11 | Закладка 1 ниже и смежная с закладкой 2 |
| 12 | Закладка 1 выше и смежная с закладкой 2 |
| 13 | Закладки не существуют |
Имена некоторых закладок - параметры функции CmpBookmarks приведены ниже:
\sel - текущее выделение или точка вставки,
\EndOfDoc - конец документа,
\Doc - целый документ, кроме символа конца документа.
Макросы сохраняются в шаблоне документа. Для сохранения разработанной
Макрос можно вызвать, выбрав его имя из списка в диалоговом окне Макросы : (меню Сервис $$\to$$ Макрос) или использовать назначенное макросу сочетание клавиш или соответствующую кнопку панели инструментов. Макросу можно поставить в соответствие команду меню.
Для создания кнопки панели инструментов для созданной
Имеется возможность поместить на созданной кнопке рисунок, для этого в окне Нестандартная кнопка сделать щелчок на кнопке Правка. Открывается окно Редактор кнопок. Выполнив рисунок, щeлкнуть на кнопке ОК, затем на кнопке Закрыть окна Настройка.
Для назначения
Для назначения сочетания клавиш для старта макроса выполнить следующее:
Некоторые имена зарезервированы для
| Имя макроса | Использование |
| AutoNew | При создании нового документа с текущим шаблоном |
| AutoOpen | При открытии документа |
| AutoExec | При старте приложения |
| AutoExit | По окончании работы приложения |
| AutoClose | При закрытии документа |
Использование списков предоставляет большие возможности пользователю. Элемент управления ListBox имеет более 50 свойств. Свойство List задаeт/возвращает содержимое строки списка; свойство ListCount возвращает число элементов списка, нумерация элементов списка проводится с 0. Свойство ListIndex задаeт/возвращает номер маркированной строки ( ListIndex = -1, если ни одна строка не маркирована). Если строки должны быть отсортированы по алфавиту, то свойству Sorted нужно присвоить значение True. Важнейшими из около 10 методов являются:
AddItem элемент[, индекс] - включить элемент в список в позицию "индекс",RemoveItem индекс_элемента - удалить элемент из списка,Clear - очистить весь список.Основное событие - Click, которое вызывается при щелчке на некотором элементе списка; часто применяемое событие - DblClick (двойной щелчок на элементе списка), используемое, например, для программируемого перемещения элементов одного списка в другой список.
В поле элемента управления ComboBox можно выбрать элемент списка как в ListBox, можно вводить данные в имеющееся поле ввода. ComboBox имеет многие свойства ListBox и TextBox. Свойство Style определяет функционирование и внешний вид ComboBox. В табл. 5.3 представлены функциональные возможности элемента управления ComboBox.
Значение свойства Style |
Возможности |
| 0 | ComboBox представляет собой раскрывающееся комбинированное поле - текстовое поле для записи и раскрывающийся список |
| 1 | Текстовое поле и постоянно открытый список |
| 2 | Отличие от типа 0 состоит в том, что нет возможности вводить данные |
Основными событиями являются: Click - используется для выбора элемента списка и Change - для
При работе со списками часто маркируют строку и затем делают щелчок на командной кнопке, процедура которой обрабатывает маркированную строку. Процедуру обработки элемента списка можно также создавать как процедуру события DblClick списка, выполняемую после двойного щелчка на элементе списка.
ListBox числа 9 - 0 (использовать окно свойств), присвоить свойству Sorted значение True, стартовать проект; убедиться, что элементы списка отсортированы по возрастанию.Label и CommandButton, ввести код, данный ниже:Private Sub Command1_Click() Dim j As Integer Label1 = List1.ListCount Label2 = List1.ListIndex End Sub
AddItem для добавления элементов списка - дополнить процедуру инструкцией:For j = 10 To 20 List1.AddItem j Next j
Private Sub Command2_Click() Dim j As Integer For j = 0 To 10 List1.RemoveItem j Next j End Sub
Событие LostFocus вызывается после того, как текстовое поле становится неактивным; при "входе" пользователя в текстовое поле вызывается событие GotFocus.
Ввести код, данный ниже; стартовать проект, первая процедура выполняется при установке фокуса в поле Text1 - поле окрашивается и выводится сообщение о получении фокуса.
Private Sub Text1_GotFocus() Text1.BackColor = RGB(255, 0, 0) Label3.Caption = "TextBox имеет фокус" End Sub
Вторая процедура выполняется при переводе фокуса из этого поля; поле окрашивается в другой цвет и выводится соответствующее сообщение:
Private Sub Text1_LostFocus() Text1.BackColor = RGB(0, 0, 255) Label3.Caption = "Потеря фокуса" End Sub
Private Sub Form_Load() List1.AddItem "ручки" List1.AddItem "карандаши" List3.AddItem "бумага" List3.AddItem "тетради" Combo1.AddItem "бумага" Combo1.AddItem "тетради" Combo1.AddItem "клей" Combo1.AddItem "скрепки" End Sub
Private Sub List1_DblClick() Label1 = "Перемещение элементов списков" List2.AddItem List1 ' включить элемент в другой список ' удалить строку из данного списка List1.RemoveItem List1.ListIndex End Sub Private Sub List2_ DblClick() List1.AddItem List2 ' включить элемент в другой список ' удалить строку из данного списка List2.RemoveItem List2.ListIndex End Sub
ListBox (Name = lst), ComboBox (Name = cboLaden, Style=2), 2 элемента управления CommandButton, TextBox (Name = txt); cхема формы дана на рис. 5.2,Form_Load () - заполнение ComboBox элементами списка, см. ниже,Command1_Click () - дополнение ComboBox и ListBox новыми элементами, вводимыми в текстовое поле,Command2_Click () - перемещение элементов из ComboBox в ListBox,
(рис 5.2) Схема формы
Рrivate Sub Form_Load() ' заполнение списков cboLaden.AddItem "тетради" cboLaden.AddItem "скрепки" cboLaden.AddItem "карандаши" End Sub ' дополнить поля новыми элементами Private Sub Command1_Click() cboLaden.AddItem txt.Text lst.AddItem txt.Text End Sub Private Sub Command2_Click() ' переместить элемент списка lst.AddItem cboLaden.Text End Sub
Набор элементов управления CheckBox позволяет выбрать одновременно несколько опций. Важнейшим является событие Click; важным свойством является Value. Value принимает значения: 1 - флажок помечен, 0 - не помечен, 2 - помечен, но не доступен.
Контейнер Frame (рамка) служит для группирования в нeм других объектов. Элементы управления CheckBox, помещeнные в рамку, работают независимо.
Обеспечивается выбор одной опции из нескольких с помощью набора элементов управления OptionButton, помещаемых в контейнер , например в элемент управления Frame. Важным событием является Click, важным свойством - Value. Если Value есть True, то OptionButton включeн, иначе - выключен.
CheckBox и 2 поля метки,CheckBox - при включении второго элемента первый не выключаетсяPrivate Sub Check1_Click() If Check1 Then Label1.BackColor = RGB(255, 0, 0) Else Label1.BackColor = RGB(255, 255, 255) End If End Sub Private Sub Check2_Click() If Check2 Then Label2.BackColor = RGB(0, 255, 0) Label1.BackColor = RGB(0, 255, 255) Else Label2.BackColor = RGB(0, 0, 255) End If End Sub
Создать на форме:
Frame, массив из двух элементов OptionButton, Name = Option1(0) и Option1(1) соответственно, Caption = "присоединить текст" и "заменить текст" соответственно; поместить элементы управления внутрь рамки,Command1_Click ()).
(рис 5.3) OptionButton
Private Sub Command1_Click() If Option1(0) Then ' присоединить текст, если выбран первый переключатель Text2.Text = Text2.Text + Text1.Text Else ' заменить текст, если выбран второй' переключатель Text2.Text = Text1.Text End If Text1.Text = "" End Sub
Здесь рассматривается использование элемента управления Animation для воспроизведения файла с расширением .Animation входит в состав набора Microsoft Windows Common Controls-2 6.0. Для того, чтобы поместить его на панель элементов управления нужно выполнить следующее: меню Проект $$\to$$ Компоненты : $$\to$$ Управления $$\to$$ Microsoft Windows Common Controls-2 6.0 $$\to$$ ОК. На панели элементов появляются пять новых элементов управления и среди них Animation. В работе нужно использовать объект CommonDialog ; в данном случае он обеспечивает вывод стандартного окна Windows Открытие файла.
Animation, CommonDialog, две командные кнопки и поле метки для надписи, см. рис. 5.4,CommonDialog: FileName, InitDir (используемый файл Filemove.(General) (Declarations) Dim FileName As String, Filemove As String Private Sub Command1_Click() ' воспроизведение файла CommonDialog1.ShowOpen Filemove$ = CommonDialog1.FileName Animation1.Open Filemove Animation1.Play End Sub Private Sub Command2_Click() ' закончить воспроизведение Animation1.Close End Sub
Рассматривается конструирование строки текста, при этом составляющие строки выбираются с использованием набора элементов управления. Результирующая фраза образуется конкатенацией составляющих.
Ниже описано назначение элементов управления (рис. 5.5), используемых в примере:
HscrollBar - это элемент установки дискретных значений заданного диапазона (свойства Max, Min, Value устанавливают границы области значений и текущее значение; свойство LargeChange определяет шаг изменения данных при перемещении в выбранном диапазоне). На рис. 5.5 элемент управления HscrollBar находится вверху слева. Событие Change происходит при изменении положения ползунка на линейке прокрутки, событие Scroll генерируется при непрерывном перемещении ползунка,Label1 служит для вывода числа присутствующих на митинге, собрании (данные элемента управления HscrollBar ), см. рис. 5.5 слева, ниже элемента управления HscrollBar,ComboBox содержит список мест проведения митингов, партийных собраний (на Красной площади, на улицах, : ), см. рис. 5.5, справа,табл. 5.4 содержит список используемых элементов управления и значений некоторых свойств.
| Элемент управления | Значение свойства |
| TextBox | Name=txt1 |
| Multiline=Тrue | |
| ListBox | Name=lstPartei |
| ComboBox | Name=cboOrt |
| Style=2 - DrogDownList | |
| Frame | Name=Attr1 |
| Caption=определение1 | |
| CheckBox(0) | Name=chkAttribut |
| Caption=растерянных | |
| Index=0 | |
| CheckBox(1) | Name=chkAttribut |
| Index= | |
| Caption=шумных | |
| CheckBox(2) | Name=chkAttribut |
| Index=2 | |
| Caption=озабоченных | |
| Frame | Name=Attr2 |
| Caption= определение2 | |
| OptionButton(0) | Name=optAussehen |
| х | Caption=респектабельны |
| Index=0 | |
| OptionButton(1) | Name=optAussehen |
| Сaption=оборванных | |
| Index=1 | |
| Label | Name=lbl1 |
| HScrollBar | Name=hsbMenge |
| Max=100 | |
| Min=0 | |
| Value=100 | |
| LadgeChange=10 |
При выполнении процедуры Form_Load (), см. код ниже, создаeтся список (lstPartei - список названий партий) ListBox и список (мест проведения митингов, партсобраний) ComboBox (Name = cboOrt), см. две инструкции With : End With. Соответствие подлежащее - сказуемое обеспечивается соответствием нумерации элементов списков strVerb() и lstPartei(). Маркированные на экране после старта проекта элементы списков определяются заданием значений свойства ListIndex.
Процедура Private Sub ausgeben () формирует текст (strausgabe) с использованием параметров набора управляющих элементов.
Определениями в предложении могут быть одно, два или три значения свойства Caption элементов массива объектов CheckBox (i) (см. цикл For i = 0 To 2:); возможность обработки в цикле обеспечена наличием массива объектов. Далее в процедуре Private Sub ausgeben () проводится анализ состояния переключателей optAussehen(), что позволяет сделать выбор следующего (уже из группы взаимоисключающих) определения в искомом предложении.
При конструировании искомого предложения (strausgabe) используются элементы списков ListBox (lstPartei - список имеющихся партий) и ComboBox (cboOrt - место проведения митингов, партсобраний). Для вывода на экран сказуемого используется конструкция ( lstPartei.ListIndex ), см. конец процедуры Private Sub ausgeben (), возвращающая номер выбранного элемента.
Следующие процедуры служат для:
Private Sub cboOrt_Click() - задания места проведения митинга, партсобрания,Private Sub chkattribut_Click(index As Integer) - выбора одновременно возможных определений;Private Sub hsbMenge_Change() - задания количества присутствующих на митинге, собрании,Private Sub hsbMenge_scroll() - задания количества присутствующих;Private Sub lstPartei_Click() - выбора партии из списка имеющихся;Private Sub optAussehen_Click(index As Integer) - выбора взаимоисключающих определений.Во всех случаях вызывается процедура Private Sub ausgeben (), что позволяет при выборе пользователем значений параметров элементов управления/элементов списков конструировать предложение. Учeт особенностей построения предложения в английском, немецком, русском и т.д. языках может быть реализован в данном примере при конструировании строки strausgabe.
Последовательность действий:
HscrollBar ),(General) (Declarations)
Dim strausgabe As String, strattribut As String, i As Integer
' описание массива сказуемых с дополнениями
Dim strVerb(6) As String
Private Sub Form_Load()
With lstPartei
.AddItem ("большевиков")
.AddItem ("меньшевиков")
.AddItem ("эсеров")
.AddItem ("бундовцев")
.AddItem ("кадетов")
.AddItem ("анархистов")
.ListIndex = 0
End With
With cboOrt
.AddItem ("на Красной площади")
.AddItem ("на улицах")
.AddItem ("в подъездах")
.AddItem ("в пивной")
.AddItem ("в переулках")
.ListIndex = 0
End With
strVerb(0) = "выкрикивают "Да здравствует Коммунизм !!""
strVerb(1) = "порицают большевиков"
strVerb(2) = "произносят пламенные речи"
strVerb(3) ="поносят всех"
strVerb(4) = "кричат "Ура !!"
strVerb(5) = "кричат: "Анархия - мать порядка !!"
lbl1.Caption = "Присутствовало: " Str(hsbMenge.Value)
End Sub
Private Sub ausgeben()
strattribut = ""
For i = 0 To 2
If chkattribut(i).Value = 1 Then
If strattribut = " Then
strattribut = chkattribut(i).Caption
Else
strattribut = strattribut ", " chkattribut(i).Caption
End If
End If
Next i
If optAussehen(0).Value Then
If strattribut = "" Then
strattribut = "респектабельных"
Else
strattribut = strattribut ", " "респектабельных"
End If
Else
If strattribut = " Then
strattribut = "оборванных"
Else
strattribut = strattribut ", " "оборванных"
End If
End If
strausgabe = Str(hsbMenge.Value) " "
strausgabe = strausgabe strattribut " "
strausgabe = strausgabe lstPartei.List(lstPartei.ListIndex) " "
strausgabe = strausgabe cboOrt.List(cboOrt.ListIndex) " "
strausgabe = strausgabe strVerb(lstPartei.ListIndex) " "
txt1.Text = strausgabe
End Sub
' задание места проведения митинга, партсобрания
Private Sub cboOrt_Click()
ausgeben
End Sub
' задание одновременно возможных характеристик членов
' партий
Private Sub chkattribut_click(index As Integer)
ausgeben
End Sub
' задание количества присутствующих на митинге, собрании
Private Sub hsbMenge_Change()
lbl1.Caption = "Присутствовало: " Str(hsbMenge.Value)
ausgeben
End Sub
' задание количества присутствующих на митинге, собрании
Private Sub hsbMenge_scroll()
lbl1.Caption = "Присутствовало: " Str(hsbMenge.Value)
End Sub
Private Sub lstPartei_Click() ' выбор из списка имеющихся
' партий
ausgeben
End Sub
' задание взаимоисключающих характеристик членов партий
Private Sub optAussehen_Click(index As Integer)
ausgeben
End Sub
Объект меню имеет около 15 свойств; действия, выполняемые при выборе команды меню должны быть запрограммированы в процедуре меню события Click; объект не имеет методов. Свойства доступны в режиме конструирования, но только при использовании редактора меню (см. ниже). Элементы первого уровня меню могут содержать список меню второго уровня и т.д.
Имеется редактор меню для создания меню, для работы с всплывающими меню. Редактор можно стартовать щелчком на соответствующей кнопке панели инструментов Стандартная, с помощью команды Инструменты $$\to$$ Редактор меню или с использованием комбинации клавиш CTRL + E, рис. 5.6. Объект меню может быть выведен на форму в том случае, если она маркирована. При создании меню должны быть определены свойства меню Name - имя меню в коде программы и Caption - надпись, рис. 5.6. Свойство Index (см. рис. 5.6) используется при создании массива меню. Если в рассматриваемой ситуации некоторая команда меню не имеет смысла, то свойству Enabled нужно присвоить значение False. Если свойству Visible присвоить значение False, то пункт меню становится невидимым.
Структура создаваемого меню отображается при его формировании в нижней части окна редактора меню, рис. 5.6; кнопки с вертикальными стрелками позволяют переместить выбранный пункт меню на одну позицию вверх/вниз, при этом остаeтся неизменным
Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) If button = 2 Then frmStudium.PopupMenu mnuBeruf End If End Sub
(рис 5.6) Редактор меню
Создать меню, команда которого позволяет вывести системную информацию Мicrosoft; ниже дана последовательность действий:
Private Sub mnuSysInfMicrosoft_Click() frmAbout.Show vbModal End Sub Private Sub mnuEnd_Click() End End Sub
Клавиатура и мышь обеспечивают взаимодействие пользователя с операционной системой и приложением. Клавиатура - средство ввода данных. Мышь позволяет пользователю управлять средой разработки.
Основные события, связанные с мышью даны, в табл. 5.5
| Событие | Пояснения |
| Click | Щелчок клавишей мыши. Может наступать также и при изменении значений свойств объекта; для поля списка Click наступает при выборе элемента списка |
| DblClick | Двойной щелчок |
| MouseDown | Нажатие клавиши мыши |
| MouseUp | Отпускание клавиши мыши; параметры те же, что и в случае события MouseDown |
| MouseMove | Передвижение курсора мыши над некоторым объектом, параметры те же, что и в случае события MouseDown |
| DragDrop | Сбрасывание перетаскиваемого мышью объекта; используется параметр source - объект. Синтаксис: Private Sub Command1_ DragDrop (source As Control, x As Single, y As Single) |
| DragOver | Протаскивание объекта мышью над элементом; используется параметр source - объект, синтаксис:Private Sub Command1_dragover(source As Control, x As Single, y As Single, state As Integer) state=0 - объект входит в границы источника, state=1 - объект покидает источник, state=2 - объект перетаскивается внутри границ источника |
Должно быть установлено значение свойства одной из меток DragMode = 1, что обеспечивает возможность еe перемещения после старта проекта (альтернативное значение - 0). Свойство Tag, см. код, используется в данном случае для вывода названия объекта. В двух процедурах обработки события DragOver (см. код Form_DragOver(:) и txt1_DragOver(:) используется параметр source - объект).
(рис 5.7) Мышь, некоторые события
Private Sub Form_Load() lbl1.Tag = "Label1" End Sub Private Sub Form_DragOver(source As Control, x As Single, y As Single, state As Integer) txt1.Text = source.Tag "above the Form" End Sub Private Sub txt1_DragОver(source As Control, x As Single, y As Single, state As Integer) txt1.Text = source.Tag "above the TextBox" End Sub Private Sub Form_MouseMove(button As Integer, shift As Integer, x As Single, y As Single) lbl2.Caption = Str(x) ";" Str(y) End Sub
:\Program File\Microsoft Visual Studio\Common\Graphics\Icons\DragDrop\Drag1pg.ico, : \Drag3pg.ico, : \Drop1pg.ico,Пояснения: процедура Form_Load () обеспечивает Private Sub lstK_DragDrop(Source As Control, X As Single, Y As Single) обеспечивают возможность перетаскивания элемента списка в другое поле списка и удаление его из первого поля. В процедурах:
Private Sub lstК_MouseDown(Button As Integer, Shift As Integer,_ X As Single, Y As Single),
см. ниже, используется параметр 1 ("ListК.Drag 1").
(рис 5.8) Мышь; перетаскивание элементов списков
Private Sub Form_Load() lst1.AddItem "Buch" lst1.AddItem "Heft" lst1.AddItem "Bleistift" End Sub Private Sub lst1_DragDrop(Source As Control, X As Single, Y As Single) If Source = lst2 Then lst1.AddItem lst2 lst2.RemoveItem lst2.ListIndex End If End Sub Private Sub lst1_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) lst1.Drag 1 End Sub Private Sub lst2_DragDrop(Source As Control, X As Single, Y As Single) If Source = lst1 Then lst2.AddItem lst1 lst1.RemoveItem lst1.ListIndex End If End Sub Private Sub lst2_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) lst2.Drag 1 End Sub
События, генерируемые клавиатурой, получает объект, имеющий фокус (форма получает событие, если ни один объект не имеет фокуса). Нажатие клавиши ТАВ игнорируется, т.к. она служит для перемещения фокуса . В табл. 5.6 представлены события, связанные с клавиатурой.
| Событие | Пояснение |
Вызывается только при нажатии клавиш, имеющих ANSI-код. Возвращается код ANSI нажатой клавиши; синтаксис: Control_KeyPress(KeyAscii As Integer) |
|
| KeyDown | Возникает при нажатии любой клавиши; синтаксис: Control_KeyDown(KeyCode As Integer, Shift As Integer) |
| KeyUp | Возникает при отпускании любой клавиши; синтаксис: Control_KeyUp(KeyCode As Integer, Shift As Integer) |
Параметр Shift даeт информацию о состоянии клавиш Shift, Ctrl, Alt.
При обработке 2-х последних событий используются клавишные константы (например, vbKeyLeft, vbKeyUp и.т.д), а не ANSI-код. Список KeyCodeConstants находится в каталоге объектов (Members of KeyCodeConstants; Class: KeyCodeConstans).
Последовательность действий:
Move: img1.Move x, y в процедуре Private Sub Form_KeyDown(keycode As Integer, shift As Integer)),Private Sub Form_KeyPress(keyascii As Integer).(General) (Declarations) Dim x As Integer, y As Integer Private Sub Form_KeyPress(keyascii As Integer) lbl1.Caption = Chr(keyascii) End Sub Private Sub Form_KeyDown(keycode As Integer, shift As Integer) Select Case keycode Case vbKeyLeft x = x - 350 If x <= 0 Then x = frm.Width - img1.Width End If Case vbKeyUp y = y - 350 If y <= 0 Then y = frm.Height - img1.Height End If Case vbKeyRight x = x + 350 If x >= frm.Width Then x = 0 End If Case vbKeyDown y = y + 350 If y >= frm.Height Then y = 0 End If End Select img1.Move x, y End Sub
(рис 5.9) Клавиатура; Event KeyPress, Evens KeyDown, KeyUp
Макросы (
VBA (Visual Basic for Application) - Visual Basic для приложений встроен в приложения Microsoft Office; программист имеет возможность работать как с объектами текущего, так и с объектами других приложений. Приложение предоставляет свои функции в виде объектов, работа с которыми обеспечивается средствами VBA. Здесь рассматриваются элементы работы с макросами.
Рассматриваются следующие этапы создания макроса:
Процесс записи
Макрокоманда обрабатывает текст, находящийся между курсором и концом документа. Ниже приведeн текст созданного протоколированием макроса. Он создан (здесь) копированием сгенерированного в результате процедуры протоколирования макроса:
Sub Макрос34 () ' Подчеркнуть слова из латинских букв Selection.MoveRight Unit:=wdCharacter, Count:=5, Extend:=wdExtend If Selection.Font.Underline = wdUnderlineNone Then Selection.Font.Underline = wdUnderlineSingle Else Selection.Font.Underline = wdUnderlineNone End If End Sub
Рассматривается пример создания
Описание некоторых используемых функций дано после кода макроса.
Sub macrosm() ' программирование макроса
Dim sw$ ' описание проверяемого слова текста
Dim fc$ ' описание первой буквы проверяемого слова
' текст: подчеркнуть слова из латинских букв"
r = MsgBox("lateinische Woerter" + Chr$(13) + "unterstreichen", 1)
If r Then
' сравнение закладок
While WordBasic.CmpBookmarks("\StartOfSel", "\EndOfDoc") <> 0
WordBasic.SelectCurWord ' выделить текущее слово
' возвратить строку - выделенный фрагмент текста
sw$ = WordBasic.Selection$()
fc$ = WordBasic.Mid$(sw$, 2, 1) ' возвратить символ
If fc$ >= "A" And fc$ <= "z" Then
' подчеркнуть, если буквы лежат в заданном диапазоне
WordBasic.Underline (-1)
WordBasic.WordRight ' продвинуться дальше
End If
Wend
End If
End Sub
Ниже приведeн список некоторых функций.
| Значение | Положение закладок |
| 0 | Положения совпадают |
| 1 | Закладка 1 ниже закладки 2 |
| 2 | Закладка 1 выше закладки 2 |
| 3 | Закладка 1 ниже и пересекается с закладкой 2 |
| 4 | Закладка 1 выше и пересекается с закладкой 2 |
| 5 | Закладка 1 включает закладку 2 |
| 6 | Закладка 2 включает закладку 1 |
| 7 | Закладки начинаются в одном месте, но закладка 1 длиннее закладки 2 |
| 8 | Закладки начинаются в одном месте, но закладка 2 длиннее закладки 1 |
| 9 | Закладки заканчиваются в одном месте, но закладка 1 длиннее закладки 2 |
| 10 | Закладки заканчиваются в одном месте, но закладка 2 длиннее закладки 1 |
| 11 | Закладка 1 ниже и смежная с закладкой 2 |
| 12 | Закладка 1 выше и смежная с закладкой 2 |
| 13 | Закладки не существуют |
Имена некоторых закладок - параметры функции CmpBookmarks приведены ниже:
\sel - текущее выделение или точка вставки,
\EndOfDoc - конец документа,
\Doc - целый документ, кроме символа конца документа.
Макросы сохраняются в шаблоне документа. Для сохранения разработанной
Макрос можно вызвать, выбрав его имя из списка в диалоговом окне Макросы : (меню Сервис $$\to$$ Макрос) или использовать назначенное макросу сочетание клавиш или соответствующую кнопку панели инструментов. Макросу можно поставить в соответствие команду меню.
Для создания кнопки панели инструментов для созданной
Имеется возможность поместить на созданной кнопке рисунок, для этого в окне Нестандартная кнопка сделать щелчок на кнопке Правка. Открывается окно Редактор кнопок. Выполнив рисунок, щeлкнуть на кнопке ОК, затем на кнопке Закрыть окна Настройка.
Для назначения
Для назначения сочетания клавиш для старта макроса выполнить следующее:
Некоторые имена зарезервированы для
| Имя макроса | Использование |
| AutoNew | При создании нового документа с текущим шаблоном |
| AutoOpen | При открытии документа |
| AutoExec | При старте приложения |
| AutoExit | По окончании работы приложения |
| AutoClose | При закрытии документа |
Использование списков предоставляет большие возможности пользователю. Элемент управления ListBox имеет более 50 свойств. Свойство List задаeт/возвращает содержимое строки списка; свойство ListCount возвращает число элементов списка, нумерация элементов списка проводится с 0. Свойство ListIndex задаeт/возвращает номер маркированной строки ( ListIndex = -1, если ни одна строка не маркирована). Если строки должны быть отсортированы по алфавиту, то свойству Sorted нужно присвоить значение True. Важнейшими из около 10 методов являются:
AddItem элемент[, индекс] - включить элемент в список в позицию "индекс",RemoveItem индекс_элемента - удалить элемент из списка,Clear - очистить весь список.Основное событие - Click, которое вызывается при щелчке на некотором элементе списка; часто применяемое событие - DblClick (двойной щелчок на элементе списка), используемое, например, для программируемого перемещения элементов одного списка в другой список.
В поле элемента управления ComboBox можно выбрать элемент списка как в ListBox, можно вводить данные в имеющееся поле ввода. ComboBox имеет многие свойства ListBox и TextBox. Свойство Style определяет функционирование и внешний вид ComboBox. В табл. 5.3 представлены функциональные возможности элемента управления ComboBox.
Значение свойства Style |
Возможности |
| 0 | ComboBox представляет собой раскрывающееся комбинированное поле - текстовое поле для записи и раскрывающийся список |
| 1 | Текстовое поле и постоянно открытый список |
| 2 | Отличие от типа 0 состоит в том, что нет возможности вводить данные |
Основными событиями являются: Click - используется для выбора элемента списка и Change - для
При работе со списками часто маркируют строку и затем делают щелчок на командной кнопке, процедура которой обрабатывает маркированную строку. Процедуру обработки элемента списка можно также создавать как процедуру события DblClick списка, выполняемую после двойного щелчка на элементе списка.
ListBox числа 9 - 0 (использовать окно свойств), присвоить свойству Sorted значение True, стартовать проект; убедиться, что элементы списка отсортированы по возрастанию.Label и CommandButton, ввести код, данный ниже:Private Sub Command1_Click() Dim j As Integer Label1 = List1.ListCount Label2 = List1.ListIndex End Sub
AddItem для добавления элементов списка - дополнить процедуру инструкцией:For j = 10 To 20 List1.AddItem j Next j
Private Sub Command2_Click() Dim j As Integer For j = 0 To 10 List1.RemoveItem j Next j End Sub
Событие LostFocus вызывается после того, как текстовое поле становится неактивным; при "входе" пользователя в текстовое поле вызывается событие GotFocus.
Ввести код, данный ниже; стартовать проект, первая процедура выполняется при установке фокуса в поле Text1 - поле окрашивается и выводится сообщение о получении фокуса.
Private Sub Text1_GotFocus() Text1.BackColor = RGB(255, 0, 0) Label3.Caption = "TextBox имеет фокус" End Sub
Вторая процедура выполняется при переводе фокуса из этого поля; поле окрашивается в другой цвет и выводится соответствующее сообщение:
Private Sub Text1_LostFocus() Text1.BackColor = RGB(0, 0, 255) Label3.Caption = "Потеря фокуса" End Sub
Private Sub Form_Load() List1.AddItem "ручки" List1.AddItem "карандаши" List3.AddItem "бумага" List3.AddItem "тетради" Combo1.AddItem "бумага" Combo1.AddItem "тетради" Combo1.AddItem "клей" Combo1.AddItem "скрепки" End Sub
Private Sub List1_DblClick() Label1 = "Перемещение элементов списков" List2.AddItem List1 ' включить элемент в другой список ' удалить строку из данного списка List1.RemoveItem List1.ListIndex End Sub Private Sub List2_ DblClick() List1.AddItem List2 ' включить элемент в другой список ' удалить строку из данного списка List2.RemoveItem List2.ListIndex End Sub
ListBox (Name = lst), ComboBox (Name = cboLaden, Style=2), 2 элемента управления CommandButton, TextBox (Name = txt); cхема формы дана на рис. 5.2,Form_Load () - заполнение ComboBox элементами списка, см. ниже,Command1_Click () - дополнение ComboBox и ListBox новыми элементами, вводимыми в текстовое поле,Command2_Click () - перемещение элементов из ComboBox в ListBox,
(рис 5.2) Схема формы
Рrivate Sub Form_Load() ' заполнение списков cboLaden.AddItem "тетради" cboLaden.AddItem "скрепки" cboLaden.AddItem "карандаши" End Sub ' дополнить поля новыми элементами Private Sub Command1_Click() cboLaden.AddItem txt.Text lst.AddItem txt.Text End Sub Private Sub Command2_Click() ' переместить элемент списка lst.AddItem cboLaden.Text End Sub
Набор элементов управления CheckBox позволяет выбрать одновременно несколько опций. Важнейшим является событие Click; важным свойством является Value. Value принимает значения: 1 - флажок помечен, 0 - не помечен, 2 - помечен, но не доступен.
Контейнер Frame (рамка) служит для группирования в нeм других объектов. Элементы управления CheckBox, помещeнные в рамку, работают независимо.
Обеспечивается выбор одной опции из нескольких с помощью набора элементов управления OptionButton, помещаемых в контейнер , например в элемент управления Frame. Важным событием является Click, важным свойством - Value. Если Value есть True, то OptionButton включeн, иначе - выключен.
CheckBox и 2 поля метки,CheckBox - при включении второго элемента первый не выключаетсяPrivate Sub Check1_Click() If Check1 Then Label1.BackColor = RGB(255, 0, 0) Else Label1.BackColor = RGB(255, 255, 255) End If End Sub Private Sub Check2_Click() If Check2 Then Label2.BackColor = RGB(0, 255, 0) Label1.BackColor = RGB(0, 255, 255) Else Label2.BackColor = RGB(0, 0, 255) End If End Sub
Создать на форме:
Frame, массив из двух элементов OptionButton, Name = Option1(0) и Option1(1) соответственно, Caption = "присоединить текст" и "заменить текст" соответственно; поместить элементы управления внутрь рамки,Command1_Click ()).
(рис 5.3) OptionButton
Private Sub Command1_Click() If Option1(0) Then ' присоединить текст, если выбран первый переключатель Text2.Text = Text2.Text + Text1.Text Else ' заменить текст, если выбран второй' переключатель Text2.Text = Text1.Text End If Text1.Text = "" End Sub
Здесь рассматривается использование элемента управления Animation для воспроизведения файла с расширением .Animation входит в состав набора Microsoft Windows Common Controls-2 6.0. Для того, чтобы поместить его на панель элементов управления нужно выполнить следующее: меню Проект $$\to$$ Компоненты : $$\to$$ Управления $$\to$$ Microsoft Windows Common Controls-2 6.0 $$\to$$ ОК. На панели элементов появляются пять новых элементов управления и среди них Animation. В работе нужно использовать объект CommonDialog ; в данном случае он обеспечивает вывод стандартного окна Windows Открытие файла.
Animation, CommonDialog, две командные кнопки и поле метки для надписи, см. рис. 5.4,CommonDialog: FileName, InitDir (используемый файл Filemove.(General) (Declarations) Dim FileName As String, Filemove As String Private Sub Command1_Click() ' воспроизведение файла CommonDialog1.ShowOpen Filemove$ = CommonDialog1.FileName Animation1.Open Filemove Animation1.Play End Sub Private Sub Command2_Click() ' закончить воспроизведение Animation1.Close End Sub
Рассматривается конструирование строки текста, при этом составляющие строки выбираются с использованием набора элементов управления. Результирующая фраза образуется конкатенацией составляющих.
Ниже описано назначение элементов управления (рис. 5.5), используемых в примере:
HscrollBar - это элемент установки дискретных значений заданного диапазона (свойства Max, Min, Value устанавливают границы области значений и текущее значение; свойство LargeChange определяет шаг изменения данных при перемещении в выбранном диапазоне). На рис. 5.5 элемент управления HscrollBar находится вверху слева. Событие Change происходит при изменении положения ползунка на линейке прокрутки, событие Scroll генерируется при непрерывном перемещении ползунка,Label1 служит для вывода числа присутствующих на митинге, собрании (данные элемента управления HscrollBar ), см. рис. 5.5 слева, ниже элемента управления HscrollBar,ComboBox содержит список мест проведения митингов, партийных собраний (на Красной площади, на улицах, : ), см. рис. 5.5, справа,табл. 5.4 содержит список используемых элементов управления и значений некоторых свойств.
| Элемент управления | Значение свойства |
| TextBox | Name=txt1 |
| Multiline=Тrue | |
| ListBox | Name=lstPartei |
| ComboBox | Name=cboOrt |
| Style=2 - DrogDownList | |
| Frame | Name=Attr1 |
| Caption=определение1 | |
| CheckBox(0) | Name=chkAttribut |
| Caption=растерянных | |
| Index=0 | |
| CheckBox(1) | Name=chkAttribut |
| Index= | |
| Caption=шумных | |
| CheckBox(2) | Name=chkAttribut |
| Index=2 | |
| Caption=озабоченных | |
| Frame | Name=Attr2 |
| Caption= определение2 | |
| OptionButton(0) | Name=optAussehen |
| х | Caption=респектабельны |
| Index=0 | |
| OptionButton(1) | Name=optAussehen |
| Сaption=оборванных | |
| Index=1 | |
| Label | Name=lbl1 |
| HScrollBar | Name=hsbMenge |
| Max=100 | |
| Min=0 | |
| Value=100 | |
| LadgeChange=10 |
При выполнении процедуры Form_Load (), см. код ниже, создаeтся список (lstPartei - список названий партий) ListBox и список (мест проведения митингов, партсобраний) ComboBox (Name = cboOrt), см. две инструкции With : End With. Соответствие подлежащее - сказуемое обеспечивается соответствием нумерации элементов списков strVerb() и lstPartei(). Маркированные на экране после старта проекта элементы списков определяются заданием значений свойства ListIndex.
Процедура Private Sub ausgeben () формирует текст (strausgabe) с использованием параметров набора управляющих элементов.
Определениями в предложении могут быть одно, два или три значения свойства Caption элементов массива объектов CheckBox (i) (см. цикл For i = 0 To 2:); возможность обработки в цикле обеспечена наличием массива объектов. Далее в процедуре Private Sub ausgeben () проводится анализ состояния переключателей optAussehen(), что позволяет сделать выбор следующего (уже из группы взаимоисключающих) определения в искомом предложении.
При конструировании искомого предложения (strausgabe) используются элементы списков ListBox (lstPartei - список имеющихся партий) и ComboBox (cboOrt - место проведения митингов, партсобраний). Для вывода на экран сказуемого используется конструкция ( lstPartei.ListIndex ), см. конец процедуры Private Sub ausgeben (), возвращающая номер выбранного элемента.
Следующие процедуры служат для:
Private Sub cboOrt_Click() - задания места проведения митинга, партсобрания,Private Sub chkattribut_Click(index As Integer) - выбора одновременно возможных определений;Private Sub hsbMenge_Change() - задания количества присутствующих на митинге, собрании,Private Sub hsbMenge_scroll() - задания количества присутствующих;Private Sub lstPartei_Click() - выбора партии из списка имеющихся;Private Sub optAussehen_Click(index As Integer) - выбора взаимоисключающих определений.Во всех случаях вызывается процедура Private Sub ausgeben (), что позволяет при выборе пользователем значений параметров элементов управления/элементов списков конструировать предложение. Учeт особенностей построения предложения в английском, немецком, русском и т.д. языках может быть реализован в данном примере при конструировании строки strausgabe.
Последовательность действий:
HscrollBar ),(General) (Declarations)
Dim strausgabe As String, strattribut As String, i As Integer
' описание массива сказуемых с дополнениями
Dim strVerb(6) As String
Private Sub Form_Load()
With lstPartei
.AddItem ("большевиков")
.AddItem ("меньшевиков")
.AddItem ("эсеров")
.AddItem ("бундовцев")
.AddItem ("кадетов")
.AddItem ("анархистов")
.ListIndex = 0
End With
With cboOrt
.AddItem ("на Красной площади")
.AddItem ("на улицах")
.AddItem ("в подъездах")
.AddItem ("в пивной")
.AddItem ("в переулках")
.ListIndex = 0
End With
strVerb(0) = "выкрикивают "Да здравствует Коммунизм !!""
strVerb(1) = "порицают большевиков"
strVerb(2) = "произносят пламенные речи"
strVerb(3) ="поносят всех"
strVerb(4) = "кричат "Ура !!"
strVerb(5) = "кричат: "Анархия - мать порядка !!"
lbl1.Caption = "Присутствовало: " Str(hsbMenge.Value)
End Sub
Private Sub ausgeben()
strattribut = ""
For i = 0 To 2
If chkattribut(i).Value = 1 Then
If strattribut = " Then
strattribut = chkattribut(i).Caption
Else
strattribut = strattribut ", " chkattribut(i).Caption
End If
End If
Next i
If optAussehen(0).Value Then
If strattribut = "" Then
strattribut = "респектабельных"
Else
strattribut = strattribut ", " "респектабельных"
End If
Else
If strattribut = " Then
strattribut = "оборванных"
Else
strattribut = strattribut ", " "оборванных"
End If
End If
strausgabe = Str(hsbMenge.Value) " "
strausgabe = strausgabe strattribut " "
strausgabe = strausgabe lstPartei.List(lstPartei.ListIndex) " "
strausgabe = strausgabe cboOrt.List(cboOrt.ListIndex) " "
strausgabe = strausgabe strVerb(lstPartei.ListIndex) " "
txt1.Text = strausgabe
End Sub
' задание места проведения митинга, партсобрания
Private Sub cboOrt_Click()
ausgeben
End Sub
' задание одновременно возможных характеристик членов
' партий
Private Sub chkattribut_click(index As Integer)
ausgeben
End Sub
' задание количества присутствующих на митинге, собрании
Private Sub hsbMenge_Change()
lbl1.Caption = "Присутствовало: " Str(hsbMenge.Value)
ausgeben
End Sub
' задание количества присутствующих на митинге, собрании
Private Sub hsbMenge_scroll()
lbl1.Caption = "Присутствовало: " Str(hsbMenge.Value)
End Sub
Private Sub lstPartei_Click() ' выбор из списка имеющихся
' партий
ausgeben
End Sub
' задание взаимоисключающих характеристик членов партий
Private Sub optAussehen_Click(index As Integer)
ausgeben
End Sub
Объект меню имеет около 15 свойств; действия, выполняемые при выборе команды меню должны быть запрограммированы в процедуре меню события Click; объект не имеет методов. Свойства доступны в режиме конструирования, но только при использовании редактора меню (см. ниже). Элементы первого уровня меню могут содержать список меню второго уровня и т.д.
Имеется редактор меню для создания меню, для работы с всплывающими меню. Редактор можно стартовать щелчком на соответствующей кнопке панели инструментов Стандартная, с помощью команды Инструменты $$\to$$ Редактор меню или с использованием комбинации клавиш CTRL + E, рис. 5.6. Объект меню может быть выведен на форму в том случае, если она маркирована. При создании меню должны быть определены свойства меню Name - имя меню в коде программы и Caption - надпись, рис. 5.6. Свойство Index (см. рис. 5.6) используется при создании массива меню. Если в рассматриваемой ситуации некоторая команда меню не имеет смысла, то свойству Enabled нужно присвоить значение False. Если свойству Visible присвоить значение False, то пункт меню становится невидимым.
Структура создаваемого меню отображается при его формировании в нижней части окна редактора меню, рис. 5.6; кнопки с вертикальными стрелками позволяют переместить выбранный пункт меню на одну позицию вверх/вниз, при этом остаeтся неизменным
Private Sub Form_MouseDown(button As Integer, shift As Integer, x As Single, y As Single) If button = 2 Then frmStudium.PopupMenu mnuBeruf End If End Sub
(рис 5.6) Редактор меню
Создать меню, команда которого позволяет вывести системную информацию Мicrosoft; ниже дана последовательность действий:
Private Sub mnuSysInfMicrosoft_Click() frmAbout.Show vbModal End Sub Private Sub mnuEnd_Click() End End Sub
Клавиатура и мышь обеспечивают взаимодействие пользователя с операционной системой и приложением. Клавиатура - средство ввода данных. Мышь позволяет пользователю управлять средой разработки.
Основные события, связанные с мышью даны, в табл. 5.5
| Событие | Пояснения |
| Click | Щелчок клавишей мыши. Может наступать также и при изменении значений свойств объекта; для поля списка Click наступает при выборе элемента списка |
| DblClick | Двойной щелчок |
| MouseDown | Нажатие клавиши мыши |
| MouseUp | Отпускание клавиши мыши; параметры те же, что и в случае события MouseDown |
| MouseMove | Передвижение курсора мыши над некоторым объектом, параметры те же, что и в случае события MouseDown |
| DragDrop | Сбрасывание перетаскиваемого мышью объекта; используется параметр source - объект. Синтаксис: Private Sub Command1_ DragDrop (source As Control, x As Single, y As Single) |
| DragOver | Протаскивание объекта мышью над элементом; используется параметр source - объект, синтаксис:Private Sub Command1_dragover(source As Control, x As Single, y As Single, state As Integer) state=0 - объект входит в границы источника, state=1 - объект покидает источник, state=2 - объект перетаскивается внутри границ источника |
Должно быть установлено значение свойства одной из меток DragMode = 1, что обеспечивает возможность еe перемещения после старта проекта (альтернативное значение - 0). Свойство Tag, см. код, используется в данном случае для вывода названия объекта. В двух процедурах обработки события DragOver (см. код Form_DragOver(:) и txt1_DragOver(:) используется параметр source - объект).
(рис 5.7) Мышь, некоторые события
Private Sub Form_Load() lbl1.Tag = "Label1" End Sub Private Sub Form_DragOver(source As Control, x As Single, y As Single, state As Integer) txt1.Text = source.Tag "above the Form" End Sub Private Sub txt1_DragОver(source As Control, x As Single, y As Single, state As Integer) txt1.Text = source.Tag "above the TextBox" End Sub Private Sub Form_MouseMove(button As Integer, shift As Integer, x As Single, y As Single) lbl2.Caption = Str(x) ";" Str(y) End Sub
:\Program File\Microsoft Visual Studio\Common\Graphics\Icons\DragDrop\Drag1pg.ico, : \Drag3pg.ico, : \Drop1pg.ico,Пояснения: процедура Form_Load () обеспечивает Private Sub lstK_DragDrop(Source As Control, X As Single, Y As Single) обеспечивают возможность перетаскивания элемента списка в другое поле списка и удаление его из первого поля. В процедурах:
Private Sub lstК_MouseDown(Button As Integer, Shift As Integer,_ X As Single, Y As Single),
см. ниже, используется параметр 1 ("ListК.Drag 1").
(рис 5.8) Мышь; перетаскивание элементов списков
Private Sub Form_Load() lst1.AddItem "Buch" lst1.AddItem "Heft" lst1.AddItem "Bleistift" End Sub Private Sub lst1_DragDrop(Source As Control, X As Single, Y As Single) If Source = lst2 Then lst1.AddItem lst2 lst2.RemoveItem lst2.ListIndex End If End Sub Private Sub lst1_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) lst1.Drag 1 End Sub Private Sub lst2_DragDrop(Source As Control, X As Single, Y As Single) If Source = lst1 Then lst2.AddItem lst1 lst1.RemoveItem lst1.ListIndex End If End Sub Private Sub lst2_MouseDown(Button As Integer, Shift As Integer, _ X As Single, Y As Single) lst2.Drag 1 End Sub
События, генерируемые клавиатурой, получает объект, имеющий фокус (форма получает событие, если ни один объект не имеет фокуса). Нажатие клавиши ТАВ игнорируется, т.к. она служит для перемещения фокуса . В табл. 5.6 представлены события, связанные с клавиатурой.
| Событие | Пояснение |
Вызывается только при нажатии клавиш, имеющих ANSI-код. Возвращается код ANSI нажатой клавиши; синтаксис: Control_KeyPress(KeyAscii As Integer) |
|
| KeyDown | Возникает при нажатии любой клавиши; синтаксис: Control_KeyDown(KeyCode As Integer, Shift As Integer) |
| KeyUp | Возникает при отпускании любой клавиши; синтаксис: Control_KeyUp(KeyCode As Integer, Shift As Integer) |
Параметр Shift даeт информацию о состоянии клавиш Shift, Ctrl, Alt.
При обработке 2-х последних событий используются клавишные константы (например, vbKeyLeft, vbKeyUp и.т.д), а не ANSI-код. Список KeyCodeConstants находится в каталоге объектов (Members of KeyCodeConstants; Class: KeyCodeConstans).
Последовательность действий:
Move: img1.Move x, y в процедуре Private Sub Form_KeyDown(keycode As Integer, shift As Integer)),Private Sub Form_KeyPress(keyascii As Integer).(General) (Declarations) Dim x As Integer, y As Integer Private Sub Form_KeyPress(keyascii As Integer) lbl1.Caption = Chr(keyascii) End Sub Private Sub Form_KeyDown(keycode As Integer, shift As Integer) Select Case keycode Case vbKeyLeft x = x - 350 If x <= 0 Then x = frm.Width - img1.Width End If Case vbKeyUp y = y - 350 If y <= 0 Then y = frm.Height - img1.Height End If Case vbKeyRight x = x + 350 If x >= frm.Width Then x = 0 End If Case vbKeyDown y = y + 350 If y >= frm.Height Then y = 0 End If End Select img1.Move x, y End Sub
(рис 5.9) Клавиатура; Event KeyPress, Evens KeyDown, KeyUp
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.