|
Программирование >> Разработка пользовательского интерфейса
Dim nChoice As Integer Select Case nChoice Case 1 Debug.Print Выбрано значение 1 Case 2 Debug.Print Выбрано значение 2 Case Else Debug.Print Выбрано неправильное значение End End Select 2. Цикл, помимо структуры DO WHILE, можно организовать и стандартным для большинства языков программирования способом. Поэтому следующая команда куда популярнее предыдущей: FOR MemVarName = nInitialValue TO nFinalValue [STEP nIncrement] Commands [LOOP] [EXIT] NEXT Команда FOR...NEXT обеспечивает выполнение блока команд для каждого значения переменной, начиная со значения, равного nInitialValue, до значения nFinalValue, пошаговое увеличение или уменьшение происходит на величину, заданную nIncrement, которая по умолчанию равна 1. Опция LOOP приводит к передаче управления на начало следующего цикла, а EXIT - к прекращению действия команды. В Visual Basic синтаксис этой команды выглядит очень похоже: For MemVarName = nInitialValue To nFinalValue [Step nIncrement] [Commands] [Exit For] [Commands] Next [MemVarName] По сравнению с Visual FoxPro здесь нет возможности досрочно начать новый цикл с помощью опции LOOP. Циклы FOR...NEXT могут быть вложены, но в этом случае в каждом цикле должен использоваться уникальный параметр MemVarName. В синтаксисе Visual FoxPro пример организации вложенного цикла приведен ниже. В переменную MyString десять раз записываются значения от 0 до 9. MyString = FOR Words = 10 TO 1 Step -1 FOR Chars = 0 To 9 MyString = MyString + STR(Chars) NEXT MyString = MyString + NEXT ? MyString В синтаксисе Visual Basic этот же пример будет иметь лишь незначительные отличия: Public Sub Main() For Words = 10 To 1 Step -1 For Chars = 0 To 9 MyString = MyString & Chars Next MyString = MyString & Next 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
|
© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки. |