ПОНЯТНО О Visual Basic NET

         

Команда "Свернуть родительский объект" (контекстное меню)


Команда служит для скрытия элементов родительского объекта в областях Локальные и Контрольные окна отладки. При скрытии элементов списка, значок минус (-) слева от выражения изменяется на плюс (+).



Команда "Свойства" (контекстное меню)


Эта команда выводит окно "Свойства" для выбранного объекта.



Команда "Свойства" (контекстное меню окна просмотра объектов)


Выводит окно диалога Параметры компонента, в котором задается описание специального компонента, а также присваивается идентификатор экрана справки и имя файла справки.

Команда доступна только для элементов, содержащих инструкции Basic.



Команда "Точка останова" (меню "Отладка")


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

Строка программы, в которой установлена точка останова, приобретает цвет, заданный на вкладке "Модуль" в окне диалога "Параметры".

Кнопка панели инструментов:

. Клавиша быстрого вызова: F9.



Команда "Только слово целиком (Поиск)" (контекстное меню окна просмотра объектов)


Эта команда позволяет найти текст, в точности совпадающий с введенным в поле поиска в окне просмотра объектов.



Команда "Удалить контрольное значение" (контекстное меню)




Эта команда служит для удаления контрольного значения.



Команда Уменьшить отступ (меню "Правка")


Смещает все выделенные строки в предыдущую позицию табуляции. Все выделенные строки смещаются на одинаковое число пробелов, при этом сохраняются относительные отступы между ними.

Изменение интервала табуляции выполняется на вкладке Редактор окна диалога Параметры.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+SHIFT+M.



Команда "Установить/снять" (контекстное меню)


Точка останова. Устанавливает или удаляет точку останова на текущей строке.

Закладка. Устанавливает или удаляет закладку на текущей строке в окне модуля.



Команда Увеличить отступ (меню "Правка")


Смещает все выделенные строки в следующую позицию табуляции. Все выделенные строки смещаются на одинаковое число пробелов, при этом сохраняются относительные отступы между ними.

Изменение интервала табуляции выполняется на вкладке Редактор окна диалога Параметры.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+M.



Команда Выделить все (меню "Правка")


Эта команда служит для выделения всего текста в окне модуля или всех элементов управления в форме.



Команда "Выполнить до текущей позиции" (меню "Отладка")


При работе в режиме конструктора команда "Выполнить до текущей позиции" служит для задания инструкции, находящейся ниже по тексту программы, на которой необходимо остановить выполнение. Программа выполняется от текущей до выбранной инструкции в строке индикатора на полях, напротив текущей строки выполнения, появляется индикатор на полях

.

Эта команда полезна, например, для пропуска больших циклов.

Клавиша быстрого вызова: CTRL+F8.



Команда Выровнять размер (меню "Формат")


Беря за основу объект с белыми маркерами захвата, корректирует размеры выделенных объектов в выбранном направлении.

по ширииине Корректирует ширину.

Кнопка панели инструментов:

.

по высоте Корректирует высоту.

Кнопка панели инструментов:

.

по ширииине и высоте Корректирует как ширину, так и высоту.

Кнопка панели инструментов:

.



Команда Выровнять размер по сетке (меню "Формат")


Изменяет высоту и ширину выделенного объекта до ближайшей линий сетки в форме. Размер сетки изменяется на вкладке Общие окна диалога Параметры.

Кнопка панели инструментов:

.



Команда "Закрепление" (контекстное меню)


Переключает способность активного окна фиксировать свое положение.

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



Команда Заменить (меню "Правка")


Команда выполняет поиск указанного текста в модуле текущей базы данных и заменяет его на новый текст, заданный в окне диалога Замена.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+H.

Параметры окна диалога

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

Заменить на В это поле следует ввести или вставить из буфера обмена текст замены. Для удаления из документа текста, указанного в поле Образец следует оставить поле Заменить на пустым.

Область поиска Задает диапазон поиска.

Текущая процедура-Поиск выполняется только в текущей процедуре.

Текущий модуль-Поиск выполняется только в текущем модуле.

В текущей базе данных-Поиск выполняется во всех модулях текущей базы данных.

Выделенный текст-Поиск выполняется в выделенном блоке текста.

Просмотр Устанавливает направление поиска: Вверх, Вниз от положения курсора или Все в выбранном диапазоне.

Только слово целиком Выполняет поиск целого слова и игнорирует его вхождения в более длинные слова.

С учетом регистра Выполняет поиск вхождений с комбинацией строчных и заглавных букв, указанной в поле Образец.

Использовать шаблон Выполняет поиск с использованием подстановочных символов.

Найти далее Выполняет поиск и выделяет следующее вхождение текста, заданного в поле Образец.

Отмена Закрывает окно диалога без выполнения замены.

Заменить Запрашивает подтверждение перед каждой заменой искомого текста.

Заменить все Выполняет замену всех вхождений искомого текста на текст замены, не запрашивая подтверждения.



Команда Завершить слово (меню "Правка")


Завершает ввод набираемого слова, если только введено достаточно символов для распознавания слова Visual Basic.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+SPACEBAR.



Команды Найти и Найти далее (меню "Правка")


Найти Выполняет поиск указанного в окне диалога Поиск текста в заданном диапазоне.

В случае успешного поиска окно диалога закрывается и выделяется найденный и текст. Если совпадение не обнаружено, выводится окно с сообщением о том, что указанный текст не найден.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+F.

Найти далее Выполняет поиск и выделяет следующее вхождение текста, заданного в поле Образец окна диалога Поиск.

Кнопка панели инструментов:

. Клавиши быстрого вызова: F3 (найти далее) или SHIFT+F3 (найти предыдущее вхождение).

Параметры окна диалога

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

Область поиска Задает диапазон поиска.

Текущая процедура-Поиск выполняется только в текущей процедуре.

Текущий модуль-Поиск выполняется только в текущем модуле.

В текущей базе данных-Поиск выполняется во всех модулях текущей базы данных.

Выделенный текст-Поиск выполняется в выделенном блоке текста.

Просмотр Устанавливает направление поиска: Вверх, Вниз от положения курсора или Все в выбранном диапазоне.

Только слово целиком Выполняет поиск целого слова и игнорирует его вхождения в более длинные слова.

С учетом регистра Выполняет поиск вхождений с комбинацией строчных и заглавных букв, указанной в поле Образец.

Использовать шаблон Выполняет поиск с использованием подстановочных символов.

Найти далее Выполняет поиск и выделяет следующее вхождение текста, заданного в поле Образец.

Отмена Закрывает окно диалога без выполнения поиска.

Заменить Выводит окно диалога Замена, сохраняя текст, введенный в окне диалога Поиск.



Команды "Объект" и "Программа" (контекстное меню)


Эти команды позволяют выбрать либо окно конструктора, либо окно модуля.

Объект Отображает или активизирует выбранный элемент.

Программа Отображает или активизирует окно модуля для выделенного объекта.



Команды Отменить и Вернуть (меню Правка)


Отменить Отменяет последнее действие редактирования, например ввод текста в окне модуля или удаление элемента управления. При удалении одного или более элементов удаления команда Отменить позволяет восстановить их и их свойства.

Кнопка панели инструментов

. Клавиши быстрого вызова: CTRL+Z или ALT+BACKSPACE.

Примечание. В форме с помощью этой команды невозможно отменить команду Вырезать.

Вернуть Восстанавливает последнее изменение текста, изменение размера или положения элемента управления, если с момента вызова команды Отменить не произошло никаких действий.

Кнопка панели инструментов

.

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

Эти команды недоступны во время выполнения программы, если не были внесены изменения или если после редактирования были выполнены другие действия. Также, в случае больших изменений, выполнению команды Вернуть может помешать нехватка памяти.



Команды "Шаг с заходом", "Шаг с обходом" и "Шаг с выходом" (меню "Отладка")


"Шаг с заходом" Выполняет одну инструкцию программы.

Если команда "Шаг с заходом" выполняется не в режиме конструктора, на текущей строке выполнения осуществляется переход в режим прерывания. Если инструкция является вызовом процедуры, будет выведена первая инструкция этой процедуры.

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

При отсутствии текущей точки выполнения команда "Шаг с заходом" не осуществляет никаких действий, пока не будет активирована программа, например выбором документа с помощью мыши.

Кнопка панели инструментов:

. Клавиша быстрого вызова: F8.

"Шаг с обходом" Похожа на команду "Шаг с заходом". Различие проявляется, только если текущая инструкция содержит вызов процедуры.

Команду "Шаг с обходом" выполняет процедуру за один шаг и затем переходит к следующей инструкции текущей процедуры. Поэтому инструкцией, выводимой на следующем шаге, является следующая инструкция текущей процедуры, независимо от того, содержит ли текущая инструкция вызов процедуры. Команда доступна только в режиме прерывания.

Кнопка панели инструментов:

. Клавиша быстрого вызова: SHIFT+F8.

"Шаг с выходом" Выполняет оставшиеся строки процедуры, в которой находится текущая точка выполнения. Следующей выводимой инструкцией является инструкция, следующая за вызовом этой процедуры. Выполняются все строки программы между текущей и конечной точками выполнения. Команда доступна только в режиме прерывания.

Кнопка панели инструментов:

. Клавиша быстрого вызова: CTRL+SHIFT+F8.



Команды Вырезать, Копировать, Вставить (меню "Правка")


Вырезать Удаляет выделенный текст или элемент управления и помещает его в буфер обмена. Чтобы сделать команду доступной необходимо выделить хотя бы один символ или элемент управления. Допускается отмена команды Вырезать над элементом управления.

Кнопка панели инструментов:

. Клавиши быстрого вызова: CTRL+X или SHIFT+DELETE

Копировать Копирует выделенный текст или элемент управления и помещает его в буфер обмена. Чтобы сделать команду доступной необходимо выделить хотя бы один символ или элемент управления. Отмена команды Копировать в окне модуля невозможна.

Кнопка панели инструментов:

. Клавиши быстрого вызова: CTRL+C или CTRL+INSERT.

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

Вставляемые элементы управления помещаются в центр формы.

Допускается отмена команды Вставить в окне модуля и в форме, если в нее был вставлен элемент управления.

Кнопка панели инструментов:

. Клавиши быстрого вызова: CTRL+V или SHIFT+INS.



Команды Выровнять (меню "Формат")


Эти команды служат для выравнивания выделенных объектов относительно друг друга с использованием в качестве основы элемента управления с белыми маркерами захвата.

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

Кнопка панели инструментов:

.

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

Кнопка панели инструментов:

.

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

Кнопка панели инструментов:

.

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

Кнопка панели инструментов:

.

По середине Выравнивает вертикальное положение выбранных объектов, помещая их середины на одну линию с элементом управления с белыми маркерами захвата.

Кнопка панели инструментов:

.

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

Кнопка панели инструментов:

.

По узлам сетки Помещает верхний левый угол выделенных объектов в ближайший узел сетки. Размер объектов не изменяется.

Кнопка панели инструментов:

.



Команды Закладки (меню "Правка")


Выбор этой команды приводит к появлению меню, позволяющему создавать или удалять закладки в окне модуля, переходить к следующей или предыдущей закладке или удалять все закладки.

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

.

Закладка Снимает или устанавливает закладку.

Кнопка панели инструментов:

Следующая закладка Перемещает место вставки к следующей закладке.

Кнопка панели инструментов:

Предыдущая закладка Перемещает место вставки к предыдущей закладке.

Кнопка панели инструментов:

Снять все закладки Удаляет все закладки.

Кнопка панели инструментов:



Команды "Закомментировать блок" и "Раскомментировать блок"


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

Закомментировать блок Добавляет символ комментария в каждую строку выделенного блока теста.

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



в тексте программы. Зачем они


Комментарии – это пояснения в тексте программы. Зачем они нужны?
Когда человек со стороны посмотрит на вашу программу, например, на эту (из калькулятора)
Private Sub Кл_вычитания_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Кл_вычитания.Click
    Результат.Text = Val(Число1.Text) - Val(Число2.Text)
End Sub
он может и не понять, в чем здесь смысл и для какой задачи программа написана. Зачем, например, Val? Да и все остальное… Ну да ладно, если не поймет он, это еще полбеды, а беда наступит тогда, когда вы сами через некоторое время забудете, что здесь к чему.
Любой профессиональный программист знает две вещи. Первая – любая старая программа через 12 месяцев забывается напрочь. Вторая – любая старая программа через 13 месяцев бывает вдруг позарез нужна (например, как исходный материал для новой программы) и поэтому в ней срочно нужно разобраться. Наученный горьким опытом, программист снабжает многие строчки кода собственными комментариями. Из предыдущих трех строк получается вот что:
'Процедура обработки нажатия на кнопку вычитания:
Private Sub Кл_вычитания_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Кл_вычитания.Click
    Результат.Text = Val(Число1.Text) - Val(Число2.Text)     'Функция Val нужна для "превращения текста в число"
End Sub
Компьютеру комментарий не нужен, он его не поймет, а если начнет понимать, то ничего хорошего из этого не выйдет. Так что заглядывать в него компьютер не должен. И чтобы ясно показать компьютеру, куда ему не надо заглядывать, программист в каждой строке кода перед комментарием ставит одинарную кавычку. VB, компилируя очередную строку кода, просматривает ее слева направо, и как только наткнется на кавычку, правее уже не глядит. Поэтому правее комментариев писать код нет смысла.
VS для нашего удобства выделяет комментарии зеленым цветом.

Кому предназначена эта книга?


Книга рассчитана на две категории читателей:

На начинающих программистов, в том числе даже на тех читателей, которые в своей жизни не запрограммировали ни строчки и просто хотят научиться программировать. Мало того – в конце книги вы найдете два Приложения, которые подготовят к восприятию книги даже тех, кто вообще никогда не садился за компьютер.

На программистов со средним опытом программирования, которые хотят освоить настоящий объектно-ориентированный язык и узнать, что такое объектно-ориентированное программирование. Они получат то, чего хотели – почувствуют, что значит объекты «на кончиках пальцев». Но им может показаться, что я слишком «разжевываю» материал. Что ж, каюсь: я всегда придерживался того мнения, что лучше «переобъяснить», чем «недообъяснить».

Это самоучитель. Книга написана с расчетом на то, что, изучив ее без посторонней помощи, вы сможете без посторонней помощи составлять программы на VB и выполнять их на компьютере тоже без посторонней помощи. Выражаясь рекламным языком: «Все, что вам нужно знать заранее, это где находится кнопка включения компьютера!». Все остальное в книге объяснено, включая инструкцию по установке VB на ваш компьютер, по работе в Windows и по вводу программного текста в компьютер.

Автор приложил специальные усилия для того, чтобы изложение было понятным. Везде, где можно, я старался объяснить не только то, что

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

 

Книга полна, то есть, несмотря на то, что она ориентирована на начинающих программистов, она полностью содержит традиционный материал, излагаемый в учебниках по VB такого же объема. В этом вы можете убедиться, заглянув в оглавление.

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



Кратко о NET Framework и о Visual Studio NET


Visual Basic .NET не является отдельной обособленной разработкой. Он создавался в рамках новой идеологии, предложенной компанией Microsoft. Эта идеология получила название .NET (именно так – с предшествующей точкой). Суть идеологии состоит в том, что программирование постепенно перемещается от отдельного компьютера в сеть (NET по-английски – «сеть») и в Интернет, а значит нужно делать упор на программирование в сетях, Интернете. Отсюда также следует, что особое внимание нужно обращать на безопасность выполнения программ. По замыслу ее создателей идеология .NET должна вывести информационный мир на новый уровень использования компьютеров, сетей, Интернета и разработки программ.

Претворяя в жизнь идеологию .NET, фирма Microsoft разработала комплекс программных средств для ее осуществления. Этот всеобъемлющий комплекс принято называть платформой .NET. Предполагается, что эта платформа будет поддерживаться не только Windows, но и другими операционными системами.

Важной составной частью платформы .NET является программный комплекс .NET Framework. Он предназначен специально для разработки программ и для поддержки их выполнения на компьютере. Вы не сможете программировать на VB, если на компьютере не установлен .NET Framework.

.NET Framework включает две основные части:

Библиотеку классов .NET Framework. Для начинающего скажу, что если ваша программа – это домик, то классы – это кубики, из которых строится значительная часть домика. Этих классов в библиотеке содержится много, хватит на постройку любой программы.

Common Language Runtime (CLR). Это часть .NET Framework, которая управляет выполнением вашей программы на компьютере и обеспечивает надежность и безопасность этого выполнения. Вы не сможете выполнить на чужом компьютере программу, созданную на VB, если на нем не установлен CLR. Microsoft собирается включить .NET Framework в будущую версию Windows, так что вскоре проблемы с выполнением программ, созданных на VB, на тех компьютерах, где CLR нет, должны исчезнуть.

Чтобы программировать для платформы .NET, нужны инструменты. Фирма Microsoft разработала в качестве этих инструментов серию тесно взаимосвязанных языков программирования. Вот они:

Visual Basic .NET    

Visual C++ .NET    

Visual C# .NET    

Visual J# .NET 

Все они включены в единую программу, которая называется Visual Studio .NET и продается на нескольких дисках. Программа эта включает в качестве своей неотъемлемой части единую среду разработки для всех этих языков и единые вспомогательные средства. Это удобно и должно способствовать легкости переучивания с языка на язык. Инсталляционный пакет Visual Studio .NET включает в себя .NET Framework и все другие необходимые системные программы. Таким образом, установив на свой компьютер Visual Studio .NET, вы можете программировать на любом из упомянутых языков и даже на всех четырех одновременно.



Краткое содержание с рекомендациями


Книга состоит из трех частей и двух приложений:

Часть I. Программирование без программирования.  

У этой части две цели:

Научить самым основным и элементарным приемам работы в VB.

Показать, что в VB можно добиваться впечатляющих результатов практически безо всякого программирования.

Доказательством тому – проекты «Калькулятор» и «Плеер», причем «Калькулятор» получится у вас гораздо ярче и забавнее, чем стандартный калькулятор Windows.

Часть II. Программирование на VB – первый уровень.  Здесь начинается настоящее программирование. Цель этой части – провести вас от создания самых простых программ до сложных. Здесь вы изучаете программирование на VB самым удобным способом – на примерах, то есть по принципу «делай, как я». Вы научитесь создавать небольшие программы, включающие циклы, ветвления, процедуры и использующие графику и звук. Но дело не ограничивается простыми программами. В этой части подробно разбирается создание трех довольно солидных проектов. Заканчивается часть заданием на самостоятельное создание еще одного такого проекта. Предполагается, что после выполнения этого задания у вас должно возникнуть ощущение всесильности, вы должны почувствовать, что теперь вам по плечу программа любого размера, а все, что может понадобиться в будущем – это дополнительные сведения о работе со всем богатством инструментария VB.

Часть III. Программирование на VB – второй уровень.  Цель этой части – снабдить вас этими самыми сведениями об инструментарии VB. Вы познакомитесь с действиями над массивами, коллекциями, строками, файлами, объектами и другими элементами VB. Вы изучите процедуры и функции с параметрами, модули, узнаете, что такое рекурсия и сортировка. Здесь же работа в Интернет, базы данных и, конечно, создание собственных классов объектов, свойств, методов и событий.

Приложение 1. Это теоретический ликбез. Предназначен для тех, кто не знает, как устроен и работает компьютер.

Приложение 2. Это практический ликбез. Предназначен для тех, кто ни разу не садился за компьютер или садился только для игр. Здесь вы научитесь работать с окнами, папками и файлами Windows, вводить в компьютер текст, то есть приобретете все необходимые навыки, чтобы спокойно начать работу в среде Visual Studio .NET.

Не зная материала приложений, вы будете в VB спотыкаться на каждом шагу.

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

От автора

Хочу выразить благодарность моим сыновьям: Алексею – за ценное обсуждение теоретических аспектов программирования; Леониду, необходимость консультирования которого по поводу создаваемой им игры The Siege подвигла меня к более глубокому изучению объектов. Но самая большая благодарность – моей жене, Любе, которая взвалила на себя весь груз домашнего хозяйства и несет его уже много лет, наблюдая, как я получаю удовольствие, сидя за компьютером и работая над этой книгой.

К читателю

Буду рад услышать ваши отзывы о книге. Особенно же буду благодарен за критические замечания. Мой e-mail: lukin63@mail.ru.



Математические действия и функции


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

Действия арифметики обозначаются в VB следующим образом:

ДЕЙСТВИЕ

РЕЗУЛЬТАТ

СМЫСЛ

2    +   3

5

плюс

4    -    1

3

минус

2    *    3

6

умножить

10  /  2

5

разделить

17  \  5

3

целочисленное деление (17 делится на 5, получается 3, в остатке 2)

17  Mod  5

2

остаток от деления

37.2  Mod  10

7.2

остаток от деления

2 ^ 3

8

2 3   (два в кубе)   –  возведение в степень

На уроках математики мы привыкли писать  ab+cd, подразумевая: «a умножить на b плюс c умножить на d».  В VB это выражение мы обязаны писать так: a*b+c*d.  Иначе компьютер подумает, что нужно к переменной, имеющей имя ab, прибавить переменную, имеющую имя cd. Во избежание двусмысленности знак умножения положено писать всегда, в том числе и перед скобками. Например,  a*(b+c) вместо a(b+c).

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

затруднен. Поэтому для обозначения деления в программировании выбрана косая черта. Приведенное выражение на VB положено записывать так:  a+1)/(b+1).  Если бы мы не поставили скобок, то выражение получилось бы таким  a+1/b+1, а это неправильно, так как компьютер, как и мы, всегда перед сложением и вычитанием выполняет умножение и деление, поэтому в последнем случае, не зная наших намерений, он бы сначала разделил  1  на  b , а затем к результату  прибавил бы  a  и 1.

Помните, что компьютер выполняет арифметические действия в привычном для нас порядке: сначала вычисляет функции, возводит в степень, извлекает корни, затем выполняет умножение с делением, затем сложение с вычитанием.

Вопрос: когда в выражениях можно ставить скобки? Ответ: всегда, когда у вас возникают сомнения в правильной очередности действий. Лишняя пара скобок не помешает.  Пример: записать на VB выражение:




Запишем пока так:   

(1 + a / (2+a*b)) / (3+a)  *  b

Разберитесь в этой записи. Сложные выражения с большим количеством скобок на глаз воспринимаются с трудом, так как трудно для конкретной скобки увидеть ее законную пару. В этом случае я могу посоветовать идти «от малого к большому», то есть сначала заметить самые малые из взятых в скобки фрагменты выражения. У нас это  (3+a)   и  (2+a*b). Заметьте глазами их скобки. После этого вам будет уже легче заметить скобки для более крупных фрагментов, таких как (1 + a / (2+a*b)) , и т.д.

VB приходит вам на помощь, и в момент ввода очередной скобки выделяет полужирным шрифтом ее и ее пару.

Разобрались? Приведенная запись меня совсем не удовлетворяет, так как мы не знаем, что VB будет делать раньше – делить   (1 + a / (2+a*b))  на  (3+a)  или умножать (3+a)  на b.  А от этого зависит результат. Добавим для верности пару скобок:

 ((1 + a / (2+a*b)) / (3+a))  *  b

Теперь все в порядке.

Точка или запятая в десятичных дробях? Почти во всех языках программирования и уж, конечно, в VB, в программном тексте в окне кода принято в десятичных дробях вместо запятой ставить точку. Пример:  y=62.8  –  шестьдесят две целых восемь десятых. Однако, если помните, результаты в текстовое поле VB выводит с запятой. В чем дело? VS, являясь приложением Windows, частично воспринимает от нее привычку пользоваться в России запятой. Особой проблемы тут нет. В подавляющем большинстве случаев то, что я уже сказал, поможет вам сделать правильный выбор. В остальных случаях применяйте метод «научного тыка» – пользуйтесь, например, точкой, а если VS жалуется или начинает делать что-то не то, меняйте ее на запятую.

Математические функции.  Кроме нескольких действий арифметики VB может выполнять и другие математические действия, например, извлечение квадратного корня. Однако на компьютере нет клавиши со значком
, поэтому в VS имеется специальная функция – Sqrt. Например, корень из 25 обозначается так –   Sqrt(25), корень из a+b так  –   Sqrt(a+b). Здесь Sqrt  –  сокращение от английского выражения Square root –  квадратный корень. Аргумент, то есть то, из чего нужно извлечь корень, записывается в скобках.



Приведу неполный список математических функций VB: Почти все они являются методами класса System.Math.

ФУНКЦИЯ

РЕЗУЛЬТАТ

СМЫСЛ

Math.Abs(-8)

8

Абсолютная величина (модуль) числа

Math.Sqrt(25)

5

Корень квадратный

Math.Round(17.952)

18

Округление до целых

Math.Round(17.48)

17

Math.Round(51.23708, 2)

51,24

Округление до 2 знаков после запятой

Math.Ceiling(45.23)

46

«Потолок» – ближайшее целое число, большее или равное аргументу

Math.Ceiling(-45.23)

-45

Math.Floor(8.92)

8

«Пол» – ближайшее целое число, меньшее или равное аргументу

Math.Floor(-8.92)

-9

Fix(9.47)

9

Целая часть числа (дробная часть отбрасывается)

Fix(-9.47)

-9

Math.Sign(300)

1

Sign для всех положительных чисел равен  1

Math.Sign(0)

0

Sign для нуля равен 0

Math.Sign(-480)

-1

Sign для всех отрицательных чисел равен  -1

Math.Max(29, 44)

44

Максимальное из двух чисел

Math.Min(29, 44)

29

Минимальное из двух чисел

Math.PI

3,14159265358979

Число ?

Math.E

2,71828182845905

Число e – основание натурального логарифма

Math.Exp(2)

7,38905609893065

e2 – число e в заданной степени

Math.Log(35)

3,55534806148941

Натуральный логарифм  ln 35

Math.Log10(1000)

3

Десятичный логарифм  log101000

Rnd

0,7055475

Случайное число из диапазона (0 – 1)

Кроме этого, имеются функции  Sin, Cos, Tan (что означает тангенс), Asin (что означает арксинус), Acos, Atan и некоторые другие.

Работа со случайными величинами описана в 7.3.1.

Проверьте работу интересующих вас математических функций, написав программу такого вида:

Imports System.Diagnostics.Debug, System.Math

Public Class Form1

    Inherits System.Windows.Forms.Form

Windows Form Designer generated code

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click



        WriteLine(PI)

        WriteLine(Round(17.48))

    End Sub

End Class

Проверьте в уме:

Выражение         (2+1)^2                                                при вычислении даст 9

Выражение         1+ (2+8)^3                                           при вычислении даст 1001

Выражение         1+Abs(5-8)                                           при вычислении даст 4

Выражение         2^4+Sqrt(35+1)                                  при вычислении даст 22

Выражение         Sqrt (8+ Floor(41.8))                          при вычислении даст 7

Выражение         21 \ (Round (2.54+1))                        при вычислении даст 5

Задание 9.   

Определите устно, без компьютера, что напечатает процедура:

    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim a, b As Double

        a = (2 ^ 2 + 1) * (20 - (2 ^ 2) ^ 2) - 11

        b = Round((a + 2) / 10) * (11 \ (a - 4))

        WriteLine(a ^ 2 + b - 1)

    End Sub

Понятно ли вам, что здесь нужно округлять  ((a+2)/10) , а не  ((a+2)/10)*(11\(a-4)) ? Если непонятно, то внимательно найдите к каждой скобке ее пару, начиная с фрагмента (a+2).

Числовые литералы. Слово «число» имеет слишком широкий смысл. Поэтому целесообразно конкретные числа, встречающиеся в программном тексте в окне кода, иногда называть по-другому. Будем называть их числовыми литералами. Так, в строке

y = 20 * a - Round(-2.54) +  0.01

присутствует три числовых литерала:  20,   -2.54,   0.01. Один из них целый, два – дробных. Литералы еще традиционно называют константами, но у этого термина в VB несколько другое значение.

В дальнейшем понятие литерала я расширю и на нечисловые типы данных.


Меню Visual Basic


В Visual Basic существует два типа меню: встроенные и контекстные.

Встроенные меню

Встроенные меню выводятся в строке меню, над верхней границей окна Visual Basic. Название каждого меню отражает содержащиеся в нем команды. Например, меню "Формат" содержит команды, предназначенные для форматирования формы. Некоторые команды вызывают подменю с более подробными командами. Например, выбор команды "Панели" инструментов из меню "Вид приводит" к появлению подменю с названиями панелей инструментов и командой "Настройка". Эта команда служит для изменения встроенных меню или добавления в строку меню новых команд.

Контекстные меню

Контекстные меню содержат наиболее часто используемые команды и появляются при нажатии правой кнопки мыши или клавиш SHIFT+F10.

Примечание. Сведения о команде или меню можно получить с помощью меню "?".



Метки Свойства: имя, текст, шрифт


Имя и текст. У каждого объекта есть свойство имя (Name). У многих есть свойство Text. Попробуем их изменить и разобраться, зачем они нужны. В предыдущем проекте мы были беспечны и не заботились об именах и тексте. За это мы никак не были наказаны, потому что VB в случае нашей беспечности (как говорится – по умолчанию) сам придает значения свойствам, в том числе именам и тексту. Причем, недолго думая, имя и текст VB делает одинаковыми. без особых причин, просто так удобнее.

Проверим. Выделим форму. Заглянем в окно свойств и найдем там имя (Name) – оно в алфавите выше всех. Мы видим, что имя нашей формы – Form1. Это же слово мы видим в заголовке формы. Изменим имя, скажем, на слово Калькулятор. Изменили. И что же? В заголовке формы ничего не изменилось.

Внимание! Верните форме ее имя Form1, иначе проект не запустится (почему – объясняется в 21.1.2).

Найдем теперь в окне свойств формы свойство текст (Text). Ну конечно – текст на нашей форме – тоже Form1. Изменим его на Мой персональный калькулятор. Ага! Эти же слова появились в заголовке формы.

Теперь займемся первой кнопкой. Выделим кнопку Button1. Заглянем в окно свойств. Мы видим, что имя и текст этой кнопки одинаковы –  Button1. Дадим ей имя Кл_сложения.

Внимание!

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

Раз в именах запрещены пробелы, я использовал вместо них знак подчеркивания.

Приведенное правило относится к именам не только объектов, но и остальных элементов VB  –  свойств, методов, переменных, пространств имен и т.д. Подробнее об именах см. в 5.3.4.

Текст нашей кнопки должен состоять из единственного символа +. Найдем +

на клавиатуре и введем его значением свойства Text .

Я думаю, вы уже догадываетесь, зачем нужны имя и текст и в чем их разница. На поверхности объекта мы видим не имя, а текст. Текст виден всем (Штирлиц), а имя остается скрытым (полковник Исаев). Еще аналогия: Мальчик идет по улице, на его рубашке – текст «Эммануил». А зовут его Коля, но это на рубашке не написано.


Зачем нужно имя? Затем, что в программе мы обращаемся к объекту именно по имени, а не по тексту.

Зачем мы изменили текст, нам ясно. Чтобы всем были видны удобные слова или символы. А почему надо было менять имя? Ну, хотя бы потому, что оператор

Кл_сложения.Width=60

как-то понятнее, чем

Button1.Width=60

Метки. А теперь займемся пояснительными надписями в левой части калькулятора (Первое число, Второе число, Результат). Для этого нам понадобится новый элемент управления – Label (метка), который в основном для пояснений и применяется. Найдите Label в окне Toolbox и поместите на форму три метки. Пока они имеют такой вид: Label1,  Label2, Label3 .

Задайте, пожалуйста, всем объектам проекта следующие свойства Имя и Текст:

Объект

Имя

Текст

Form1

Form1

Мой персональный калькулятор

Button1

Кл_сложения

+

Button2

Кл_вычитания

-

Button3

Кл_умножения

х        (это просто буква Икс)

Button4

Кл_деления

:

TextBox1

Число1

TextBox2

Число2

TextBox3

Результат

Label1

Label1

Первое число

Label2

Label2

Второе число

Label3

Label3

Результат

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

Когда вы запустите ваш проект, он должен выглядеть так, как на Рис. 3.4.



Рис. 3.4

Шрифт. Пусть мы хотим, чтобы слово «Результат» было побольше и пожирней. Щелкнем по метке Label3. Найдем ее свойство Шрифт (Font) и щелкнем по плюсу. Из свойства выскочит с десяток свойств, в него входящих (размер шрифта, жирность и т.д.), и вы можете изменять каждое из них. Но лично мне кажется более удобным другой способ: Щелкнем по свойству Font. В поле значения появилась кнопочка с троеточием – это всегда приглашение к дальнейшему разговору (эту кнопку вы можете видеть на Рис. 3.3). Щелкнем по ней – перед нами появилось так называемое диалоговое окно (Рис. 3.5), предлагающее настроить шрифт текста, то есть выбрать размер шрифта (Size), начертание (Font style), название (гарнитуру, то есть рисунок букв) шрифта (Font) и кое-что другое. Начертание может быть обычным (Regular), курсивом (Italic), полужирным (Bold) и полужирным курсивом (Bold Italic). Среди гарнитур попадаются любопытные. Выберите размер и прочее по вкусу, после чего нажмите ОК.



Рис. 3.5

Значки арифметических действий на кнопках получились маловаты. Увеличьте их размер и сделайте пожирнее.

Все! Проектирование первой версии калькулятора закончено! Теперь калькулятор выглядит практически так, как задано на Рис. 3.1. Можно приступать к программированию.


Не программа, а проект


Visual Studio .NET принадлежит к так называемым средам визуальной разработки программ. Это значит, что она берет на себя значительную часть работы по написанию скучных команд, предоставляя программисту вместо этого «собирать домик из кубиков».

Для пояснения рассмотрим аналогию. Вообразите, что вы не программу на VB пишете, а собираете на столе игрушечную железную дорогу. В вашем распоряжении находятся объекты: стол, рельсы, паровозы, вагоны, светофоры, машинисты, стрелочники и т.д. Чтобы игрушка заработала, вам нужно выполнить 3 этапа:

1.   Собрать ее вручную, то есть поместить на свои места и правильно соединить рельсы, вагоны и т.д.

2.   Наша игрушка очень интеллектуальная, то есть поведение многих объектов (таких как машинисты, стрелочники, светофоры и другие) – сложное и осуществляется по программе. Поэтому вам нужно написать для каждого из таких объектов программу поведения. Например, в программе для машиниста одна из команд может быть такой: «Если впереди на светофоре красный свет – тормози», а в программе для светофора – такой – «Если два поезда опасно сблизились – зажигай красный свет» и так далее.

3.   Запустить игрушку и посмотреть, как она работает. Если произошло крушение или что-нибудь еще пошло не так, как надо, значит или вы неправильно собрали игрушку, или написали неправильные программы, или и то и другое вместе. Вы исправляете ошибки и там и там и снова запускаете игрушку. Снова смотрите, снова исправляете. И так до тех пор, пока все не заработает нормально. Этот процесс называется отладкой.

Современный программист, работающий в средах визуальной разработки программ, выполняет те же три этапа. На 1 этапе он вручную расставляет на экране компьютера объекты, которые будут выполнять его программу, на 2 этапе пишет программу, на 3 этапе запускает ее. Что конкретно я имею в виду под расстановкой объектов, вы узнаете в следующем разделе, а сейчас остается сказать, что из-за 1 этапа работа программиста теперь напоминает работу конструктора-проектировщика и продукт работы программиста называют теперь не программой, а проектом. Хотя часто пользуются и прежним термином. Я тоже, наверное, буду их путать. Правда, обещаю, что не в ущерб смыслу.

Готовый проект будем называть приложением Windows или просто приложением. Это значит, что эта программа будет работать на компьютерах с запущенной операционной системой Windows (говорят: программа работает из-под Windows). Она не будет работать из-под других операционных систем, что вряд ли можно назвать недостатком. Таковы почти все современные программы. А у «всеядных» программ – свои минусы.

Еще один термин для готового проекта – продукт. Действительно: продукт работы программиста – продукт.



Объявление переменных величин


Когда на бал к графине N приезжает герцог M, то слуга объявляет на весь зал: "Герцог M!", отчего все гости сразу узнают, что перед ними именно герцог, а не какой-нибудь там барон, и обращаются к нему соответственно. Все хорошо, все прилично. Если бы слуга проморгал и объявил гостя, забыв указать его титул, то в большинстве случаев тоже ничего страшного не произошло. Однако иногда все же могли бы приключиться досадные недоразумения. Например, к герцогу могли бы обратиться так: «Эй, человек, шампанского!», а это уже скандал!

Бал – это проект. Гости – это переменные. Слуга – это программист. До сих пор мы объявляли всех гостей. И делали это оператором Dim. Правда, объявляли демократично, без указания титулов. Однако никаких эксцессов не было, все шло как по маслу. Это потому, что VB умный, он по глазам определяет, кто герцог, а кто нет. Но не у каждого гостя глаза говорят правду. Нам нужно как следует в этом разобраться. Но прежде изучим еще один полезный и приятный элемент VB –  InputBox.



Object Browser


Object Browser – инструмент для обзора и поиска объектов и составляющих их свойств, методов и прочих компонент, а также  пространств имен, в которых они расположены. То есть для обзора и поиска всего богатства библиотеки классов .NET Framework. И не только ее. Таким образом, Object Browser – это что-то вроде справочной системы.

Щелкнем View ® Other Windows ® Object Browser. Перед вами откроется окно Object Browser, в левой панели которого Objects

вы увидите несколько строк (Рис. 4.17).

Рис. 4.17

Сборки. Каждая строка здесь является так называемой сборкой. Сборка – это файл (бывает – несколько файлов), хранящий в себе одно или несколько пространств имен. На рисунке вы видите те сборки, пространства имен которых в настоящий момент находятся в распоряжении вашего проекта.

Обратите внимание, что среди прочих сборок указана и сборка вашего проекта. О ней поговорим позже, а сейчас можете не обращать на нее внимания.

Остальные сборки, которые вы видите на рисунке, служат вместилищем пространств имен библиотеки классов .NET Framework. Не вся библиотека классов .NET Framework в настоящий момент подключена к вашему проекту, а лишь ее самые широко используемые части. Сделано это из экономии. Соответственно, на рисунке вы видите далеко не все сборки библиотеки классов .NET Framework. Но вы можете при желании быстро подключить дополнительные сборки (см. 25.2.2).

Файл сборки обычно имеет расширение dll или exe. По назначению сборки близки к широко известным библиотекам dll, но это не одно и то же.

В одной сборке может находиться несколько пространств имен и наоборот – одно пространство имен может располагаться в нескольких сборках. Часто сборка содержит пространство имен, одноименное с ней.

Пример путешествия по Object Browser. Давайте доберемся в Object Browser до метода Write класса Debug. Щелкните по плюсу в строке сборки System. Мы видим (Рис. 4.18), что внутрь сборки System входит несколько пространств имен. Каждое из них помечено парой фигурных скобок {}.

Рис. 4.18


Особенность отображения в этом окне заключается в том, что видны сразу же все пространства имен, находящиеся в сборке, включая и пространства вложенные в другие пространства. Так, вы видите и пространство имен System, и входящее в него пространство имен System.ComponentModel, и пространства имен, входящие в System.ComponentModel.

Щелкните по плюсу в пространстве имен System.Diagnostics, которое предоставляет нам разнообразные инструменты, в том числе и для отладки программы. Мы видим (Рис. 4.19) внутри пространства имен большое количество объектов.



Рис. 4.19

Щелкните по классу Debug (по нему самому, а не по плюсу), чтобы выделить его. Мы видим (Рис. 4.20) в правой панели Object Browser компоненты класса Debug: свойства и методы. В нижней части окна вы видите краткое описание выделенного элемента. Со временем мы научимся понимать эти описания.



Рис. 4.20

Имейте в виду, что не все компоненты, входящие в данный класс, показаны в правой панели. Многие, доставшиеся «по наследству» от родительских классов (см. 22.7) не указаны.

Еще один пример: Доберемся до цвета Yellow объекта Color. Щелчками по минусикам сверните все строки в левой панели окна Object Browser, чтобы она приобрела первоначальный вид. Затем щелчком по плюсу зайдите в сборку System.Drawing, в ней зайдите в пространство имен System.Drawing, в нем найдите объект (структуру) Color и выделите ее щелчком. В правой панели вы увидите множество свойств этой структуры, имена которых являются названиями цветов. Среди них вы увидите и Yellow.

Как я уже говорил, некоторые пространства имен могут частями встречаться сразу в нескольких сборках. Так, части пространства имен Microsoft.VisualBasic

мы видим и в сборке Microsoft Visual Basic (по-другому – Microsoft Visual Basic.NET Runtime) и в сборке System, части пространства имен System мы видим и в сборке System в сборке mscorlib.

Замечание. Обратите внимание, что в Object Browser имеется много свойств, которых нет в окне свойств, так как здесь приведены и те свойства, которые имеют смысл только в режиме [run]. Например, свойство SelectionLength объекта TextBox, которое выдает длину фрагмента текста, выделенного нами в текстовом поле.

Поиск. Очень удобна возможность поиска в Object Browser нужных нам компонентов. Для этого используется кнопка поиска 
. Пусть вы забыли, где находится Beep. Вы щелкаете по кнопке поиска, затем в появившемся окне поиска (Рис. 4.21) набираете слово Beep, нажимаете Find и в появившемся ниже окне видите результат:

Microsoft.VisualBasic.Interaction



Рис. 4.21


Общие свойства


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

Мы с вами уже познакомились в окне свойств со свойствами Name, Text, Width, Font. Познакомимся с другими.

Внешний вид

BackColor – цвет поверхности объекта – знакомое свойство. Выделим форму. Щелкнем по этому свойству. В поле значения появилась кнопочка с черной треугольной стрелкой. Такие кнопки есть во многих свойствах для удобного выбора их значений. Щелкнем по ней – перед нами появилось окно с тремя закладками (Рис. 3.6).

Рис. 3.6

Выберем цвет в закладках Custom или Web и щелкнем по нему. Форма, кнопки и метки (но не текстовые поля) приобрели этот цвет. Выделите кнопку и аналогично установите ей какой-нибудь другой цвет. То же самое проделайте с меткой и текстовым полем. О закладке System поговорим попозже.

Если предложенных цветов вам не хватает, щелкните правой клавишей мыши по одному из белых квадратиков в нижней части закладки Custom. Перед вами откроется окно определения цвета (см. Рис. 3.7).

Рис. 3.7

Щелчком по большому разноцветному квадрату вы выбираете цвет, а передвигая вверх-вниз движок в правой части окна, выбираете яркость цвета. В поле Color|Solid вы видите образец получившегося цвета. Нажимайте Add Color.

ForeColor – цвет текста и линий, рисуемых на объекте. Настраивается аналогично BackColor. Попробуйте сделать текстовое поле желтым с синим текстом.

BorderStyle (для текстовых полей и меток) – стиль границы. Определяет характер границы и объемность вида объекта.

FlatStyle (для кнопок) – примерно то же, что BorderStyle для текстовых полей и меток.

FormBorderStyle (для формы) – с одной стороны это примерно то же, что BorderStyle для текстовых полей и меток. Но с другой стороны здесь 7 вариантов, и заведуют они не только стилем границы, но и количеством кнопок в правом верхнем углу формы, и возможностью изменять размеры формы в режиме [run].


Положение и размер

Size (размер).  Состоит из свойств Width (ширина)  и Height (высота). Высота формы и элементов управления настраивается совершенно аналогично ширине. Попробуйте.

Задавать местоположение при помощи координат мы научимся чуть ниже, в 3.5.

Locked (заперт). Обычно значение этого свойства – False (что значит – Ложь). Если установить его в True (что значит – Правда), то элемент управления в режиме проектирования нельзя будет таскать по форме и изменять его размеры (а у формы – только изменять размеры). Это полезно, если вы боитесь случайным движением мыши сместить тщательно установленный элемент управления[§].

Anchor (якорь, привязка). Когда мы в режиме [run] изменяем размеры формы, элементы управления остаются на месте. Это значит, что они сохраняют свое расстояние до левого

и верхнего краев формы, а не до правого и нижнего. Мы изменим эту ситуацию для данного элемента управления, если изменим его свойство Anchor. Измените, например, это свойство для кнопки. Щелчками по каждой из 4 полосок (Рис. 3.8) вы приказываете поддерживать или не поддерживать постоянным расстояние от кнопки до соответствующего края формы. Сделайте для интереса темными все 4 полоски. Запустите проект. Изменяйте размеры формы и наблюдайте на поведением кнопки.



Рис. 3.8

Dock (пришвартоваться, приклеиться). Обычно значение этого свойства – None (что значит – Отсутствует). Если выбрать для элемента управления одно из предложенных значений этого свойства, то он будет «приклеен» к одному из краев формы, как бы мы ни меняли ее размеры. Так обычно приклеены полосы прокрутки к краям окна.

Другие свойства

Cursor (курсор, значок мыши, указатель мыши). Это свойство позволяет вам менять внешний вид мышиного курсора, когда он находится над объектом.

Выделите кнопку и, зайдя в окно свойств, выберите для ее свойства Cursor какое-нибудь значение из списка (например, курсор в форме креста). Запустите проект. Поместите курсор мыши на объект. Курсор приобрел вид креста.

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



Поиграли со значками мышиного курсора? А теперь верните все, как было. Не стоит без дела отвыкать от стандартного интерфейса[**]

– это рассеивает внимание. Экзотика хороша в Африке.

Visible (видимый). Обычно значение этого свойства - True (что значит – Правда). Если установить его в False (что значит – Ложь), то элемент управления перестанет быть виден в режиме работы. Но будет слушаться программу.

Enabled (в рабочем состоянии). Обычно значение этого свойства – True («правда»). Если установить его в False («ложь»), то объект установится в нерабочее состояние, то есть виден будет, но не будет работать и им нельзя будет пользоваться. Так, в текстовое поле нельзя будет вводить текст, на кнопку нельзя нажимать, текст объектов приобретет бледно-серый оттенок. Но программу объект слушаться будет. Установив в нерабочее состояние форму, вы тем самым устанавливаете в нерабочее состояние все элементы управления на ней.

TextAlign (выравнивание текста на поверхности объекта). Создайте высокую и широкую кнопку и выберите для нее в окне свойств один из 9 вариантов значений этого свойства (Рис. 3.9).



Рис. 3.9

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

Одновременная настройка свойств у нескольких элементов управления. Очевидно, что все 4 кнопки калькулятора должны иметь одинаковые размеры, шрифт и цвет. Настраивать их по-отдельности для каждой кнопки скучно. VS позволяет легко настраивать свойства сразу у нескольких элементов управления. Все, что нужно предварительно сделать – это выделить эти несколько элементов.

Чтобы выделить несколько элементов, просто обведите их рамочкой. Или, щелкнув по первому из них, щелкайте по остальным при нажатой клавише Ctrl.

После того, как элементы выделены, окно свойств показывает только те свойства, которые являются общими для всех выделенных элементов. А значения свойств показываются только там, где они одинаковы для всех выделенных элементов. Например, свойство Location (местоположение) не показывает значения, так как местоположение у кнопок на форме разное.

Измените сейчас в окне свойств свойство BackColor. Оно изменится у всех выделенных элементов. Запишите в поле значений свойства Size два числа через точку с запятой:  100; 70  – все выделенные элементы приобретут указанный размер.

Группа выделенных элементов позволяет таскать себя по форме и изменять размеры элементов движением мыши. Снимается выделение клавишей Esc.


Оглядимся вокруг


Ну вот, с переменными величинами мы разобрались. Узнали что-то. А научились ли мы в результате этого знания делать что-нибудь новенькое и интересное? Вроде, нет. Ничего особенно приятного, за исключением, может быть, диалога с компьютером. Нда-а-а… Зачем же все мучения?

Вот зачем: Материал этой главы – патрон без пистолета, ненужная сама по себе вещь. А вот материал следующих глав – это самые разные пистолеты без патронов.



Окна среды Visual Studio NET


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



Окно диалога Добавление контрольного значения


Используется для ввода контрольного выражения. Вводимое выражение может быть переменной, свойством, вызовом функции или любым другим допустимым в Basic выражением. Контрольные выражения в области Контрольные окна отладки обновляются каждый раз при входе в режим прерывания, а также после выполнения каждой инструкции в окне проверки.

Допускается перетаскивание с помощью мыши выделенного выражения из окна модуля в область Контрольные окна отладки.

Важно. При выборе контекста контрольного выражения всегда следует использовать самую узкую область определения, удовлетворяющую поставленной задаче. Выбор всех процедур или всех модулей может значительно замедлить выполнение, поскольку контрольное выражение вычисляется после выполнения каждой инструкции. Выбор в качестве контекста отдельной процедуры влияет на выполнение только в те моменты, когда эта процедура находится в списке активных вызовов, что можно наблюдать, выбрав команду Стек вызова из меню Вид.

Параметры окна диалога

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

Контекст Задает область определения переменных в контрольном выражении.

Процедура - Отображает имя процедуры, в которой определено выделенное выражение (по умолчанию). Задает процедуру(ы), в которых вычисляется контрольное выражение. Допускается выбор всех процедур либо отдельной процедуры.

Модуль - Отображает имя модуля, в котором определено выделенное выражение (по умолчанию). Допускается выбор всех модулей либо отдельного модуля для вычисления значения контрольного выражения.

Проект - Отображает имя текущего проекта. Вычисление выражений вне текущего проекта невозможно.

Тип контрольного значения Определяет реакцию Visual Basic на контрольное выражение.

Контрольное выражение - Отображает в области Контрольные окна отладки выражение и его значение. При входе в режим прерывания значение этого выражения автоматически обновляется.

Останов, если значение истинно - Выполнение программы автоматически прерывается, когда значение выражения становится истинным или ненулевым (недопустимо для строковых выражений).

Останов при изменении значения - Выполнение программы автоматически прерывается при изменении значения выражения в указанном контексте.



Окно диалога Изменение контрольного значения


Используется для удаления или изменения содержания или типа контрольного выражени.

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

Параметры окна диалога

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

Контекст Задает область определения переменных в контрольном выражении.

Процедура - Отображает имя процедуры, в которой определено выделенное выражение (по умолчанию). Задает процедуру(ы), в которых вычисляется контрольное выражение. Допускается выбор всех процедур либо отдельной процедуры.

Модуль - Отображает имя модуля, в котором определено выделенное выражение (по умолчанию). Допускается выбор всех модулей либо отдельного модуля для вычисления значения контрольного выражения.

Проект - Отображает имя текущего проекта. Вычисление выражений вне текущего проекта невозможно.

Тип контрольного значения Определяет реакцию Visual Basic на контрольное выражение.

Контрольное выражение - Отображает в области Контрольные окна отладки выражение и его значение. При входе в режим прерывания значение этого выражения автоматически обновляется.

Останов, если значение истинно - Выполнение программы автоматически прерывается, когда значение выражения становится истинным или ненулевым (недопустимо для строковых выражений).

Останов при изменении значения - Выполнение программы автоматически прерывается при изменении значения выражения в указанном контексте.

Удалить Удаляет контрольное выражение.



Окно диалога Контрольное значение


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

Параметры окна диалога

Контекст Отображает имена проекта, модуля и процедуры, в которых определено контрольное выражение.

Выражение Отображает выделенное выражение.

Значение Отображает значение выделенного выражения. Текущее значение не выводится, если контекст выражения находится вне процедур, перечисленных в окне диалога Стек вызова.

Добавить Добавляет выражение в область Контрольные окна отладки.



Окно диалога Настройка


Позволяет настраивать панели инструментов и меню.

Вкладки

Панели инструментов Позволяет создавать, переименовывать, удалять или сбрасывать панели инструментов.

Команды Содержит команды, которые можно перетащить с помощью мыши в меню или панель инструментов.

Параметры Позволяет изменять размеры кнопок панелей инструментов, отображать подсказки и клавиши быстрого набора, добавлять в меню элементы анимации.

Кнопка вызова Помощника Отображает Помощника по Office.



Окно диалога Настройка печати


Отображается при нажатии кнопки Настройка в окне диалога Печать.

Используется для выбора принтера, ориентации и размера страницы.

Параметры окна диалога

Принтер Позволяет задать принтер. Если принтер не выбран, печать будет осуществлена на принтере Windows по умолчанию.

Имя - Отображает список доступных принтеров.

Состояние - Отображает состояние принтера и его готовность к работе.

Тип - Отображает тип принтера.

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

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

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

Бумага Позволяет выбрать размер и тип подачи бумаги (из доступных вариантов). Размеры и типы подачи бумаги зависят от выбранного принтера и изменяются при изменении принтера.

Размер бумаги - Отображает список доступных размеров бумаги.

Подача бумаги - Отображает доступные типы подачи бумаги для выбранного принтера.

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



Окно диалога Параметры компонента


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

Параметры окна диалога

Имя компонента Отображает имя элемента, выделенного в списке Классы или Компоненты.

Описание Позволяет задать строку, отображаемую в панели описания в окне диалога Просмотр объектов.

Файл контекстной справки Отображает связанный с выбранным элементом файл справки. Это значение задается в ячейке Файл контекстной справки на вкладке Общие окна диалога Свойства проекта.

Идентификатор справки Присваивает уникальное числовое значение идентификатору контекста. Это значение используется для поиска соответствующего раздела в файле справки из ячейки Файл контекстной справки при нажатии клавиши F1 или кнопки

во время просмотра процедуры в окне диалога Просмотр объектов.



Окно диалога Переименование панели


Позволяет задать новое имя специальной панели инструментов.

Параметры окна диалога

Панель инструментов Задает новое имя панели инструментов.



Окно диалога Просмотр объектов


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

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

Элементы управления

Поле Проект/Библиотека

Отображает список библиотек, прямо адресуемых из активного проекта. Добавление библиотек выполняется в окне диалога Ссылки. При выборе значения <Все библиотеки> одновременно отображаются все библиотеки.

Поле поиска текста

Содержит строку искомого текста. Допускается ввод или выбор строки. Поле содержит также 4 последних искавшихся в текущем проекте строки. В строке допускается использование стандартных подстановочных знаков Visual Basic.

Для поиска целых слов в контекстном меню следует выбрать команду Только слово целиком.

Кнопка Назад

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

Кнопка Вперед

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

Кнопка Скопировать в буфер обмена

Копирует выделенный текст из списка компонентов или из области описания в буфер обмена. В дальнейшем возможна вставка этого текста в программу.

Кнопка Описание

Помещает курсор в окне модуля в место описания выделенного объекта из списка классов или компонентов.

Кнопка Справка

Отображает контекстную справку по выделенному в списке классов или компонентов объекту. Для получения справки также служит клавиша F1.

Кнопка Найти

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

Кнопка Показать/скрыть результаты поиска




Отображает или скрывает панель Результаты поиска. В этой панели выводятся результаты поиска в проекте или библиотеке, выбранных из списка Проект/Библиотека. Результаты выводятся в алфавитном порядке.

Список Результаты поиска

Отображает библиотеку, класс и компонент, удовлетворяющие условиям поиска. Содержимое панели Результаты поиска изменяется при изменении значения в списке Проект/Библиотека.

Список Классы

Отображает список всех доступных классов из библиотеки или проекта, выбранных в поле Проект/Библиотека. Если для класса существует программный текст, этот класс выделяется жирным шрифтом. Список всегда начинается с класса <глобальные>, компоненты которого доступны глобально.

Если выделен класс, но не указан компонент, будет выведен компонент по умолчанию (если таковой существует). Компонент по умолчанию помечается звездочкой (*) или определенным для данного компонента значком по умолчанию.

Список Компоненты

Отображает список компонентов выбранного класса, сгруппированных по типу и упорядоченных внутри каждой группы по алфавиту. Методы, свойства, события и константы, для которых имеется программный код, выделяются жирным шрифтом. Порядок сортировки изменяется командой Компоненты группы контекстного меню просмотра объектов.

Панель описания

Отображает описание компонента. Содержит ссылку для перехода к классу или библиотеке, к которой принадлежит компонент. Некоторые компоненты имеют также ссылку на свой родительский класс. Например, если в панели описания указано, что Команда1 имеет тип Кнопка, выбор этой надписи отобразит класс Кнопка.

Допускается перетаскивание с помощью мыши текста из панели описания в окно модуля.

Линия разбивки

Разделяет панели и позволяет изменять их размер. Существует между:

Списками Классы и Компоненты.

Списком Результаты поиска и списками Классы и Компоненты.

Списками Классы и Компоненты и панелью описания.


Окно диалога Шрифт


Служит для изменения шрифта, его размера и/или начертания для текста и полей данных.

Параметры окна диалога

Шрифт Отображает список всех установленных в Windows шрифтов. При открытии окна диалога выбирается шрифт, использованный для форматирования выделенного элемента.

Начертание Отображает список четырех дополнительных атрибутов, применимых к выбранному шрифту:

Обычный - стандартное, неизмененное начертание

Полужирный - жирный шрифт

Курсив - наклонный шрифт

Полужирный курсив - жирный наклонный шрифт

Размер Отображает список стандартных размеров для выбранного шрифта. При открытии окна диалога выбирается размер шрифта, использованный для форматирования выделенного элемента, и этот размер отображается в первой строке списка размеров.

Допускается выбор размера из списка или его ввод в поле редактирования (если есть уверенность, что для текущего принтера установлены дополнительные размеры шрифта, или если используется масштабируемый шрифт).

Атрибуты Отображает два дополнительных атрибута, используемые для выделения выбранного шрифта.

Зачеркнутый - перечеркивает символы шрифта

Подчеркнутый - подчеркивает символы шрифта

Возможно задание любого сочетания атрибутов.

Образец Отображает образец выбранного шрифта. Показываются: шрифт, начертание, размер, атрибуты и цвет (если указан). Полезно использовать это поле для просмотра результатов подбора параметров форматирования.

Набор символов Отображает перечень входящих в состав шрифта наборов символов.

OK Применяет параметры шрифта к выделенному элементу отчета.

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



Окно диалога Создание панели инструментов


Позволяет задать имя новой панели инструментов.

Параметры окна диалога

Панель инструментов Допускается ввод имени новой панели или использование имени по умолчанию. Имя по умолчанию различно для каждой панели инструментов и имеет вид: Настраиваемая1, Настраиваемая2 и т. д.



Окно диалога Стек вызова


Отображает список активных вызовов процедур в режиме прерывания. При выполнении процедуры она помещается в список активных вызовов. Если из этой процедуры вызываются другие, все они также добавляются в список. Процедуры удаляются из списка когда управления возвращается вызвавшей их процедуре. В список также добавляются процедуры, вызываемые в окне проверки.

Параметры окна диалога

БазаДанных.Модуль.Процедура Отображает список процедур.

Показать Помещает место вставки в точку вызова процедуры и на полях устанавливает маркер вызова

.



Окно свойств


Чуть раньше мы уже познакомились с такими свойствами объектов, как BackColor, Width, Text. Количество свойств у каждого из объектов довольно большое. Многие из них мы можем менять в режиме работы [run] при помощи программы, как мы это уже делали (например, HScrollBar1.Width = 100). Оказывается, многие свойства формы и элементов управления можно менять и в режиме проектирования [design]. Делается это вручную, безо всякого программирования (для того и задумано, что вручную легче!).

Вы сейчас в режиме [design]? Хорошо. Пусть вы хотите просмотреть свойства кнопки Button1. Один щелчок по этой кнопке. При этом на кнопке появляются маркеры. Говорят, что объект выделен, стал активным. В этом случае его свойства вы можете видеть в окне свойств (окно Properties в правой части Рис. 3.3).

Рис. 3.3

Если окна не видно, проделайте View ® Properties Window, после чего снова щелкните по кнопке Button1.

У вас это окно может занимать несколько другое положение. Если оно кажется вам маловатым, попробуйте расширить его, ухватившись за левый или нижний  края. Более подробно работа с окнами среды VS разобрана в 4.2.

В окне свойств – два столбца: название свойства и его значение. Для вашего удобства свойства могут быть упорядочены по алфавиту (закладка Alphabetic

) или сгруппированы по категориям (закладка Categorized  
).

Выберите упорядочение по алфавиту. Обратите внимание, что некоторые свойства помечены значком «+». Это сложные свойства, которые сами состоят из нескольких свойств. На Рис. 3.3 это, например, свойство Font (шрифт). Если вы щелкнете по значку «+», он превратится в «-», а свойства, из которого Font состоит, будут видны по-отдельности, каждое – в своей строке. На Рис. 3.3 вы видите, из чего состоят свойства Location (местоположение) и Size (размер). Так, в свойство Size входят два свойства: Width (ширина) и  Height (высота).

Попробуем изменить значение свойства Width. Найдите в окне свойств его численное значение. Введите вместо имеющегося там числа другое число, например, 30. Вы увидите, что ширина кнопки на форме изменилась. Точно такого же результата вы добились бы в режиме работы [run], выполнив оператор Button1.Width = 30. А теперь поступим наоборот – перетащим немного влево или вправо один из маркеров кнопки. Мы увидим, что соответственно изменилось и число в окне свойств.

Выделим щелчком какой-нибудь другой объект на форме. Теперь в окне свойств – его свойства. Выделим форму, щелкнув по любому свободному месту ее поверхности –  теперь мы видим и можем менять ее свойства. И так далее. Поэкспериментируйте.

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

Значение многих (но не любых) свойств из окна свойств легко изменить в программе операторами типа  Button1.Width = 30.



Оператор присваивания меняет значения переменных величин


Пока я не рассматривал программы, в которых переменные меняют свою величину. Теперь настало время такую программу рассмотреть:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim k As Integer

        k = 10

        Debug.WriteLine(k)

        k = 25

        Debug.WriteLine(k)

        k = 4

        Debug.WriteLine(k)

End Sub

В процессе работы программы содержимое ячейки k меняется.  Так, при выполнении оператора k=25 там вместо значения 10 появляется 25. А куда же девается десятка? Она стирается, то есть компьютер забывает ее безвозвратно. Здесь действует общий принцип работы всех компьютеров:

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

Раз теперь вместо 10 в ячейке k находится 25, то оператор Debug.WriteLine(k) печатает уже 25. (Слово «печатает» устарело, оно осталось от тех времен, когда мониторов еще не было, а вместо них были принтеры. Когда я по старинке говорю, что информация печатается, я подразумеваю, что она появляется на мониторе в том или ином окне.) Следующий оператор k=4   запишет на место 25 четверку, а  Debug.WriteLine(k) ее напечатает. Проверьте.

Запишем схематически процесс изменения информации в ячейке k:

ПОРЯДОК  ИСПОЛНЕНИЯ ОПЕРАТОРОВ

ЧТО НАХОДИТСЯ В ЯЧЕЙКЕ ПАМЯТИ   k

ЧТО ВИДИМ

В ОКНЕ Output

k=10      

10

Debug.WriteLine(k)

10

10

k=25      

25

Debug.WriteLine(k)

25

25

k=4

4

Debug.WriteLine(k)

4

4

А что напечатает следующая программа?

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click

        Dim f As Integer

        f = 30

        Debug.WriteLine(f)

        f = f + 4

        Debug.WriteLine(f)

End Sub

Оператор   f=30  запишет в ячейку f число 30.  Затем оператор  Debug.WriteLine(f)   напечатает 34. А что сделает странный оператор f=f+4 ?  Не думайте, что это уравнение или что-нибудь в этом роде. Это оператор присваивания, а значит и выполнится он согласно определению оператора присваивания. Сначала VB вычислит правую часть  f+4 , подставив туда вместо f его значение, взятое из ячейки, и получит 34. Затем число 34 будет записано в ячейку, отведенную под переменную, обозначенную в левой части, то есть опять же в ячейку f. При этом старое значение 30 будет стерто. Оператор  Debug.WriteLine(f)   напечатает 34.


Таким образом, оператор  f=f+4

 просто увеличивает число в ячейке f   на четверку или, другими словами, увеличивает  f  на 4.

Зачем это нужно?  Узнаете позже. Очень даже нужно. Операторы такого типа встречаются настолько часто, что для них даже придумали сокращенную запись. Потренируемся:

Оператор

Сокращенная запись

Действие

a = a + 1

a += 1

Переменная увеличивается на 1

s = s - 25

s -= 25

Переменная уменьшается на 25

b = b * 2

b *= 2

Переменная увеличивается в 2 раза

t  =  t  /  3

/ =  3

Переменная уменьшается в 3 раза

Задание 8.   

Определите без компьютера, что будет напечатано при выполнении следующих фрагментов программ:

a=100 :  a=10*a+1 : Debug.WriteLine(a)  

a=100 :  a= -a : Debug.WriteLine(a)

a=10 :  b=25 :  a=b-a :  b=a-b : Debug.WriteLine(a) : Debug.WriteLine(b)


Отличия Visual Studio NET от и от Visual StudioNET


Отличия практически отсутствуют и сводятся в основном к интерфейсу, поэтому данная книга является учебником по программированию на языке Visual Basic .NET как в среде Visual Studio .NET 2003, так и в среде Visual Studio .NET 2005, так и в среде Visual Studio .NET. Хотя конкретно изложение ведется для версии 2003.



Панели инструментов


Панели инструментов предназначены для быстрого и удобного доступа к инструментам VS той или иной специализации. На Рис. 4.28  вы видите две панели инструментов. Верхняя из них – стандартная, она всегда на экране, потому что нужна очень часто. Ее направленность – основные операции с проектами. Мы уже пользовались некоторыми ее кнопками. Задержите мышку на любом значке панели – и он назовет себя.

Рис. 4.28

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

VS имеет привычку без спросу выводить на экран панели, которые по ее мнению вам могут в данный момент пригодиться, а затем убирать их с экрана, когда с ее точки зрения они вам больше не нужны. Вручную панели инструментов вызываются на экран так: View ® Toolbars ®  щелчок по одному из пары десятков названий панелей. Те панели, что уже есть на экране, помечены галочкой. Убрать панели с экрана можно тем же способом, что и вызывали.

Выведите на экран панель Layout. Ее специализация – работа с элементами управления на форме. В 4.4.6 мы косвенно с ней уже познакомились. Скорее всего она покажется в верхней части окна VS рядом с другими панелями. На Рис. 4.28 вы видите ее под стандартной панелью инструментов. Если вы хотите сместить ее оттуда, ухватитесь мышкой за один из нескольких сереньких вертикальных отрезков, разделяющих инструменты на этой панели, и тащите.

После этого вы можете изменять форму панели. Делаете вы это примерно так же, как изменяете форму окон, ухватившись мышкой за их края. На Рис. 4.29 вы видите ту же панель Layout, которую мы уже переместили и которой изменили форму. Теперь ее можно закрывать и крестиком.

Рис. 4.29

Пока на форме не выделены элементы управления, кнопки на панели Layout будут бледными и неактивными, потому что им нечего делать. Выделите несколько элементов управления, кнопки оживут, с ними можно работать. А как – вы уже поняли из 4.4.6

Щелкнув по треугольной стрелочке рядом с крестиком в правом верхнем углу панели, вы сможете добавлять и убирать кнопки с панели. Там же вы можете создать собственную панель инструментов. Но уж в этом вы разберетесь сами, если понадобится.

Польза от остальных панелей инструментов вам станет ясна по мере дальнейшего изучения VB.



Передвигаем и настраиваем окна


Откройте какой-нибудь проект. Пусть он называется «Иерархия». Посмотрите на Рис. 4.8. Не беда, если картинка на вашем экране будет не очень похожа на рисунок.

Рис. 4.8

Группы окон. Сколько окон мы видим на рисунке? Попробуем посчитать.

Прежде всего это большое белое окно, на котором расположена форма. Это – окно конструктора форм. Над окном мы видим две закладки. Щелкнем по закладке Form1.vb и обнаружим, что на месте окна конструктора возникло окно кода. Щелкнем по закладке Form1.vb [Design] и обнаружим, что на месте окна кода снова возникло окно конструктора. Таким образом, два окна объединены в группу окон с закладками для быстрого переключения между окнами.

Справа мы видим еще две подобных группы, только размер у них небольшой и закладки расположены не над, а под окнами. Верхняя группа состоит из двух окон (закладки Solution Explorer и Class View). Нижняя – тоже из двух окон (закладки Properties и  Dynamic Help). Пощелкайте по закладкам.

Снизу мы видим продолговатое окно Output. Без закладок. Но это тоже группа, только из одного окна, потому и без закладок.

Поставьте мышь на значок

 Toolbox в левой части окна VS. На экран выплывет наш привычный серый «ящик с инструментами» Toolbox. Это тоже окно, несмотря на то, что на другие окна не похоже.

Обратите внимание на значок

 Server Explorer рядом со значком Toolbox. Поместите на него мышь. Окно Server Explorer выплывет на экран.

На самом деле окон в VS гораздо больше, чем мы видим на рисунке, только они не открыты.

Закрываем и открываем окна. Чтобы избавиться от ощущения тесноты на экране, давайте начнем с того, что закроем все окна, исключая (чтобы не запутаться) Toolbox и Server Explorer. У каждого окна есть в правом верхнем углу значок крестика «´». Будем щелкать по крестикам до тех пор, пока главное окно среды не опустеет (Рис. 4.9).

Рис. 4.9

Теперь можно нашу пустую квартиру заселять. Не думайте, что наш проект закрыт, он открыт, только не виден, закрыты окна, а не проект.

Команды на показ многих окон VS расположены в пункте View главного меню VS. Начинать нужно с открытия окна Solution Explorer. Наши действия: View ® Solution Explorer. На Рис. 4.10 вы видите среду VS после этого действия, а также открытое меню View, в котором открыто подменю Other Windows («Другие окна»).




Рис. 4.10

Щелкните по значку Form1 в окне Solution Explorer. Теперь выберите в меню View пункты Code (чтобы появилось окно кода),  Designer (чтобы появилось окно конструктора форм) и Properties Window (чтобы появилось окно свойств), а в подменю Other Windows – окно Output. Ваша среда приобрела примерно такой вид, как на Рис. 4.11. Он отличается от Рис. 4.8 меньшим количеством закладок (так как уменьшилось число окон).



Рис. 4.11

Перемещаем окна. Теперь поучимся перемещать окна. Чтобы приблизить эксперимент к реальности, выберите в меню View окно Class View, а в меню Help – окно Dynamic Help. Среда приобрела прежний вид (у меня – как на Рис. 4.8, а у вас, возможно, другой). Надеюсь, что в правой части у вас найдется хотя бы одна группа окон с закладками. Если этого нет, то читайте дальше, вскоре вы поймете, как такую группу получить.

Группу окон можно таскать по экрану, ухватившись мышкой за заголовок. Исключение – центральная группа с окнами  Code и Designer. На Рис. 4.12 я ухватился мышкой за заголовок одной из групп (закладки Solution Explorer и  Class View) и перетащил ее в центр экрана, не отпуская мышиной кнопки. Виден контур положения окна, когда я отпущу кнопку мыши.



Рис. 4.12

На Рис. 4.13 я отпустил кнопку мыши.



Рис. 4.13

Вы видите, что группа окон (закладки Solution Explorer и Class View) оказалась в середине экрана, а группа окон (закладки Properties и  Dynamic Help) шустро захватила место уехавшей группы. Это – отличительная черта VS. При запуске проекта, использовании системы помощи и во многих других случаях некоторые окна сами собой возникают, исчезают, меняют место Эта шустрость перемещения, возникновения и исчезновения окон поначалу приводит новичка в замешательство, и только потом привыкаешь и даже начинаешь ощущать удобство такого поведения. Поведение это направлено на то, чтобы в нужный момент на экране были только нужные окна, а остальные должны быть спрятаны.

Начните рискованное дело, а именно: повторяйте за мной все манипуляции с окнами, которые я проделываю. Для успешных манипуляций нужен опыт, а если у вас его нет, то через некоторое время ваша среда будет похожа на груду мусора. Однако не отчаивайтесь, упорство будет вознаграждено и через несколько абзацев вы станете спокойным и уверенным хозяином своей среды.



Прежде всего повторите за мной только что описанное перемещение группы. Готово? А теперь снова ухватитесь за заголовок той же группы и самым разнообразным образом потаскайте ее по экрану, не отпуская мышиной кнопки. При этом приближайте ее вплотную к краям главного окна VS, проводите ее по-разному над другими группами и окнами, совмещая курсор мыши с заголовками, закладками и границами других групп и окон. Вы увидите, что в зависимости от текущего положения заголовка относительно перечисленных объектов контур окна резко изменяет форму и положение, проявляя тенденцию «прилипать» к краям главного окна VS и к другим группам и окнам, «толкаться», смещая группы и окна по вертикали или горизонтали. Если вы совместите курсор мыши с заголовком или закладками другой группы, то контур примет такую форму, как на Рис. 4.14. Вы видите, что здесь контур занял всю группу Output, причем у контура имеется выступ внизу (будущая закладка). Это значит, что когда вы отпустите мышь, ваша группа присоединится к этой. В результате на этом месте образуется единая группа из 3 окон с 3 закладками.



Рис. 4.14

Отпустите мышь.

Аналогичным образом мы можем передвигать по экрану большинство групп и окон. Не стесняйтесь, перемещайте со всего размаху, пусть наступит хаос!

Настраиваем окна. А теперь посмотрим, как восстановить порядок. Закройте все окна, включая Toolbox и Server Explorer. Откройте окно Solution Explorer и пришвартуйте его к правому краю окна VS, как оно пришвартовано на Рис. 4.10. Щелкните правой клавишей мыши по заголовку окна Solution Explorer. Вы увидите контекстное меню для выбора состояния окна (см. Рис. 4.15).



Рис. 4.15

Поговорим о пунктах этого меню.

На рисунке вы видите, что в меню выбрано состояние Dockable («швартующийся»). Это значит, что окно (или группа) при перемещении по экрану будет стремиться пришвартоваться, прилипнуть куда ни попало, как я уже описывал чуть раньше. Попробуйте. Прилипшее окно называется привязанным.

Если вы выбрали состояние Floating, то окно прекратит свое сумасшедшее поведение и будет перемещаться по среде привычно и спокойно, не взаимодействуя с другими окнами, как ведут себя обычные окна Windows. Попробуйте. Такое окно называется плавающим.



Когда окно пришвартовано к любому из краев окна VS, в меню появляется пункт Auto Hide («автопрятки»). Если выбрать это состояние, то окно всякий раз, когда вы его не используете, будет уплывать за край окна VS, оставив у края свой значок с надписью, как это делает Toolbox. Когда окно снова вам нужно, вы просто ставите мышку на значок – окно выплывает. Это очень экономит место на экране. Попробуйте. Обратите внимание, что окно теперь нельзя утащить от края, пока не снимешь выделение пункта Auto Hide.

Так же ведет себя и группа окон. Для каждого окна из группы у края остается свой значок.

Пункт Auto Hide настолько популярен, что для него в заголовке окна есть специальный значок, по которому вы можете оперативно щелкать мышкой, устанавливая и снимая состояние Auto Hide. Когда значок имеет вид
, состояние Auto Hide установлено, когда
 – не установлено.

Вот несколько полезных приемов работы с окнами:

Чтобы «вытащить» окно из группы, тащите его за закладку.

Чтобы присоединить окно к группе, перетащите его заголовок на заголовок группы или одну из закладок.

Чтобы присоединить окно к центральной группе (куда входят окна кода и конструктора форм) уберите у окна выделение как пункта Dockable, так и пункта Floating.

Чтобы «вытащить» это присоединенное окно из центральной группы, выделите у окна пункт Dockable или пункт Floating.

Окно кода и окно конструктора не движутся. И контекстное меню у них другое. Чтобы увидеть одновременно оба этих окна, выберите в контекстном меню New Horizontal Tab Group или New Vertical Tab Group. Чтобы вернуть все в прежнее положение, выберите в контекстном меню Move to Next Tab Group или Move to Previous Tab Group.

Пункт Hide просто прячет окно. Снова открывать его – через меню View.

Когда окна или группы граничат друг с другом (как окна Solution Explorer и Properties на Рис. 4.11), вы можете мышкой обычным образом смещать их границу. Для этого, не спеша перемещая мышь поперек границы, поймайте момент, когда курсор мыши поменяет свой вид на двойную стрелку, и после этого тащите мышь.

Минимум окон для работы. Каков минимум окон, которым можно для начала обходиться? Вот список:

Toolbox

Solution Explorer

Properties Window

Designer

Code

Output

Теперь, когда вы все это знаете, закройте все окна и по-одному открывайте нужные. Затем буксируйте их на желаемое место, пришвартовывайте к приглянувшемуся краю, выбирайте удобное состояние и присоединяйте к подходящей группе. Желаю успеха.


Переменные величины и память


Графиня отвела во дворце каждому гостю по комнате. Размер комнаты зависит от титула. Для нас дворец – это оперативная память, гости – переменные, а комнаты – так-называемые ячейки. Полностью механизм работы переменных величин не понять, если не узнать, как они хранятся в оперативной памяти компьютера.

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

При запуске проекта и позже компьютер под каждую переменную отводит в памяти место. Оно называется ячейкой. Во дворце размер комнат измеряют в квадратных метрах, в памяти размер ячейки выражают в байтах. Князю нужна более вместительная комната, чем  барону. Переменной типа Double нужна более вместительная ячейка, чем переменной типа Integer. Так оно и есть на самом деле: под переменную типа Integer в памяти отводится ячейка размером 4 байта, а под переменную типа Double – 8 байтов. Только не думайте, что переменная типа Integer не может быть числом длиннее 4 цифр, а переменная типа Double не может быть числом длиннее 8 цифр. Компьютер использует для записи чисел в ячейки более компактную систему, чем для записи символов: в 1 байт умещаются две с лишним цифры числа.

Не думайте также, что «стенки» между ячейками в оперативной памяти физически стоят намертво, как стены между комнатами дворца. При выполнении каждого следующего проекта и даже в процессе выполнении одного и того же «дворец» перестраивается. Но нас не интересует физический уровень. Мы можем пока думать, что на всем протяжении «праздника» любая переменная спокойно живет в своей неизменной ячейке.



Перенос длинного оператора на следующую строку


Иногда оператор получается такой длинный, что не умещается на ширине окна кода, и чтобы его увидеть целиком, приходится прокручивать окно кода влево-вправо. Это неприятно, потому что прокручивать не хочется, а хочется видеть весь оператор на экране целиком. Часть оператора можно перенести на другую строку комбинацией пробела и подчеркивания. Например, вместо

Результат.Text = Val(Число1.Text) + Val(Число2.Text)

можно записать

Результат.Text = Val(Число1.Text)  _

                            + Val(Число2.Text)

или

Результат.Text =  _

        Val(Число1.Text)  _

        + Val(Число2.Text)

Как видите, в конце строк в качестве знака переноса стоит пара символов: пробел и за ним знак подчеркивания.

Лично я для обозримости программы применяю еще одно средство – для окна кода выбираю шрифт Arial Narrow. Очень помогает, так как шрифт узенький и на ширину окна умещается много букв. Как это сделать, написано в 4.4.7.

VS предлагает еще одно средство: Edit ® Advanced ® Word Wrap. В этом случае код переносится на другую строку автоматически. Но мне это средство не нравится, так как нарушает привычную для глаз программиста систему отступов от левого края окна.



Перенос вашего проекта на другие компьютеры


Когда ваш проект, например, Калькулятор, заработает на вашем компьютере, вам захочется, чтобы он заработал и на компьютерах ваших друзей. В давние времена для решения этой проблемы достаточно было создать исполняемый файл вашего проекта (назовем его Калькулятор.exe) и скопировать его на компьютер вашего друга (где найти исполняемый файл, написано в 3.12.4). Теперь ситуация изменилась. У современных средств программирования гораздо более солидный и тяжелый подход к переносу программ с компьютера на компьютер. Не копировать, а инсталлировать – вот девиз!  В причины отказа от легкой жизни я не буду особенно вдаваться, но основная такая – программа, написанная на VB, слишком зависит от Windows и других системных программ, а на разных компьютерах операционная система Windows и системные программы разные, поэтому копирования запускающего файла недостаточно, нужно как-то перенастраивать Windows и возможно инсталлировать какие-то системные программы. Все это входит в понятие инсталляции вашей программы на чужой компьютер.

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

Что такое инсталляция. Если вы когда-нибудь инсталлировали какую-нибудь игру на компьютер, то что такое инсталляция знаете. Вот вы купили компакт-диск с понравившейся игрой или программой (пусть это будет Microsoft Office). Во многих случаях купленная программа просто так не запустится, нужна установка или, по-другому, инсталляция (от английского install - устанавливать). Говорят, что на компакт-диске находится не сама программа Microsoft Office, а инсталляционный пакет программы Microsoft Office, то есть набор файлов, в который входят в сжатом виде и файлы Microsoft Office. Вы находите в инсталляционном пакете программу установки (ее запускающий файл чаще всего называется  Setup.exe, хотя вполне могут быть и другие названия) и запускаете ее. Все ваши дальнейшие действия диктуются этой программой, которая еще называется мастером установки. Фактически вам приходится только отвечать на ее вопросы. Например, вы отвечаете на вопрос, в какую папку жесткого диска вы желаете установить Microsoft Office. Программа установки разворачивает сжатые файлы Microsoft Office и копирует их на жесткий диск вашего компьютера. Кроме этого она настраивает Windows на работу с Microsoft Office. После окончания установки вы сможете запускать Microsoft Office из стартового меню «Пуск» на панели задач Windows.

Во время установки игр вам, возможно, приходили в голову мысли о суперпрограммистах, которые мало того, что создают игру, они еще и создают программу установки и делают так, чтобы программа установки правильно установила игру на ваш компьютер. Сейчас я предлагаю вам стать таким «суперпрограммистом». Наша цель – через полчаса получить на жестком диске папку – инсталляционный пакет вашей программы, готовый к употреблению. После этого вы можете переписывать его на компакт-диск и дарить друзьям.

В качестве примера создадим инсталляционный пакет для нашего Калькулятора, созданного в 3.3. Если вы хотите создавать инсталляционный пакет для другого приложения – не беда, мое объяснение никак не зависит от устанавливаемого приложения.



Первые шаги – за ручку


Лучший способ познакомиться с VB – поскорее создать и запустить какой-нибудь проект. Пусть он будет маленький и никому, кроме нас, не нужный, но зато с ним мы пройдем все этапы работы с VB. Этим мы сейчас и займемся.

Садитесь за компьютер и приступим. Без компьютера этот раздел принесет вам мало пользы. Учиться Бейсику по книжке без компьютера – все равно, что учиться кататься на велосипеде по самоучителю без велосипеда. Все, что я говорю, вы отныне должны немедленно выполнять на компьютере. Это нужно и для тренировки и еще потому, что многое, кажущееся таким очевидным в тексте, становится странным и непонятным, когда нажмешь на клавиши. К тому же не забывайте, что автор – не Господь Бог и тоже может ошибиться. Компьютер же не ошибается и всегда поймает автора за руку.

 Иногда я буду прямо говорить: «Нажмите такую-то клавишу» или «Сделайте на компьютере то-то и то-то». Но чаще я буду просто излагать материал, не повторяя по сто раз, что нужно проверять на компьютере каждое мое слово. Например, я говорю, что данная процедура по такой-то причине печатает число 36, и сразу же перехожу к другой теме. Стоп! Не надо спешить за мной. Сначала проверьте, действительно ли будет напечатано 36.

Напоминаю, что если у вас нет достаточного опыта работы на компьютере, к вашим услугам Приложение 2, где вы научитесь всему, что нужно, чтобы приступить к делу.



Первый этап – подготовка проекта


В коде вашего проекта могут встретиться операторы типа

        Кл_деления.Image = Image.FromFile("D:\Фотографии\Earth.JPG")

или

        Плеер.FileName = "D:\WINNT\Media\canyon.mid"

Эти операторы объединяет наличие в них адресов файлов. Это значит, что в режиме работы ваш проект может обращаться к графическим, звуковым и другим файлам, находящимся где-то далеко на диске. Вам никогда не приходило в голову, что будет, если кто-то, не подозревая, что эти файлы нужны вашей программе, сотрет их? Ничего хорошего не будет. А если вы к тому же предназначаете ваш проект для инсталляции на чужой компьютер, опасность и морока возрастают вдвойне.

Отсюда совет: Все такие файлы заранее скопируйте в папку BIN внутри папки вашего проекта, туда, где находится исполняемый файл вашего проекта. По принципу «Все мое ношу с собой».  Так как после запуска проекта эта папка является текущей (см. 19.2.12), то также упростятся и адреса в приведенных выше операторах:

Кл_деления.Image = Image.FromFile("Earth.JPG")

Плеер.FileName = "canyon.mid"

Картинки, которые вы загрузили в объекты на этапе проектирования, не нуждаются во всех этих усилиях, так как они уже неявно сохранены в одном из файлов в папке проекта.

Рекомендую также с самого начала разработки проекта сохранять его не под предлагаемым именем WindowsApplication1, а под уникальным именем, например, Калькулятор.



Первый способ – опускаем названия пространств имен


В большинстве случаев VB позволяет выбросить из операторов название пространства имен. Попробуйте:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Interaction.Beep()

       Debug.WriteLine(3 + 2)

End Sub

Все сошло нормально. Результат прежний –  5.

Пространство имен Microsoft.Visual Basic позволяет выкинуть даже имя объекта. Попробуйте:

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Beep()

       Debug.WriteLine(3 + 2)

End Sub

Получилось.

Но иногда название пространства имен выбросить не удается: VB возражает. Это значит, что объект с тем же именем есть и в других пространствах имен, и VB возражает потому, что не знает, какой именно из этих объектов вы имеете в виду. Если в компании два Кольки, то во избежание путаницы одного все зовут Колька с Полянки, а другого – Колька с Басманной.



Пишем программу


Давайте придумаем себе задачу для нашего проекта. Пусть на экране при нажатии кнопки или, скажем, при передвижении ползунка на полосе прокрутки что-нибудь происходит. Легко сказать – пусть! Для этого нужно знать, что вообще умеет делать VB при нажатии на кнопки или при передвижении ползунков. А если даже мы это знаем, то все равно не знаем, как это приказать, то есть как правильно написать программу. Ну что ж. Программирование мы будем изучать постепенно и постепенно всему научимся, а сейчас я выберу что-нибудь самое простое и подскажу, как это делается. К компьютеру не подходите, пока я не дам знак.

Придумали оператор. Забудем пока о «покраске формы» и прикажем компьютеру для начала при нажатии кнопки Button1 сделать ширину горизонтальной полосы прокрутки равной 100 пикселямH. Команда (оператор) для этого пишется так:

HScrollBar1.Width  = 100

Разберемся, что здесь написано.

HScrollBar1 – это имя нашей горизонтальной полосы прокрутки (Его дал VB. О том, как узнавать имена объектов и изменять их, я скажу позже).

Width – переводится «ширина».

Смысл оператора очевиден: это приказ сделать ширину объекта HScrollBar1 равной 100.

Теперь о том, что обозначают точка и знак равенства. Пока правило такое:

Слева от точки мы записываем имя объекта, справа от точки – название его свойства, а справа от знака равенства – значение этого свойства. Точку нужно писать обязательно.

Вот аналогии:

Коля.рост = 140

Бразилия.климат = жаркий

Нина.фамилия = Рыбакова

В будущем мы увидим, что свойство само может быть объектом, а значит, у него тоже могут быть свои свойства. Вот аналогии:

Нина.фамилия.число букв = 8

Буратино.нос.длина = 30

Танк.двигатель.шестеренка.материал = сталь

Говорят: Свойству Width объекта HScrollBar1 присваивается значение 100.

Окно кода. Теперь поговорим о том, как нам сделать, чтобы компьютер выполнил этот оператор, причем именно при нажатии на кнопку Button1, а не в какой-либо другой момент. Снова садитесь за компьютер. Вы еще не стерли наш проект? Проверьте, находимся ли мы в режиме проектирования [design]. Сделайте двойной щелчок по кнопке Button1. Перед вами возникнет новое окно – окно программного кода или просто окно кода (Рис. 1.7).




Рис. 1.7

Будем называть кодом любой текст программы. В окно кода будем записывать весь код нашего проекта (а большие проекты могут использовать и несколько окон кода).

Если по какой-то причине окно кода вы потеряли из виду, то в главном меню окна VS выберите View ® Code.

Заготовка процедуры. Мы видим, что в окне кода уже что-то написано. Это написал сам VB. Ситуация, как в ресторане: мы еще ничего не заказали, а соль и перец уже на столе. Кроме этого, многое из написанного Бейсиком мы даже и не видим, да и знать нам этого невидимого пока не надо. Если вы человек опытный и вам любопытно увидеть этот невидимый код, щелкните по малюсенькому плюсику возле строки Windows Form Designer generated code, но не каждому затем удастся отыскать получившийся минусик и щелкнуть по нему, чтобы все вернулось к прежнему виду. Если вы все-таки попались и не знаете, как выбраться из ситуации, то или бросьте этот проект, или почитайте 6.1.3.

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

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

Слово Sub обозначает «процедура». Слово Click означает «щелкнуть мышкой». На смысле остальных слов в строке пока не останавливаемся. Эту строку можно вольно перевести как «Что делать, если щелкнуть мышкой по кнопке Button1». А более точно так: «Заголовок процедуры, в которой компьютеру пишется инструкция, что делать, если человек мышкой нажмет на кнопку Button1».

Ниже оставлено свободное место и там уже мигает курсор, приглашая нас вводить туда какие нам угодно операторы. Они-то и будут выполнены при щелчке по кнопке.

Еще ниже находится строка End Sub, что означает «конец процедуры». Все пространство между этими двумя строками, которое мы будем заполнять операторами, будем называть телом процедуры.

Таким образом, мы видим перед собой не что иное, как заготовку процедуры, которая должна выполниться при щелчке по кнопке Button1. Услужливый VB догадался создать эту заготовку, когда мы дважды щелкнули по кнопке Button1.



Вам нужно ввести с клавиатуры на свободное место между этими двумя строками наш оператор

HScrollBar1.Width = 100

Если у вас нет опыта ввода текста в компьютер, то прервитесь и изучите Приложение 2. Вы не имеете права допустить ни малейшей ошибки в строке. Даже лишний пробел может быть ошибкой.

Вводим оператор. Начнем потихоньку вводить. Введите слово HScrollBar1 и точку, причем VB простит вас, если вы где-нибудь вместо заглавной буквы введете строчную или наоборот. Как только вы введете точку, VB (чтобы вам не утомлять свои персты вводом слова Width) развернет перед вами список всех уместных после точки слов. Вам останется только сделать двойной щелчок на нужном слове (Рис. 1.8) или выделить его и нажать на клавиатуре клавишу Tab.



Рис. 1.8

Если вам не хочется прокручивать этот список в поисках нужного слова, вы можете просто начать вводить это слово с клавиатуры сразу после точки, компьютер тогда сам прокрутит список и нужное слово найдет и выделит. Не ленитесь после этого все же нажать клавишу Tab, пусть даже слово и совсем почти вами дописано, потому что это обережет вас от возможных грамматических ошибок.

Но вот ввод оператора закончен. Уберите теперь текстовый курсор из строки, которую вводили. VB при этом проверит грамматическую правильность строки и немного подправит ее внешний вид, исходя из своих представлений об изяществе. Если он обнаружит ошибки, то ошибочные части строки подчеркнет. Если вы увидели, в чем ошибка, исправьте ее. Если не увидели, то читайте 1.3.8.

Теперь окно кода должно иметь такой вид:

Public Class Form1

    Inherits System.Windows.Forms.Form

Windows Form Designer generated code

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        HScrollBar1.Width = 100

    End Sub

End Class

Перед вами готовая процедура. Проверьте, не ввели ли вы нечаянно что-нибудь выше, ниже или правее этих строк. Если ввели, то сотрите.

Запускаем проект. Пришла пора снова запускать проект. Предположим, что ошибок в коде нет. Щелкните кнопку Start. На экране опять появляется знакомый вид работающей формы. Щелкните по кнопке Button1 – горизонтальная полоса прокрутки изменила свою ширину (Рис. 1.9).



Рис. 1.9

Поздравляю! Ваш первый проект заработал. Щелкните еще раз. Ничего не изменилось. Естественно. Завершим выполнение проекта.

Если у вас при запуске получилось не то, что нужно, или же VB выдал какое-то сообщение, прочтите чуть ниже подраздел 1.3.8.

Быстрое переключение между окнами кода и конструктора. Над окном кода вы видите закладки
 (Рис. 1.7). Вы можете в любой момент щелкнуть по любой из них и увидеть соответственно стартовую страницу или окно конструктора форм, или снова окно кода.