Печать исходного текста программы
Вряд ли вам удастся запомнить все свойства различных форм и элементов. Чтобы узнать их значения, можно поочередно открыть каждую форму и щелкнуть на каждом элементе с открытым окном свойств. Впрочем, это займет немало времени. Нет ли более удобного способа для получения списка всех объектов, свойств и программного кода? Попробуйте воспользоваться командой File > Print. Диалоговое окно Print, открывающееся при выполнении этой программы, показано на рис. 9.18.
Рис. 9.18. Диалоговое окно Print
Диалоговое окно Print
Диалоговое окно Print содержит несколько параметров, разделенных на две основные группы: Range и Print What. Группа Range объединяет переключатели Selection, Current Module и Current Project, o которых рассказывается ниже.
Selection
Печатается только фрагмент кода, выделенный в окне программы.
Current Module
Печатается информация о форме, с которой вы в настоящий момент работаете в окне конструктора. Печатаемая информация зависит от состояния флажков в группе Print What (см. далее). В проекты могут входить и другие модули, помимо модулей форм; если такой модуль является текущим, на печать выводится его код.
Current Project
Переключатель выводит информацию о всех модулях форм, входящих в проект. К ней добавляется информация о всех остальных модулях (стандартных и модулях классов). И снова состав печатаемых данных зависит от состояния флажков в группе Print What.
Группа Print What диалогового окна Print содержит флажки Form Image, Form As Text и Code, описанные в ближайших разделах.
Form Image
На печать выводится растровое изображение формы на момент выполнения программы. С помощью этого флажка можно получить серию экранных снимков, по которым потенциальные пользователи оценят вашу программу. Кроме того, этот флажок (в сочетании со следующим - Form As Text) иногда используется для описания пользовательского интерфейса приложения, хотя для создания печатной документации этот метод не слишком удобен - каждая форма выводится на отдельной странице и вдобавок полученное изображение нелегко вставить в документ. Все иллюстрации к этой книге были получены другим способом.
ПОДСКАЗКАЕсли вам захочется узнать, как это делается (например, вы захотите вставить изображение формы в справочный файл или руководство пользователя), попробуйте скопировать окно в буфер обмена Windows. Для этого следует нажать Alt одновременно с клавишей Print Screen. Изображение, хранящееся в буфере, можно вставить в документ или сохранить в формате .BMP. Практически во всех текстовых редакторах или издательских программах, используемых при подготовке руководств, можно вставлять файлы в формате .PCX или .BMP. Чтобы поместить копию экрана в справочный файл, достаточно вставить ссылку на растровое изображение в исходный файл в формате .RTF
Code
Наконец, мы добрались и до традиционных листингов программ. Флажок Code печатает все процедуры событий формы и ее элементов. Если в группе PrintRan установлен переключатель Project, будут напечатаны все процедуры событий во форм и элементов вашего приложения. Флажок Code чрезвычайно полез( отладке или документировании приложений. Код упорядочивается по В листинге каждой формы процедуры упорядочиваются в алфавитном поря, свойству Name объекта. Процедуры событий форм всегда начинаются с префикса Form_, независимо от текущего значения свойства Name формы. Следовательно процедуры формы вряд ли будут выведены раньше процедур других элементов Например, процедура события cmdOK_Click будет стоять перед процедурой Form_Load. (предполагается, что на форме есть кнопка с именем cmdOK и в обоих процедурах был введен код). Если процедура события не содержит кода, пустой шаблон не выводится. Кроме процедур событий приложения Visual Basic нередко с-и другие процедуры и функции, например находящиеся в формах и стандарт модулях. Такие процедуры и функции тоже включаются в распечатку.
Form As Text
В листинг включаются свойства формы, а также свойства всех элементов, находя щихся на ней. Если вам потребуется воссоздать и отладить приложение, с. это по списку свойств будет гораздо проще, чем по простому изображению формы. Учтите, что листинг содержит не все свойства — иначе в сложном приложении он бы растянулся на сотню и более страниц. Выводятся лишь те свойства, для которых были изменены значения по умолчанию (обычно в их число входят Name и Caption); свойства, связанные с положением и размерами объекта (Left, Top, Height и Width); свойства, определяющие единицы измерений и систему координат (свойства Scale...); свойство TabIndex, если оно используется; и свойство LinkTopic для форм. На LinkTopic можно пока не обращать внимания. Листинг также содержит элементы меню, для которых указываются значения свойства Shortcut и расширенного свойства Caption.
Комментирование кода
Привыкайте комментировать свои программы. Комментарием называется текстовая строка, начинающаяся с апострофа. Он не содержит программного кода. Комментируйте наиболее сложные фрагменты своих программ, а также те места, к которым необходимо привлечь внимание читателя. Комментарии предназначены исключительно для программиста, Visual Basic игнорирует их во время выполнения приложения. Они также выводятся на печать. Иногда кажется, что комментарии излишни — вам программа кажется очевидной! Но разберутся ли в ней ваши коллеги или даже вы сами спустя несколько недель? Несколько комментариев избавят вас от многих часов утомительного труда. Особенно важно вставлять комментарии в начале и в середине самых сложных участков кода.
Чтобы включить в процедуру комментарий, введите в начале строки символ «апостроф» ('). Ниже приведен пример комментария:
'Строка комментария
Комментарии можно включать и в конец строки, в этом случае они также начинаются с апострофа:
cmdOK.Enabled = True ' Снимаем блокировку с кнопки OK
Дополнительная информация о комментариях приведена в уроке 12, «Отладка приложений».
Просмотр результатов
Списки свойств и листинги программ можно включать и в другие документы. Ниже приведен список свойств вместе с текстом программы из урока 5. При этом текст листинга не обязательно набирать заново — можно создать текстовый файл и вставить его в нужный документ. В этом примере я установил режим печати в файл и выбрал драйвер принтера Generic/Text, входящий в состав Windows.
ПОДСКАЗКАЧтобы создать текстовый файл со свойствами и исходными текстами программ проекта, сначала установите драйвер принтера Generic/Text, поставляемый вместе с Windows 95 или NT. При настройке печати выберите вместо порта принтера строку FILE, а затем, после выполнения команды File > Print в Visual Basic, установите флажок Print to File. Полученный текстовый файл можно просмотреть в редакторе WordPad или включить в другой документ.
Ниже приведен исходный текст примера с меню и панелью инструментов из урока 5. Не беспокойтесь, если у вас он будет выглядеть несколько иначе — значения некоторых свойств несущественны.
Form1 - 1
Option Explicit
Private SubmnuFileExit_Click()
End
End Sub
Private Sub tbrToolbar_ButtonClick(ByVal Button As ComctlLib.Button)
Select Case Button.Key
Case Is = "New"
MsgBox "Нажата кнопка New"
Case Is = "Open"
MsgBox "Нажата кнопка Open"
Case Is = "Save"
MsgBox "Нажата кнопка Save"
End Select
End Sub
frmData – 1
VERSION 5.00
Object = "{6B7E6392-850A-101B-AFCO-4210102A8DA7}#1.1#0"; COMCTL32.OCX
Begin VB.Form Form1
Caption = "Form1"
ClientHeight =1572
ClientLeft =3084
ClientTop =2556
ClientWidth =3744
LinkTopic ="Form1"
ScaleHeight =1572
ScaleWidth =3744 Begin ComctlLib.Toolbar tbrToolbar
Align = 1 'Выравнивание по верхнему краю
Height = 336
Left = 0
TabIndex = 0
Top = 0
Width = 3744
_ExtentX = 6604
_ExtentY = 593
ButtonWidth = 487
Appearance = 1
ImageList = "imToolbar"
BeginProperty Buttons {0713E452-850A-101B-AFCO-4210102A8DA7}
NumButtons = 4
BeginProperty Button1 {0713F354-850A-101B-AFCO-4210102A8DA7}
Key = ""
Object.Tag = ""
Style = 3
Value = 1
MixedState = -1 'True
EndProperty
BeginProperty Button2 {0713F354-850A-101B-AFCO-4210102A8DA7}
Key = "New"
Object.Tag =""
ImageIndex = 1
EndProperty
BeginProperty Button3 {0713F354-850A-101B-AFCO-4210102A8DA7}
Key = "Open"
Object.Tag = ""
ImageIndex = 2
EndProperty
BeginProperty Button4 {0713F354-850A-101B-AFCO-4210102A8DA7}
Key = "Save"
Object.Tag =""
ImageIndex =3
EndProperty
EndProperty
MouseIcon = {Binary}
End
Begin ComctlLib.ImageList imlToolbar
Left = 2520
Top = 720
_ExtentX = 804
_ExtentY = 804
BackColor = -21474836643
ImageWidth = 16
ImageHeight = 16
MskColor = 12632256
BeginProperty Images {0713E8C2-850A-101B-AFCO-4210102A8DA7}
NumListImages = 3
BeginProperty ListImage1 {0713E8C3-850A-101B-AFCO-4210102A8DA7}
Picture = {Binary}
Key = ""
frmData - 2
EndProperty
BeginProperty ListImage2 {0713E8C3-850A-101B-AFCO-4210102A8DA7}
Picture = {Binary}
Key = ""
EndProperty
BeginProperty ListImage3 {0713E8C3-850A-101B-AFCO-4210102A8DA7}
Picture = {Binary}
Key = ""
EndProperty
EndProperty
End
Begin VB.Menu mnuFile
Caption = "&File"
Begin VB.Menu mnuFileExit
Caption = "E&xit"
End
End
Begin VB.Menu mnuEdit
Caption = "&Edit"
Begin VB.Menu mnuEditCut
Caption = "Cu&t"
End
Begin VB.Menu mnuEditCopy
Caption = "&Copy"
End
Begin VB.Menu mnuEditPaste
Caption = "&Paste"
End
End
Begin VB.Menu mnuHelp
Caption = "&Help"
Begin VB.Menu mnuHelpAbout
Caption = "&About"
End
End
End
Расшифровка листинга
Программный код и свойства формы выведены на отдельных страницах. В начале каждой страницы указывается имя формы и номер страницы. Номер помогает ориентироваться в тех случаях, когда код или перечень свойств занимает несколько страниц. Программный код состоит из всех процедур событий, входящих в модуль формы. В перечень свойств входят все свойства формы и элементов, находящихся на ней. В данном примере страницы были объединены, однако в листинге остался заголовок Form1 - 1, с которого начинается программный код формы Form1. Другой заголовок, frmData - 1, начинает перечень свойств формы.
Перечень свойств выглядит достаточно просто, поэтому я ограничусь небольшим пояснением. Для каждой формы этот перечень начинается с Begin VB. Form и заканчивается End. С единичным отступом перечисляются свойства данной формы, а также несколько блоков Begin...End, каждый из которых соответствует некоторому элементу на форме. За ключевым словом Begin указывается тип объекта, затем — значение свойства Name. С отступом следующего уровня выводятся свойства всех элементов.
Теперь вы знаете все необходимое для того, чтобы организовать печать в своем приложении. Для построения отчетов я рекомендую пользоваться Crystal Reports Pro — это чрезвычайно мощный инструмент, который сэкономит ваше время и упростит работу.
Что нового мы узнали?
В этом уроке мы научились:
Использовать метод Print для вывода данных на принтер.
Выводить данные в окне непосредственных вычислений. 0 Использоватьметод PrintForm для печати форм.
Обращаться к различным принтерам, установленным в вашей системе, из программы.
Пользоваться Crystal Report Pro для построения отчетов.
Использовать элемент Crystal Reports для включения отчетов в приложения.
Печатать исходные тексты программ.
УРОК
Диалоговые окна
Стандартные диалоговые окна
Создание пользовательских диалоговых окон
Создание класса диалогового окна
Использование класса диалогового окна
Для обмена информацией с пользователем в Windows используются специальные формы, которые называются диалоговыми окнами. Они привлекают внимание пользователя и обеспечивают его реакцию на происходящее. В этом уроке вы узнаете, как пользоваться диалоговыми окнами, встроенными в Visual Basic, a также научитесь создавать и использовать собственные диалоговые окна, которые можно будет включать в другие проекты.
Стандартные диалоговые окна
В проектах Visual Basic часто встречаются две разновидности диалоговых окон: окна сообщений и окна ввода. Они встроены в Visual Basic, и если их возможностей окажется достаточно, вам не придется проектировать нестандартные диалоговые окна. Окно сообщения(МsgВох) выводит простейшие сообщения для пользователя, а окно ввода (InputBox), напротив, служит для ввода информации.
Окно сообщения
Оператор для создания окна сообщения выглядит так (в сокращенном варианте):
MsgBox сообщение, атрибуты, заголовок
где сообщение — текст, отображаемый в диалоговом окне; заголовок — строка в заголовке окна; параметр атрибуты определяет особенности окна — а именно различные кнопки и значки, отображаемые в нем. Ниже перечислены значения этого параметра и константы, используемые для определения окна сообщения.
Константа | Значение | Стиль |
vbOKOnly | Отображается только кнопка ОК | |
vbOKCancel | Отображаются кнопки ОК и Cancel | |
vbAbortRetrylgnore | Отображаются кнопки Abort, Retry и Ignore | |
vbYesNoCancel | Отображаются кнопки Yes, No и Cancel | |
vbYesNo | Отображаются кнопки Yes и No | |
vbRetryCancel | Отображаются кнопки Retry и Cancel | |
vbCritical | Отображается значок критического сообщения | |
vbQuestion | Отображается вопросительный знак (предупреждение) | |
vbExclamation | Отображается восклицательный знак (предупреждение) | |
vblnformation | Отображается значок информационного сообщения |
Значения констант можно складывать, чтобы достичь желаемого результата. Например, чтобы в окне сообщения присутствовали кнопки OK и Cancel, a также зна-
чок информационного сообщения, можно воспользоваться любым из приведенных ниже вариантов:
DlgDef = vbOKCancel
DlgDef = 1 + 64
Затем значение переменной DlgDef используется при вызове MsgBox.
Окно сообщения также может вызываться при помощи функции — возвращаемое значение зависит от кнопки, нажатой пользователем. Синтаксис функции MsgBox практически совпадает с синтаксисом одноименного оператора:
Dim гс As Integer 'Код возврата
rc = МздВох(сообщение, атрибуты, заголовок)
Обратите внимание на скобки, необходимые при вызове функции. Различные коды возврата перечислены ниже.
Константа | Значение | Нажатаякнопка |
vbOK | ОК | |
vbCancel. | Cancel | |
vbAbort | Abort | |
vbRetry | Retry | |
vblgnore | Ignore | |
vbYes | Yes | |
vbNo | No |
Окно ввода
Окно ввода, как и окно сообщения, может отображаться оператором или функцией. Сокращенный синтаксис функции выглядит так:
Dim гс As String
гс = InputВох(сообщение, заголовок, умолчание)
На этот раз параметр атрибуты отсутствует, однако появляется дополнительный параметр умолчание. В нем можно задать строку, которая будет по умолчанию находиться в текстовом поле. Когда пользователь нажимает кнопку OK, содержимое этого поля присваивается переменной (в нашем примере rс). Если пользователь нажал кнопку Cancel, возвращается строка нулевой длины.
ПРИМЕЧАНИЕОбратите внимание — функция InputBox возвращает строку, а функция MsgBox — значение целого типа.
Следующий пример показывает, как пользоваться функцией InputBox: 1. Создайте новый проект командой File > New Project
2. Выберите в Project Wizard значок Standard EXE.
3. Добавьте кнопку на форму Form1.
4. В окне свойств задайте свойству Name кнопки значение cmdTryMe.
5. Задайте свойству Caption кнопки значение &Нажми меня.
6. Дважды щелкните на кнопке cmdTryMe, чтобы открыть окно программы.
7. Добавьте следующий фрагмент в процедуру события Click кнопки cmdTryMe:
Private Sub cmdTryMe_Click()
Dim rс As String
rc = InputВох("Введите имя:")
MsgBox "Привет, " & rс & "!"
End Sub
8. Запустите программу командой Run > Start.
9. Нажмите кнопку, чтобы вызвать диалоговое окно InputBox. 10. Введите в текстовом поле свое имя и нажмите кнопку ОК.
Этот маленький пример в общих чертах показывает, как работают диалоговые окна MsgBox и InputBox. Если все сделано правильно, в окне ввода вам будет предложено ввести имя, после чего Visual Basic выдает окно сообщения со строкой типа «Привет, Стив!» (разумеется, в вашем случае будет выведено имя, заданное в окне ввода).