Рефераты
 

Электронный справочник по изучению Visual Basic

p align="left">Чтобы удалить или инициализировать содержимое текстового окна, используется событие GotFocus. Оно вызывается, когда пользователь "входит" в текстовое окно.

Можно воспользоваться и другими свойствами текстового поля. Самым важным является свойство Text. Это свойство содержит отображаемый в поле текст.

Элементы управления, которые разрешают ввод символов, имеют свойство Text, а элементы, предназначенные только для отображения текста, - свойство Caption. Текстовое поле подобно маленькому редактору. Чтобы использовать его в таком качестве, достаточно установить свойство MultiLine. Это дает возможность вводить в поле несколько строк.

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

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

Private Sub Textl_Keypress(KeyAscii As Integer)

If KeyAscii =13 Then KeyAscii = 0

End Sub

При этом клавиша Enter просто игнорируется.

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

В текстовом поле, как это обычно делается в среде Windows, можно также выделять текст. Для этого Visual Basic предоставляет следующие три свойства текстового окна. Свойство SelStart определяет начальную позицию выделенного текста в символах. Свойство SelLength содержит количество выделенных символов. И, наконец, с помощью свойств SelText можно прочитать или изменить выделенный текст.

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

Переключатель (OptionButton)

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

Так же, как и для элемента управления CheckBox, для переключателей важно только одно событие - Click.

Важнейшим свойством переключателей является свойство Value. С его помощью можно определить состояние переключателя. Это свойство может принимать значения True и False.

Полосы прокрутки (ScrollBar)

Элемент управления ScrollBar - это полосы прокрутки окна. Некоторые элементы управления (например, TextBox, ListBox) используют такие полосы прокрутки, причем от разработчика не требуется написание программного кода для выполнения прокрутки. Однако полоса прокрутки как элемент управления Visual Basic хотя и предназначена для выполнения аналогичных функций, но не выполняет автоматически каких либо действий, т.е. ее поведение необходимо программировать. Существует два вида полос прокрутки: горизонтальная и вертикальная.

Полосы прокрутки имеют два интересных события: Change, которое возникает после изменения позиции бегунка или после программного изменения значения свойства Value, и Scroll, которое происходит во время прокрутки (когда пользователь захватил и передвигает бегунок).

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

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

Щелчок на одной из двух кнопок со стрелками на полосе изменяет значение свойства Value на величину, определяемую свойством SmallChange. Если пользователь щелкнет в области между бегунком и какой-либо из кнопок, то значение свойства Value полосы прокрутки и соответственно положение бегунка изменяется на величину, определяемую свойством LargeChange.

Рамка (Frame)

Рамка (Frame) - это один из элементов контейнеров. Его назначение - объединить в группу несколько элементов управления. Объекты, объединенные с помощью рамки, можно как единое целое перемещать, активизировать и деактивизировать, делать видимыми или невидимыми. Некоторые элементы сами нуждаются в контейнере - например, все переключатели в форме всегда объединяются в одну группу. Чтобы создать вторую группу опций, нужно требуемые переключатели объединить в элементе контейнере.

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

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

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

Окно с рисунком (PictureBox)

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

Как и события рамки, события элемента PictureBox обычно не обрабатываются, хотя при необходимости это можно сделать.

Положение PictureBox в форме задается свойством Align, которое определяет - будет ли PictureBox закрепляться у одного из краев формы или сохранит положение, заданное разработчиком. Если элемент управления закрепляется у одного из краев формы, то его размер (ширина или высота) всегда устанавливается в соответствии с размером формы.

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

Самое важное свойство PictureBox - Picture, которое содержит отображаемый графический объект. Это может быть растровое изображение (*.ВМР), пиктограмма (*.IСО), метафайл (*.WMF) или расширенный метафайл (*.EMF), также GIF и JPEG файлы.

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

Picturel.Picture = LoadPicture(”C:\WINDOWS \AUTOS.BMP”)

Сохранить изображение можно при помощи функции SavePicture:

SavePicture Picturel.Picture, ”BUILD.BMP”

Методы PictureBox позволяют нарисовать точку, линию и окружность, также вывести текст (метод Print).

Способность элемента PictureBox отображать рисунки различных форматов можно использовать для преобразования пиктограммы (*.IСО) в растровое изображение (*.ВМР). Для этого нужно загрузить пиктограмму и сохранить ее с расширением BMP. Однако растровое изображение преобразовать в пиктограмму нельзя.

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

Помимо встроенных элементов управления, включенных непосредственно в языковой пакет VBA для MS Office 2002, в нем имеется возможность применения дополнительных компонентов, реализованных на основе механизма ActiveX. В Microsoft Office 2002 Developer Edition (ODE) входят 13 таких элементов управления ActiveX (они имеются также и в VB 6.0 Professional). Назовем их:

- Slider, RichTextBox и CommonDialog предназначены для добавления к приложениям Office полезных элементов пользовательского интерфейса - соответственно ползунка, текстового поля, позволяющего вводить текст с разметкой, и стандартного набора диалоговых окон.

- ProgressBar, StatusBar, ToolBar, TabStrip и UpDown предоставляют возможность использования элементов пользовательского интерфейса Windows XP: индикатора продвижения, строки состояния, панели инструментов, вкладки и пары стрелок.

- Winsock и InternetTransfer обеспечивают обмен данными по каналам Internet.

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

Установка элемента управления ActiveX

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

1. Если файл, содержащий нужный элемент управления, отсутствует в вашей папке System (Windows XP) или System32 (Windows NT), скопировать его туда с компакт-диска ODE.

2. В меню Insert ("Вставка") редактора Visual Basic выбрать команду UserForm.

3. В меню Tools ("Сервис") выберите команду References ("Ссылки") и в открывшемся одноименном окне нажать кнопку Browse ("Обзор").

4. В диалоговом окне Add Reference ("Добавление ссылки") выделить файл с нужным элементом управления и нажать кнопку Open ("Открыть").

5. Вернувшись в окно References ("Ссылки"), нажать кнопку OK.

Добавление элемента управления к пользовательской форме

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

1. В меню Insert ("Вставка") редактора Visual Basic выбрать команду UserForm.

2. В меню Tools ("Сервис") выбрать команду Additional Controls ("Дополнительные элементы").

3. В списке Available Controls ("Доступные элементы") отметить нужный элемент управления ActiveX, нажать кнопку OK, и этот элемент появится на панели элементов.

4. Перетащить элемент управления с панели элементов на пользовательскую форму.

Основные элементы управления:

- CommonDialog

- ImageList

- InternetTransfer

- ListView

- ProgressBar

- RichTextBox

- Slider

- StatusBar

- TabStrip

- ToolBar

- TreeView

- UpDown

- Winsock

5.3.3. Описание элементов управления ActiveX

Рассмотрим основные элементы управления, используемые в программе:

ImageList

Элемент управления ImageList служит для хранения набора изображений, используемого каким-либо другим элементом управления, - например, ListView, TreeView или ToolBar. Кроме того, ImageList можно применять с любыми элементами управления, имеющими свойство Picture, значением которого является объект Picture ("Рисунок"), такими как Image или CommandButton.

Использование ImageList экономит время, затрачиваемое на разработку. Вместо того чтобы писать программу, которая загружает изображения (с помощью функции LoadPicture), вы один раз заполняете форму для элемента ImageList, при желании присваиваете значения ключам, а затем пишете код, который задает изображения по названию (свойство Key) или по номеру (свойство Index).

Изображения должны представлять собой файлы формата .bmp или .ico и храниться в коллекции объектов ListImage. Для объектов ListImage определены свойства Key, Index и Count, а также методы Add, Remove и Clear, аналогичные соответствующим свойствам и методам обычных списков. ODE предоставляет возможность добавлять и удалять изображения, как во время разработки, так и во время выполнения приложения.

Некоторые варианты использования ImageList

- Хранение изображений, символизирующих открытую и закрытую папку, а также документы различных типов. Можно динамически назначать такие изображения объекту Node элемента управления TreeView, чтобы отображать различные состояния каждого узла по мере того, как он разворачивается или сворачивается, и указывать, что представляет собой узел - документ или папку.

- Хранение изображений, символизирующих типовые операции, такие как открытие, сохранение и печать файлов. Их можно назначить кнопкам (объектам Button) элемента управления ToolBar, используемого в программе.

- Хранение изображений, используемых при перетаскивании, например значков DragIcons и MousePointer.

Пример использования ImageList

Добавить к пользовательской форме элемент управления Microsoft ImageList Control, version 5.0. После этого задать изображения.

1. Поместить на пользовательскую форму элемент управления Image ("Рисунок").

2. В окне свойств элемента Image для свойства Name установить значение imgTarget, для свойства PictureSizeMode - значение frmPictureSizeModeZoom, для свойства Caption -- значение ImageList. (Если этого окна нет на экране, нажмите <F4>.)

3. В окне свойств элемента ImageList установить для свойства Name значение imlODE.

4. В окне свойств ImageList выделить пункт (Custom) и нажать кнопку (...); в появившемся окне Properties ("Свойства") выбрать закладку Images ("Рисунки").

5. Нажать кнопку Insert Picture ("Вставить рисунок").

6. В поле открытия рисунка выделить нужный файл формата .bmp или .ico и нажать кнопку Open ("Открыть"). Источником изображений может служить, например, каталог Csample на компакт-диске ODE (\Msds\Odesmpl\Ode\Msdnoc2\Csample).

7. Назначить изображению уникальный ключ, введя его в текстовом поле Key. Можно также назначить ему метку (не обязательно уникальную); она вводится в поле Tag.

8. Нажать кнопку OK.

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

10. В окне кода ввести следующий текст:

Option Explicit

Private Sub UserForm_Click()

Set imgTarget.Picture = imlODE.ListImages(1).Picture

End Sub

11. Этот код связывает элемент управления Image с первым изображением, хранящимся в элементе управления ImageList.

12. Запустить пример на выполнение

RichTextBox

Элемент управления RichTextBox, как и стандартный TextBox, предназначен для ввода и редактирования текстов, однако обладает значительно более широкими возможностями. Он позволяет управлять начертанием (полужирный шрифт, курсив) и цветом символов, применять эффекты (такие, как верхние и нижние индексы), форматировать абзац (задавать величину отступов, межстрочные интервалами и т. д.). В RichTextBox можно как задать формат вновь вводимого текста, так и изменить формат уже введенного, предварительно выделив его. Кроме того, обеспечивается работа с текстами большого размера (в TextBox длина текста ограничена 64 знаками).

Важнейшие возможности RichTextBox

- Открытие и сохранение текстовых файлов в форматах RTF и ASCII. Соответствующие функции обеспечиваются методами LoadFile и SaveFile; кроме того, можно применять обычные операторы VB, предназначенные для ввода-вывода файлов, совместно со свойствами SelRTF и TextRTF.

- Загрузка в элемент управления форматированных текстов путем перетаскивания (можно перетащить файл или выделенный фрагмент файла, открытого в другой программе).

- Печать текстов и выделенных фрагментов (метод SelPrint).

- Внедрение OLE-объектов с помощью метода Add коллекции OLEObject. Поддерживается перетаскивание в RichTextBox любых внедренных объектов (включая таблицы Excel и документы Word) как во время разработки, так и во время выполнения программы.

- Легкая адаптация приложений, в которых используется стандартный элемент управления TextBox: в RichTextBox поддерживаются почти все его свойства, события и методы.

Пример использования RichTextBox

Добавьте к пользовательской форме элемент управления Microsoft RichText Control, version 5.0, после чего проделайте следующее.

1. Добавить к той же форме элемент управления ComboBox ("Поле со списком").

2. Для свойства Name элемента RichTextBox установить значение rtfODE, а для свойства Name элемента ComboBox -- cmbSetColor.

3. Для свойства Caption пользовательской формы установить значение "Элемент управления RichTextBox".

4. В окне кода ввести следующий текст:

Option Explicit

Private Sub cmbSetColor_Click()

With rtfODE

Select Case cmbSetColor.ListIndex

Case 0

.SelColor = vbBlack

Case 1

.SelColor = vbBlue

Case 2

.SelColor = vbRed

End Select

End With

End Sub

Private Sub UserForm_Initialize()

With cmbSetColor

.AddItem "Черный"

.AddItem "Синий"

.AddItem "Красный"

.ListIndex = 1

End With

End Sub

5. Запустить пример на выполнение и ввести в RichTextBox какой-нибудь текст. Выделить фрагмент текста и посмотреть, как будет меняться его цвет в зависимости от выбранного в ComboBox значения.

TreeView

Элемент управления TreeView предназначен для представления в виде дерева иерархических структур данных - таких как, например, указатель к документу или множество файлов и папок на диске. Дерево состоит из узлов - объектов Node.

На экране узлы представляются текстом, изображением или комбинацией того и другого в зависимости от свойства Style объекта TreeView (всего предусмотрено восемь вариантов), а связи между узлами - линиями. Знак + указывает на наличие у узла свернутого поддерева, которое можно развернуть и сделать видимым, знак - на возможность свернуть развернутое поддерево.

Изображения для узлов дерева хранятся в элементе управления ImageList. В каждый момент TreeView связан только с одним набором изображений ImageList, поэтому все изображения в дереве (если стиль предусматривает вывод графики) имеют один и тот же размер.

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

- <Стрелка вниз/вверх> - циклический переход к следующему/предыдущему видимому узлу (порядок узлов - слева направо и сверху вниз; за последним узлом следует первый).

- <Стрелка вправо>: если текущий узел имеет дочерние и не развернут, он разворачивается, в противном случае происходит циклический переход к следующему видимому узлу.

- <Стрелка влево>: если текущий узел имеет дочерние и развернут, он сворачивается, в противном случае происходит циклический переход к предыдущему видимому узлу.

- <Буква или цифра>: переход к следующему узлу, название которого начинается с этой буквы (цифры). Не видимые в данный момент узлы разворачиваются.

Для управления деревом из программы используются свойства и методы объектов Node. Перемещение от одного узла к другому обеспечивают свойства Root (корневой узел), Parent (родительский узел), Child (дочерний узел), FirstSibling, Next, Previous и LastSibling (соответственно первый, следующий, предыдущий и последний в группе узлов, дочерних для одного и того же родительского). Предусмотрены методы для добавления и удаления узлов, свертывания и развертывания поддеревьев и т. д.

Пример использования TreeView

Для построения этого примера нам понадобится база данных Northwind, входящая в состав Office 97.

Добавив к пользовательской форме элемент управления Microsoft TreeView Control, version 5.0, выполните следующие шаги:

1. Чтобы обеспечить работу с базой данных Northwind, установить связь с объектной библиотекой DAO 3.5: выбрать в меню Tools ("Сервис") команду References ("Ссылки") и в появившемся окне отметить Microsoft DAO 3.5 Object Library.

2. Для свойства Name элемента TreeView установить значение tvwODE.

3. Для свойства Caption пользовательской формы установить значение "Элемент управления TreeView".

4. В окне кода ввести следующий текст:

Option Explicit

Public mdbNWind As Database

Public nodODE As Node

Public rsProducts As Recordset

Private Sub UserForm_Initialize()

' Открытие базы данных Northwind

Set mdbNWind = DBEngine.OpenDatabase _

("c:\program files\devstudio\vb\nwind.mdb")

' Добавление объекта Node

Set nodODE = tvwODE.Nodes.Add(, , "r", "Products")

' Открытие набора записей, содержащего одно поле

' из таблицы Products

Set rsProducts = mdbNWind.OpenRecordset _

("SELECT Products.ProductName FROM Products;")

Dim intCounter As Integer

' Добавление узлов для вывода названий продуктов

For intCounter = 1 To 4

' Добавление объекта Node

Set nodODE = tvwODE.Nodes.Add(1, tvwChild)

' Установка свойства Text

nodODE.Text = rsProducts!PRODUCTNAME

' Переход к следующей записи

rsProducts.MoveNext

Next intCounter

End Sub

5. Запустить пример на выполнение. Дважды щелкнуть по узлу Products в дереве и вывести узлы с названиями продуктов.

Редактор меню Menu Editor

Для проектирования меню всех видов используется редактор меню Menu Editor (Редактор меню) среды проектирования IDE . Редактор меню вызывается одним из следующих способов:

- командой Menu Editor (Редактор меню) меню Tools (Инструменты);

- нажатием кнопки Menu Editor на стандартной панели инструментов;

- нажатием комбинации клавиш <Ctrl>+<E>.

Редактор создает меню для активного в данный момент окна, то есть, если активно MDI-OKHO, проектируется меню для него, если активна дочерняя форма, проектируется меню для дочерней формы. На рис. 5 показан редактор меню родительского окна, созданного автоматически мастером приложения Application Wizard.

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

- поле Caption (Заголовок) -- наименование пункта меню, то есть текст, появляющийся в меню;

- поле Name (Имя) -- имя меню. Используется для идентификации объекта при написании программных кодов;

- раскрывающийся список Shortcut (Оперативная клавиша) -- назначает комбинацию клавиш для быстрого вызова команды меню;

- поле HelpContextID (Идентификатор справки) -- ссылка на тему в справочной системе;

- флажок Enabled (Доступно) -- доступ к пункту меню;

- флажок Visible (Видимость) -- определяет, будет ли виден на экране элемент меню;

- флажок WindowList (Список окон) -- определяет наличие списка открытых окон.

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

- кнопки с направленными вправо и влево стрелками перемещают пункты или команды меню в иерархии меню;

- кнопки с направленными вверх и вниз стрелками перемещают пункты или команды меню по структуре меню;

- Next (Следующий) -- перемещает указатель к следующему пункту меню. Если указатель находится на последнем пункте меню, то создается новый пункт меню или новая команда меню такого же уровня иерархии;

- Insert (Вставить) -- добавляет пункт меню или команду в пункт меню;

- Delete (Удалить) -- удаляет пункт меню или команду из пункта меню.

Для добавления пункта меню выполните следующие шаги:

1. Выбрать место в имеющейся структуре меню.

2. Добавить пункт меню, нажав кнопку Insert (Вставить).

3. В поле Caption (Заголовок) ввести название пункта меню, которое будет отображаться в строке меню при запуске приложения на выполнение.

4. В поле Name (Имя) ввести имя пункта меню, по которому он идентифицируется в программном коде.

Раздел 6. Проектная часть

6.1. DFD - диаграмма

Спецификации данных

Спецификация «Мастер»

@Ввод Сигнал

@Вывод Загрузка

@Спец процесс

ЕСЛИ «Мастер»=TRUE ТО

ВЫВОД Запуск Мастера

@КОНЕЦ

Спецификация «Справка»

@Ввод Сигнал

@Вывод Загрузка

@Спец процесс

ЕСЛИ «Справка»=TRUE ТО

ВЫВОД Открытие Справки

@КОНЕЦ

Спецификация «Открыть»

@Ввод Сигнал

@Вывод Загрузка

@Спец процесс

ЕСЛИ «Открыть»=TRUE ТО

ВЫВОД Запуск диалогового окна Открыть

@КОНЕЦ

Спецификация «Сохранить»

@Ввод Сигнал

@Вывод Загрузка

@Спец процесс

ЕСЛИ «Сохранить»=TRUE ТО

ВЫВОД Запуск диалогового окна Сохранить

@КОНЕЦ

Спецификация «Печать»

@Ввод Сигнал

@Вывод Загрузка

@Спец процесс

ЕСЛИ «Печать»=TRUE ТО

ВЫВОД Запуск Word

@КОНЕЦ

6.2. Руководство пользователю

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

В программном продукте «Электронный справочник по работе с программой Visual Basic», написанной на Microsoft Visual Basic 6.0, были реализованы следующие функции и процедуры.

При запуске программы появится стартовое окно, в котором будет отображено её название, а также - появится окно Введите пароль, в котором нужно заполнить поля и нажать Ок, после чего загрузится сама программа «Электронный справочник по работе с программой Visual Basic». На главной форме программы располагаются все основные элементы управления.

Главное меню программы:

– Меню «Файл» содержит кнопки «Открыть» (запускает стандартное диалоговое окно Windows «Open». Нажав «ОК», выбранный документ будет открыт в текстовом поле главной формы), «Сохранить» (Запускает стандартное диалоговое окно Windows «Save»), «Печать» и «Выход»;

– Меню «Поиск» (запускает диалоговое окно «Поиск», в появившемся поле вводится название искомого документа);

– Меню «Закладки» содержит кнопки «Новая» (Автоматически сохраняется название просматриваемой темы) и «Открыть» (Из предложенного списка тем можно открыть любую из них);

– Меню «Пользователю» содержит кнопку «Редактор паролей»;

– Меню «Справка» содержит кнопку «О программе».

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

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

Раздел 7. Расчет экономической эффективности дипломного проекта

7.1. Расчет стоимости разработки

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

7.2. Расчёт статьи, материалы, покупные изделия, полуфабрикаты

На эту статью относится стоимость материалов, покупных изделий, полуфабрикатов и других материальных ценностей, расходуемых непосредственно в процессе выполнения НИР по теме. Цена материальных ресурсов определяется по соответствующим ценникам. В стоимость материальных затрат включаются транспортные расходы (10% от прейскурантной цены).

Таблица 1

Расчёт статьи, материалы, покупные изделия, полуфабрикаты

Наименование товара

Единицы измерения

Количество

Цена за единицу (руб.)

Суммарные

затраты (руб.)

Дискеты

Пачка

2

170

340

Диски (CD-RW)

Пачка

1

500

500

Бумага для принтера

Пачка

1

130

130

Итого (затраты) 970

С учётом транспортных расходов: Транспортные расходы 10%

10%:100=0,1

970+0.1*970=1064 (руб.)

7.3. Расчёт основной заработной платы

К этой статье относятся основная заработная плата работников, а также премии, входящие в фонд заработной платы. Расчёт основной заработной платы выполняется на основе трудоёмкости выполнения каждого этапа в человеко-днях и величины месячного должностного оклада исполнителя.
Среднее количество рабочих дней в месяце равно 20-ти. Следовательно, дневная заработная плата определяется делением размера оклада на количество рабочих дней в месяце. Трудоемкость определяется по готовым расчетам или следующим образом: по таблицам 1 и 2 находится количество дней, которое необходимо потратить на каждый из 5-ти этапов разработки. Например, на первом этапе разработки потребуется количество дней, равное сумме продолжительностей работ, коды которых: 0-1, 0-3, 1-2, 2-5, 3-4. Трудоемкость каждого этапа определяется для группы специалистов, отвечающих за этот этап разработки. Произведение трудоемкости на сумму дневной заработной платы определяет затраты по зарплате для каждого работника на все время разработки.

Таблица 2

Расчет основной заработной платы по теме

Наименование работ

Исполнитель

Оклад (руб.)

Дневная зарплата (руб.)

Трудоем-ть

(в человеко-днях)

Затраты по

зарплате (руб.)

1.Подготовительный этап

Ведущий инженер

1300

15

40

600

Инженер

1150

11

20

220

2.Разработка алгоритмов

и программ

Ведущий инженер

1400

20

30

600

Программист

1200

15

20

300

Инженер

1000

12

20

240

3.Оформление документации и

подготовка к сдаче

Инженер

1000

15

25

375

Итого: 2335

7.4. Расчет дополнительной заработной платы

На эту статью относятся выплаты, предусмотренные законодательством о труде за неотработанное по уважительным причинам время: оплата очередных и дополнительных отпусков и т.п. (принимается в размере 20% от суммы основной заработной платы):

20%:100=0,2

2335 * 0,2 = 467 руб.

7.5. Расчёт накладных расходов

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

Накладные расходы принимаются в размере 250% от суммы основной заработной платы.

250%:100=2,5

2335*2.5 = 5837,5руб.

7.6. Расчёт договорной цены разработки

Калькуляция стоимости разработки приведена в таблице 3.

Полная себестоимость разработки определяется суммированием пп.1-4 таблицы 3.

Полная себестоимость:

1064 + 2335 + 467 + 5837,5 = 9703,5

Оптовая цена определяется следующим образом:

Цопт = себестоимость + прибыль.

Прибыль составляет 30% от себестоимости:

30%:100=0,3

Прибыль =9703,5 *0.3 =2911,05 руб.

Цопт = 9703,5+2911,05=12614,55 руб.

При расчете договорной цены в общую стоимость включается НДС 18%

18% : 100 = 0,18

12614,55 * 0,18 = 2270,619

12614,55 + 2270,619 = 14885,169

Таблица 3

Калькуляция стоимости разработки

№ п/п

Наименование статьи расхода

Затраты (в руб.)

1.

Материалы, покупные изделия, полуфабрикаты

970

2.

Основная заработная плата

2335

3.

Дополнительная заработная плата

467

4.

Накладные расходы

5837,5

5.

Полная себестоимость

9703,5

6.

Прибыль

2911,05

7.

Оптовая цена

12614,55

8.

НДС 18%

2270,619

9.

Договорная цена

14885,169

Заключение

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

Договорная цена на ПП, сформированная на основе нормативной себестоимости производства ПП и прибыли, составляет 14885,169 руб.

Экономический эффект от использования данного ПП за расчётный период (5 лет) составит 74425,845 руб., при этом эффективность разработки - примерно 0.68, т. е. разработчик покроет свои расходы на создание автоматизированной системы ориентировочно за год и затем начнёт получать прибыль.

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

Приложение 1

Исходный код программы «Электронный справочник по работе с программой

Visual Basic»

I. m_Tbook.frm

Основная форма учебника

Const SuperRootName = "NULL?+1234r55tegwegdsfasfgsdg"

Const SubjectFile = "Subject.htm"

Const ExampleFile = "Example.rtf"

Const TestFile = "Test\index.htm"

Const iThemeListWidth = 3000

Dim NavPath As String

Dim NavBKPath As String

Dim bFullMode As Boolean

Function CreateTheme(pName As String, rName As String)

Dim tmpNode As Node

Set tmpNode = m_ThemeList.Nodes.Add(, tvwFirst, rName, pName, 1, 3)

End Function

Function CreateSection(pName As String, rName As String)

Dim tmpNode As Node

Set tmpNode = m_ThemeList.Nodes.Add(rName, tvwChild, , pName, 2)

End Function

Private Sub Themes_Loading()

Dim sFile As String

Dim i As Integer

sFile = Dir(App.Path & "\Themes\", vbDirectory)

Do Until sFile = ""

If sFile <> "." And sFile <> ".." Then

CreateTheme sFile, "r" & CStr(i)

CreateSection SuperRootName, "r" & CStr(i)

End If

sFile = Dir

i = i + 1

Loop

End Sub

Private Sub Form_Load()

Load m_Password

m_Password.Show 1

Themes_Loading

bFullMode = False

m_CmdSwitch.Caption = "Пример"

m_CmdSwitch.Enabled = False

m_ThemeView.Navigate2 App.Path & "\StartPage.htm", navNoHistory

End Sub

Function CtrlResize(iTheme As Integer)

On Error Resume Next

If m_TBook.Width <= iThemeListWidth + 110 Or m_TBook.Height <= 800 Then Exit Function

If m_TBook.WindowState = vbMinimized Then Exit Function

m_CmdSwitch.Left = iTheme + 10

m_CmdSwitch.Top = m_TBook.Height - 1000

m_CmdSwitch.Height = 400

m_CmdSwitch.Width = 1500

m_CmdTest.Left = m_CmdSwitch.Left + m_CmdSwitch.Width

m_CmdTest.Top = m_TBook.Height - 1000

m_CmdTest.Height = 400

m_CmdTest.Width = 1500

m_CmdCopyClip.Left = m_CmdTest.Left + m_CmdTest.Width

m_CmdCopyClip.Top = m_TBook.Height - 1000

m_CmdCopyClip.Height = 400

m_CmdCopyClip.Width = 1500

m_Back.Left = m_CmdCopyClip.Left + m_CmdCopyClip.Width

m_Back.Top = m_TBook.Height - 1000

m_Back.Height = 400

m_Back.Width = 1000

m_Home.Left = m_Back.Left + m_Back.Width

m_Home.Top = m_TBook.Height - 1000

m_Home.Height = 400

m_Home.Width = 1000

m_Forward.Left = m_Home.Left + m_Home.Width

m_Forward.Top = m_TBook.Height - 1000

m_Forward.Height = 400

m_Forward.Width = 1000

m_ThemeView.Left = iTheme + 100

m_ThemeView.Top = 0

m_ThemeView.Width = m_TBook.Width - (iTheme + 200)

m_ThemeView.Height = m_TBook.Height - 1000

m_BtnFullMode.Width = 100

m_BtnFullMode.Height = 1000

m_BtnFullMode.Left = iTheme

m_BtnFullMode.Top = m_TBook.Height / 2 - m_BtnFullMode.Height / 2

m_ExampleView.Left = iTheme + 100

m_ExampleView.Top = 0

m_ExampleView.Width = m_TBook.Width - (iTheme + 200)

m_ExampleView.Height = m_TBook.Height - 1000

m_ThemeList.Left = 0

m_ThemeList.Top = 0

m_ThemeList.Width = iTheme

m_ThemeList.Height = m_TBook.Height - 400

End Function

Private Sub Form_Resize()

If bFullMode Then

m_ThemeList.Visible = False

CtrlResize 0

Else

m_ThemeList.Visible = True

CtrlResize iThemeListWidth

End If

End Sub

Private Sub m_About_Click()

Load frmAbout

frmAbout.Show

End Sub

Private Sub m_NewBK_Click()

m_gBKPath = NavBKPath

Load m_FrmBookMark

m_FrmBookMark.Show 1

End Sub

Private Sub m_openBK_Click()

m_gBKPath = ""

Load m_FrmBookMark

m_FrmBookMark.Show 1

End Sub

Private Sub m_BtnFullMode_Click()

If bFullMode = True Then

bFullMode = False

Else

bFullMode = True

End If

Form_Resize

End Sub

Private Sub m_cmdCopyClip_Click()

Clipboard.SetText m_ExampleView.TextRTF

End Sub

Private Sub m_CmdSwitch_Click()

If m_CmdSwitch.Caption = "Тема" Then

m_CmdSwitch.Caption = "Пример"

m_ThemeView.Visible = True

m_ExampleView.Visible = False

m_CmdCopyClip.Visible = False

ElseIf m_CmdSwitch.Caption = "Пример" Then

m_CmdSwitch.Caption = "Тема"

m_ExampleView.Visible = True

m_ThemeView.Visible = False

m_CmdCopyClip.Visible = True

End If

End Sub

Private Sub m_CmdTest_Click()

If NavPath = "" Then Exit Sub

m_gTestPath = NavPath & "test.txt"

If Dir(m_gTestPath, vbNormal) <> "" Then

Load m_FrmTest

m_FrmTest.Show 1

End If

End Sub

Private Sub m_Back_Click()

On Error Resume Next

m_ThemeView.GoBack

End Sub

Private Sub m_Forward_Click()

On Error Resume Next

m_ThemeView.GoForward

End Sub

Private Sub m_Home_Click()

m_ThemeView.Navigate2 App.Path & "\StartPage.htm", navNoHistory

End Sub

Private Sub m_MenuPrint_Click()

On Error Resume Next

m_ThemeView.ExecWB OLECMDID_PRINT, OLECMDEXECOPT_DODEFAULT

End Sub

Private Sub m_MenuSave_Click()

m_ThemeView.ExecWB OLECMDID_SAVEAS, OLECMDEXECOPT_DODEFAULT

End Sub

Private Sub m_MenuFind_Click()

On Error Resume Next

' m_ThemeView.ExecWB OLECMDID_F, OLECMDEXECOPT_DODEFAULT

End Sub

Private Sub m_Quit_Click()

End

End Sub

Private Sub m_ThemeList_Expand(ByVal Node As MSComctlLib.Node)

Dim pNode As Node

Set pNode = Node.Child

If pNode.Text = SuperRootName Then

m_ThemeList.Nodes.Remove pNode.Index

Dim sFile As String

Dim i As Integer

sFile = Dir(App.Path & "\Themes\" & Node.Text & "\", vbDirectory)

Do Until sFile = ""

If sFile <> "." And sFile <> ".." Then

CreateSection sFile, Node.Key

End If

sFile = Dir

i = i + 1

Loop

End If

End Sub

Private Sub m_ThemeList_NodeClick(ByVal Node As MSComctlLib.Node)

If Node.Children Then Exit Sub

m_CmdSwitch.Enabled = True

NavPath = App.Path & "\Themes\" & Node.FullPath & "\"

NavBKPath = Node.FullPath

m_ThemeView.Navigate2 NavPath & SubjectFile, navNoHistory

If (Len(Dir(NavPath & ExampleFile))) <= 0 Then

m_ExampleView.Text = ""

Else

m_ExampleView.LoadFile NavPath & ExampleFile

End If

End Sub

II. mdl_Question.bas

Модуль для хранения глобальных переменных

Type Question

Question As String

Answer(2) As String

True As Integer

End Type

Public m_gTestPath As String

Public m_gBKPath As String

Public m_gBKNewName As String

III. m_FrmBookMark.frm

Форма управления закладками

Private Sub Form_Load()

On Error GoTo EndLoadForm

Dim pLine As String

m_bFindName = False

Open App.Path & "\bookmark.txt" For Input As #1

Do Until EOF(1)

Line Input #1, pLine

m_BKList.AddItem pLine

If m_bFindName = False Then

If pLine = m_gBKPath Then m_bFindName = True

End If

Loop

If m_bFindName = False And m_gBKPath <> "" Then

m_BKList.AddItem m_gBKPath

End If

Close #1

EndLoadForm:

End Sub

Private Sub Form_Unload(Cancel As Integer)

On Error GoTo EndUnLoadForm

If m_gBKPath = "" Then

GoTo EndUnLoadForm

End If

Open App.Path & "\bookmark.txt" For Output As #1

For i = 0 To m_BKList.ListCount - 1

m_BKList.ListIndex = 0

Print #1, m_BKList.Text

m_BKList.RemoveItem m_BKList.ListIndex

Next

Close #1

EndUnLoadForm:

End Sub

Private Sub m_DeleteBK_Click()

If m_BKList.ListIndex <> -1 Then m_BKList.RemoveItem m_BKList.ListIndex

End Sub

IV. m_FrmTest.frm

Форма управления тестом

Dim qcount As Integer ' общее количество вопросов

Dim r As Integer ' количество правильный

' ответов

Dim curq As Integer

Dim rate(1 To 4) As Integer ' критерии оценок

Dim comment(1 To 4) As String ' комментарии

Dim f As String ' буфер чтения

Dim qcycle() As Integer

Dim quest() As Question

Sub LoadQuestions()

Dim fquest As String

Dim ftrue As Integer

Dim fanswer() As String

Do While NextQuestion(fquest, ftrue, fanswer)

If qcount = 1 Then

ReDim quest(0)

Else

ReDim Preserve quest(qcount - 1)

End If

quest(qcount - 1).Question = fquest

quest(qcount - 1).True = ftrue

For i = 0 To 2

quest(qcount - 1).Answer(i) = fanswer(i)

Next

Loop

End Sub

Function NextQuestion(ByRef fquest As String, ByRef ftrue As Integer, ByRef fanswer() As String) As Boolean

If Not EOF(1) Then ' файл не закончился

' считывание и ввод вопроса

Line Input #1, fquest

' считывание вариантов ответа

ReDim fanswer(2)

For i = 0 To 2

Line Input #1, f

fanswer(i) = f

Line Input #1, f

If f = "1" Then ftrue = i

Next

' верный ли ответ: 1 - верный 0 - нет

' 0 или 1 записывается в свойство Tag соответствующего компонента

' Option

' увеличение счетчика вопросов

qcount = qcount + 1

NextQuestion = True

Else

NextQuestion = False

End If

End Function

Private Sub ShowQuestion(ByVal num As Integer)

If num >= qcount - 1 Then m_CmdNext.Caption = "Завершить"

num = qcycle(num)

m_CmdNext.Enabled = False

m_Question.Caption = quest(num).Question

m_Var1.Caption = quest(num).Answer(0)

m_Var1.Tag = 0

If quest(num).True = 0 Then m_Var1.Tag = 1

m_Var2.Caption = quest(num).Answer(1)

m_Var2.Tag = 0

If quest(num).True = 1 Then m_Var2.Tag = 1

m_Var3.Caption = quest(num).Answer(2)

m_Var3.Tag = 0

If quest(num).True = 2 Then m_Var3.Tag = 1

m_Var1.Value = False

m_Var2.Value = False

m_Var3.Value = False

End Sub

Private Sub Form_Load()

m_Question.Font.Size = 10

FileName = m_gTestPath

On Error GoTo EndTest

Open FileName For Input As #1 ' открытие файла

' для чтения

Line Input #1, f ' чтение названия теста

m_FrmTest.Caption = f

' комментарии и критерии оценок

For i = 1 To 4 Step 1

Line Input #1, f

comment(i) = f

Line Input #1, f

rate(i) = f

Next

' обнуление счетчиков

q = 0

r = 0

LoadQuestions

Close #1

ReDim qcycle(qcount - 1)

Dim qvars() As Boolean

ReDim qvars(qcount - 1)

For i = 0 To qcount - 1

qvars(i) = True

Next

For i = 0 To qcount - 1

Dim rn As Integer

Dim num As Integer

Randomize

rn = Rnd(qcount - 1) * (qcount - 1) + 1

Do While rn > 0

num = num + 1

If num > qcount - 1 Then num = 0

Do Until qvars(num)

num = num + 1

If num > qcount - 1 Then num = 0

Loop

rn = rn - 1

Loop

qcycle(i) = num

qvars(num) = False

Next

If qcount = 0 Then GoTo EndTest

ShowQuestion (0)

EndTest:

End Sub

Private Sub m_CmdEndTest_Click()

Erase quest

curq = 0

qcount = 0

r = 0

Unload m_FrmTest

End Sub

Private Sub m_CmdNext_Click()

If m_Var1.Value = True Then r = r + m_Var1.Tag

If m_Var2.Value = True Then r = r + m_Var2.Tag

If m_Var3.Value = True Then r = r + m_Var3.Tag

If m_CmdNext.Caption = "Завршить" Then

m_Var1.Visible = False

m_Var2.Visible = False

m_Var3.Visible = False

m_Question.Height = m_Question.Height * 2

m_Question.Caption = "Тестирование завершено." + Chr(13) + _

"Правильных ответов: " + Format$(r) + _

" из " + _

Format$(qcount) + "."

i = 1

While (r < rate(i)) And (i < 4)

i = i + 1

Wend

' ввод коментария

m_Question.Caption = m_Question.Caption + Chr(13) + comment(i)

m_CmdNext.Enabled = False

Else

curq = curq + 1

ShowQuestion curq

End If

End Sub

Private Sub m_Question_Click()

End Sub

Private Sub m_Var1_Click()

m_CmdNext.Enabled = True

End Sub

Private Sub m_Var2_Click()

m_CmdNext.Enabled = True

End Sub

Private Sub m_Var3_Click()

m_CmdNext.Enabled = True

End Sub

V. m_Password.frm

Форма для ввода пароля

Dim Entered As Boolean

Private Sub Command1_Click()

End

End Sub

Private Sub Command2_Click()

Dim sName As String

Dim sPass As String

Dim deName As String

Dim dePass As String

Dim Equal As Boolean

Open App.Path & "\Passwords" For Input As 1

Do Until EOF(1)

deName = ""

dePass = ""

Input #1, sName

Input #1, sPass

Dim sim As String

Dim sima As String

Dim simb As String

For i = 0 To Len(sName) - 1 Step 2

sima = Mid(sName, i + 1, 1)

simb = Mid(sName, i + 2, 1)

sim = Chr((Asc(sima) - 210) * 16 + (Asc(simb) - 210))

deName = deName & sim

Next

For i = 0 To Len(sPass) - 1 Step 2

sima = Mid(sPass, i + 1, 1)

simb = Mid(sPass, i + 2, 1)

sim = Chr((Asc(sima) - 210) * 16 + (Asc(simb) - 210))

dePass = dePass & sim

Next

If deName = txt_Name And dePass = txt_Password Then

Equal = True

End If

Loop

Close #1

If Not Equal Then

MsgBox "Неправильно введены" & vbCrLf & _

"имя пользователя" & vbCrLf & _

"и пароль", vbOKOnly

Else

Entered = True

Unload m_Password

End If

End Sub

Private Sub Form_Load()

Entered = False

End Sub

Private Sub Form_Unload(Cancel As Integer)

If Not Entered Then End

End Sub

Заключение

В ходе дипломного проектирования была разработана программа «Справочник по работе с программой Visual Basic». Эта программа предназначена для самостоятельной работы студентов при обучении программированию в среде Visual Basic.

На основании поставленной цели решались следующие задачи:

- провести анализ теоретического материала предлагаемого к компьютерной реализации;

- предоставить студентам, изучающим Visual Basic эффективное и легкодоступное средство обучения, которое включало бы в себя теоретический материал, вопросы и практические задания, и выполняло бы не только обучающую, но и контролирующую и оценивающую функции;

- предоставить учебному заведению полноценное программное обеспечение, которое сможет применяться при обучении Visual Basic-у и которым смогут пользоваться сотни студентов.

Для решения данных задач была проделана следующая работа:

- проведен анализ теоретического материала предлагаемого к изучению студентам и выбран материал для первоочередной реализации в электронном справочнике;

- проведен сравнительный анализ электронных справочников («VBHELP» - справочник по Visual Basic 5.0, «Vbfunction», «Справочник по WIN 32 API», «Справочник по функциям Windows API») с целью выявления системы, наиболее отвечающей требованиям, предъявляемым при разработке справочника;

- подобрана система тестовых вопросов для выявления уровня усвоения нового материала;

- разработана система подсказок, призванная облегчить обучение студентов;

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

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

Список использованных источников

1. Штайнер Г. Visual Basic .NET. -- M.: Лаборатория Базовых Знаний, 2002. -- 544 с.: ил. -- (Справочник).

2. Глушаков С.В. Программирование на Visual Basic 6.0 / СБ. Глушаков, С. А. Сурядный; Худож.-оформ. А.С. Юхтман. -- М.: ООО «Издатель-ство ACT»; Харьков: «Фолио», 2005. -- 497, [15] с.-- (Учебный курс).

3. Культин Н. Б. Visual Basic. Освой на примерах. -- СПб.: БХВ-Петербург, 2004. - 288 с.: ил.

4. Кен Гетц, Майк Гилберт Программирование на Visual Basic 6 и VBA. Руководство разработчика: Пер. с англ. -- К.: Издательская группа BHV, 2001. - 912 с., ил.

5. Аляев Ю. А., Козлов О. А. Алгоритмизация и языки программирования Pascal, C++, Visual Basic: Учебно-справочное пособие. -- М.: Финансы и ста-тистика, 2002. -- 320 с.: ил.

6. Методические рекомендации по проектированию обучающих программ / Институт психологии Министерства просвещения УССР; - Киев, 1986.

7. Технология сертификации программных средств учебного назначения (ПС УН) / Рос. центр информатизации образования (РОСЦИО) / Под редакцией А.И. Галкина, В.К. Мороз. - М., 1993.

8. Тодд Миллер, Дэвид Пауэл. Использование Delphi 3 / специальное издание. - М.-Киев, Диалектика, 1997.

9. Павловская Т. А. C/C++. Программирование на языке высокого уровня. - "Питер", 2005 г., 461 с.

10. Брайан Сайлер, Джефф Споттс. Использование Visual Basic 6.0. - Издательский Дом «Вильямс», 1999 г., 832 с.

11. http://www.vbstreets.ru/ - «VB улицы». Все о Visual Basic, VBScript, Active Server Page, ActiveX, ADO и SQL.

12. http://www.vbplanet.km.ru/ - Всё для программистов. Отличный сайт о Visual Basic. Много интересных материалов: исходники, ActiveX, статьи, форум.

13. http://www.vb.narod.ru - сайт со статьями по VB, имеется электронный учебник…

14. http://www.visualbasic.boom.ru - сайт очень полезный, особенно для программистов на Visual Basic.

15. http://www.vbmaster.fhost.ru - сайт посвященный программированию.

16. http://www.vbrussia.com - материалы по программированию

Страницы: 1, 2


© 2010 BANKS OF РЕФЕРАТ