КАТЕГОРИИ:
АстрономияБиологияГеографияДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРиторикаСоциологияСпортСтроительствоТехнологияФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника
|
Объединение визуальных компонентов в программуНа форму в середину между двумя фреймами поместим два визуальных компонента TextBox для ввода рублевых курсов евро и доллара с именами KrsEuro и KrsDoll, а сверху в визуальном компоненте Label с именем КурсВалют сделаем подпись «Курс валют». В макрос Валюта добавим операторы задания начальных значений строкам ввода. VBA автоматически преобразует числа в строки. KursEuro = 45.07 ValCalc.KrsEuro.Text = KursEuro KursDoll = 30.62 ValCalc.KrsDoll.Text = KursDoll Сделаем двойной щелчок по визуальному компоненту KrsEuro. Макрос KrsEuro_Change() будет обрабатывать событие «изменение строки текста» в визуальном компоненте KrsEuro: ввод в глобальную переменную KursEuro с анализом ошибок ввода «не число». Если введено число, введенный текст будет черного цвета. Над строкой ввода в визуальном компоненте КурсВалют появится текст черного цвета «Курс валют». Веденная строка текста будет преобразована в число и присвоена глобальной переменной KursEuro. Если введено не число, не будем выводить на экран окно с сообщением об ошибке. Ошибку будем отмечать прямо в строке ввода визуального компонента TextBox. Введенный текст станет красного цвета, а над строкой ввода в визуальном компоненте КурсВалют появится текст красного цвета «Не число». Пользователь исправит текст в строке, и снова запустится макрос KrsEuro_Change(). Private Sub KrsEuro_Change() If IsNumeric(ValCalc.KrsEuro.Text) Then ValCalc.КурсВалют.Caption = "Курс валют" ValCalc.КурсВалют.ForeColor = &H80000008 ValCalc.KrsEuro.ForeColor = &H80000008 'черный KursEuro = ValCalc.KrsEuro.Text Else 'строка не число ValCalc.КурсВалют.Caption = "Не число" ValCalc.КурсВалют.ForeColor = &HFF& ValCalc.KrsEuro.ForeColor = &HFF& 'красный цвет End If End Sub Обратите внимание, что свойство ForeColor цвет текста в окне задается значениями интенсивности свечения субписелей красного, синего и зеленого. Легче всего задавать цвет с помощью окна свойств. Нужно в окне MsVB открыть форму, щелкнуть элемент TextBox, в окне Properties выделить свойство ForeColor, кнопкой ▼ открыть вкладку Palette или System и щелкнуть цвет. В правом поле свойства ForeColor появится шестнадцатеричное число интенсивностей цветов. Это число нужно скопировать в буфер и вставить в текст макроса. При этом редактор VBA удалит из числа незначащие цифры, цвет останется, который выбрали. Сделаем такой же макрос для компонента KrsDoll, выполним макрос Валюта и проверим, как все работает. В каждом окне введем не число и убедимся, что цвет стал красный, а потом исправим на число и убедимся, что цвет стал черный. Введем курсы 48,25 и 32,41, щелкнем кнопку <Выход> и убедимся, что глобальные переменные получили введенные значения. Для ввода исходной суммы денег добавим на форму визуальный компонент Label с именем ВведитеВалюту, заголовок «Введите валюту», и визуальный компонент TextBox с именем InVal. Запрограммируем макрос InVal_Change() на ввод исходной суммы Sinput с такой же проверкой на ошибки ввода «не число». Текст аналогичен макросу KrsEuro_Change() Для вывода пересчитанной суммы денег Sout добавим на форму визуальный компонент Label с именем ПолучитеВалюту, заголовок «Получите валюту», и визуальный компонент TextBox с именем OutVal. В этом окне будет только вывод ValCalc.OutVal.Text = Round(Sout, 2) который будет находиться в макросе командной кнопки <Пересчитать>. Функция Round округляет результат до двух десятичных цифр. Текст макроса: Private Sub Пересчет_Click() If KursEuro <= 0 Or KursDoll <= 0 Then Exit Sub Srub = Sinput * (pInRub _ + pInEuro * KursEuro + pInDoll * KursDoll) Sout = Srub * (pOutRub _ + pOutEuro / KursEuro + pOutDoll / KursDoll) ValCalc.OutVal.Text = Round(Sout, 2) End Sub В операторе If выполняется проверка, чтобы не было деления на ноль. Запустим макрос Валюта и переведем 100 рублей в евро. Все работает правильно. В заключение приведем окно валютного калькулятора, текст макроса формы и текст макроса Валя.
|