Анимация
JavaScript
|
Главная Библионтека Debug.Print MyString End Sub В Visual Basic есть очень похожая на рассматриваемую команду команда организации цикла: For Each MemVarName In ArrayName [Commands] [Exit For] [Commands] Next [ MemVarName] Эта команда позволяет выполнить какие-либо действия для группы элементов массива, имя которого указывается в параметре ArrayName. Вместо массива может использоваться коллекция объектов, о чем мы будем более подробно говорить позднее. 1. Даже если мы научились составлять пока очень простенькие программы, мы должны стремиться к высоким идеалам и стараться создать дружественный интерфейс. Здесь не обойтись без средств, позволяющих в хорошей манере сообщать пользователям разную информацию, может и не очень приятную, спрашивать у них совета о дальнейших действиях и т. д. Учитывая важность этой проблемы для современного пользовательского приложения, авторы, заранее сговорившись, на первое место поставили следующую функцию. В Visual FoxPro она имеет такой синтаксис: MESSAGEBOX(cMessageText [, nDialogBoxType [, cTitleBarText]]) Выводит на экран определяемое пользователем диалоговое окно. Параметр cMessageText определяет текст, который появляется в этом окне. Чтобы переместить часть сообщения на следующую строку в диалоговом окне, используйте в cMessageText символ возврата каретки (CHR(13)). Высота и ширина диалогового окна увеличиваются по мере необходимости, чтобы вместить содержимое заданного в cMessageText текста. Параметр nDialogBoxType определяет кнопки и пиктограммы, которые появляются в диалоговом окне, а также первоначально выбранную после вывода диалогового окна на экран кнопку. В следующей таблице приведены возможные значения для этих элементов. Значение nDialogBoxType Элементы Кнопки диалогового окна 0 Только кнопка OK 1 Кнопки OK и Cancel 2 Кнопки Abort, Retry и 2 Ignore 3 Кнопки Yes, No и Cancel 4 Кнопки Yes и No 5 Кнопки Retry и Cancel Пиктограмма 16 Знак "Стоп" 32 Знак "Вопрос" 48 Знак "Восклицание" Пиктограмма "Информация (i)" Кнопка по умолчанию 0 Первая кнопка 256 Вторая кнопка 512 Третья кнопка Пропуск значения nDialogBoxType идентичен определению для него значения 0. Параметр nDialogBoxType должен представлять собой сумму трех значений - по одному из каждого раздела приведенной таблицы. Параметр cTitleBarText определяет текст, который появляется в заголовке диалогового окна. Если вы опускаете cTitleBarText, в названии окна появится заглавие "Microsoft Visual FoxPro". Возвращаемое значение функции MESSAGEBOX() указывает, какая кнопка была выбрана в диалоговом окне. В диалоговых окнах с кнопкой Cancel при нажатии клавиши Esc будет возвращаться то же самое значение (2), что и при выборе Cancel. Следующая таблица содержит список возвращаемых функцией MESSAGEBOX() значений. BoaBiDJiiaeM ое кнопка значение 1 OK 2 Cancel 3 Abort 4 Retry 5 Ignore 6 Yes 7 No В Visual Basic рассматриваемая функция имеет чуть-чуть другое написание и несколько более богатый синтаксис: MsgBox(cMessageText [, nDialogBoxType [, cTitleBarText] [, cHelpFileName, nContext]) Условия использования этой функции и задания ее параметров идентичны описанным выше для Visual FoxPro. В Visual Basic для некоторых параметров можно устанавливать дополнительные значения. Так, параметр nDialogBoxType дополнительно может принимать значение 4096, что устанавливает модальность появляющегося сообщения на системном уровне, и пользователь не может продолжить работать не только в текущем, но и ни в каком другом из запущенных приложений, пока не отреагирует на данное сообщение. Параметры cHelpFileName и nContext позволяют задать имя файла контекстной помощи и номер темы, которая будет выведена на экран при нажатии пользователем клавиши F1. 4.4. Еще несколько навязчивых советов Когда вы напишете пусть даже небольшую программу, посмотрите, сколько имен вы использовали. А если программа достаточно сложная? Что бы не запутаться в громадном количестве имен, используемых в программе, программисты давно выработали негласные соглашения, с помощью которых здесь можно навести хоть какой-то порядок. Надо отметить, что, начиная с версии 3.0, такие рекомендации включены и в руководство по Visual FoxPro и по Visual Basic. Их основная идея заключается в систематизации всех имен переменных или массивов по диапазону действия и типу хранимых в них данных. Таким образом, структура имени должна иметь следующий вид: ДиапазонТип данныхИмя Для указания дипазона рекомендуется использовать следующие символы: l - внутренняя (local) lnCounter p - локальная (private) pnStatus r - региональная (region) rnCounter g - глобальная (public) gnOldRecno t - параметр (parameter) tnRecNo В последнем столбце приведен пример наименования. Надо отметить, что в имени переменной диапазон ее действия программисты указывают редко. В примерах, где это не имеет принципиального значения, мы тоже не будем делать этого. Для указания типа данных рекомендуется использовать следующие символы: a - массив aMonths c - символьные данные cLastName y - денежная единица yCurrentValue d - дата dBirthDay t - данные типа "дата и время" tLastModified b - двойной точности bValue l - логические lFlag n - числовые nCounter o - ссылка на объект oEmployee Глава 5 Объектно-ориентированное программирование 5.1. Объектная модель и ее свойства 5.2. Объекты и их свойства Объекты для работы с данными Объекты для управления работой приложения Объекты для оформления интерфейса пользователя Объекты-контейнеры Невизуальные объекты Объекты OLE 5.3. Управление событиями 5.4. Использование методов Программирование - не такое уж приятное занятие, как может показаться на первый взгляд. Регулярно программисты сталкиваются с двумя сильно действующими на нервы событиями: они то часами мучаются в раздумьях, как запрограммировать то или иное функциональное решение, то их одолевает ужасная скука при многократной реализации давно отработанных решений. Способ борьбы с этими неприятностями называется "объектно-ориентированное программирование" (ООП). По разным причинам ООП , как неотъемлемая часть современных систем RAD, не сразу стала достоянием широкого круга программистов, долгое время оставаясь уделом профессионалов, пишущих на языках, подобных С+ + . Среди рассматриваемых в данной книге средств разработки наиболее развитые средства ООП имеет СУБД Visual FoxPro. Нисколько не сомневаясь, что остальные средства разработки будут двигаться в этом направлении, при изложении основ ООП мы будем ориентироваться именно на эту модель. 5.1. Объектная модель и ее свойства При структурном программировании, речь о котором шла в предыдущей главе, последовательно выполняются операторы, записываемые программистом в соответствии с логикой решения поставленной перед ним задачи. А теперь представьте интерфейс современной прикладной программы, что-нибудь типа Windows 95. Представили это многообразие окон, диалогов, задач? И все это то открывается, то закрывается, то перемещается, то изменяет цвет. Рискнем предположить, что такой интерфейс написать средствами стандартного структурного языка программирования просто невозможно. В этом параграфе вы узнаете: • Основные сведения о принципах ООП. • Термины и определения, используемые в ООП. • Возможности объектной модели Visual FoxPro. • Особенности использования объектов в Visual Basic. Объектно-ориентированное программирование делает акцент не на программные структуры, а на объекты. Почти все, что представляет для вас интерес и, возможно, даже не существует визуально, может быть объектом. Объектом может быть окно, поле для ввода данных, пользователь вашей программы, сама программа и т. д. Тогда любые действия мы можем привязать к этому объекту, а также описать, что должно случиться с ним при определенных действиях пользователя (например, при закрытии окна). Полезный, многократно используемый u - неопределенного типа uReturnValue Как вы могли заметить из примеров, после обозначения диапазона действия и типа данных, имя переменной для большей наглядности лучше начинать с большой буквы. Не ленитесь давать имени максимальную смысловую нагрузку. Это избавит вас от долгих раздумий: "И что же это за переменная такая и зачем это она тут?" 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 [ 32 ] 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |