методичка с++. Лабораторные работы по программированию в среде С Builder 0
Скачать 1.64 Mb.
|
void __fastcall <ИмяФормы>::<ИмяКомпонента><ИмяОбработчикаСобытия>(<Параметры>) 46 Например, заголовок void __fastcall TForm1::Button2Click(TObject *Sender) означает, что ниже приводится код для случая, когда пользователь нажмет кнопку с именем Button2 на форме с именем Form1. Если обработчик события уже был ранее добавлен, то двойной щелчок перемещает указатель мыши в текст функции обработчика- события. XII. Для изменения значения свойства на этапе выполнения про- граммы необходимо в соответствующем обработчике события записать строку вида: <ИмяВизуальногоКомпонента> > <ИмяСвойства> = <НовоеЗначениеСвойства>; Упражнение 4. Программное изменение свойств визуальных компо- нентов 1. Создать новый проект. 2. Добавить на форму кнопки с подписью «Изменить цвет формы на голубой», «Увеличить размер шрифта для надписи», «Изменить надпись», «Переместить надпись в правый нижний угол формы». Кнопки расположить в правом верх- нем углу формы, выровняв их по правому краю. Надпись первой кнопки долж- на быть выполнена жирным красным цветом, надпись второй – жирным синим цветом, надпись третьей – жирным курсивом зеленого цвета. Имена кнопок – MyBtn1, MyBtn2, MyBtn3. Всплывающая подсказка для первой кнопки – «На- жми и форма станет синей», второй – «Нажми и размер шрифта у надписи уве- личится на 5 пт», третьей – «нажми, и надпись окажется внизу справа». Всплы- вающие подсказки должны отображаться при запуске проекта. 3. Имя формы установить в MyForm, подпись (заголовок окна) – в «Про- граммное изменение свойств визуальных компонентов». 4. Добавить на форму метку (Label), расположить в верхней части формы левее кнопок. Установить свойство Caption в «Надпись не меняли». Шрифт отрегулировать по своему усмотрению. 5. Добавить на форму однострочный текстовый редактор (Edit), установить его имя в MyEdit, отрегулировать свойства компонента так, чтобы в окошке редактора при запуске программы никаких символов бы не отображалось, а при вводе чего-либо отображались бы символы «@». 47 6. Рядом с компонентом Edit расположить еще один компонент Label. Свой- ства компонента Name и Font отрегулировать по своему усмотрению. Свой- ство Caption очистить. 7. Перейти в обработчик события Click для кнопки МуBtn1 (выделить на форме кнопку, открыть вкладку Events окна Object Inspector и выполнить двойной щелчок по полю, справа от подписи «OnClick»). 8. В позиции курсора набрать следующий код MyForm > Color = clBlue; 9. Запустить проект, сохранив его с именем Upr2, а форму и модуль – с именем UnitUpr2. 10. В окне приложения убедиться в правильности установки свойств компо- нентов. 11. Пощелкать по кнопкам на форме в произвольном порядке. Пронаблюдать эффект. 12. Закрыть проект и перейти к коду обработчика события OnClick кнопки MyBtn2. 13. В позиции курсора набрать следующий код: Label1 > Font > Size = MyForm > Label1 > Font > Size + 5; Label1 > Caption = “Размер шрифта изменился…” 14. Запустить проект. Убедиться в работоспособности кнопки MyBtn2. 15. В обработчике события OnClick для кнопки MyBtn3 указать следующий код: Label1 > Left = Width - Label1 > Width-10; Label1 > Top = Height - Label1 > Height-10; 16. Применяя программные строки, указанные в п. 15 упражнения, ответить на вопрос: какие координаты будет иметь левый верхний угол метки, если ее ширина и высота – 150 и 20 пт соответственно, а размер формы - 500х500? 17. Запустить проект, в произвольном порядке нажимать кнопки, наблюдая эффект, причем кнопки MyBtn2 и MyBtn3 – несколько раз. 18. Самостоятельно сделать так, чтобы: при нажатии на кнопку MyBtn1 цвет формы менялся бы на желтый, а ее размеры стали бы 800 800; при нажатии на кнопку MyBtn2 цвет ее шрифта поменялся бы на черный, а ее всплывающая подсказка стала бы «Лучше много раз не нажимать». 48 19. Сделать так, чтобы при вводе чего-либо в окошко однострочного тексто- вого редактора (компонент Edit) в рядом находящейся метке (Label) отобра- жался бы суммарный результат ввода. Для этого: 19.1. Перейти в обработчик события OnChange компонента Edit 19.2. Ввести в позиции курсора следующую последовательность симво- лов: <ИмяМетки> > Caption = MyEdit > Text; 19.3. Запустить проект, пронаблюдать изменение окошка редактора и рядом стоящей метки при наборе каких-либо символов. 20. Сохранить проект, закрыть его. Краткие теоретические сведения. XIII. Компоненты, часто используемые для ввода/вывода данных Если необходимо ввести из формы в программу или вывести на форму информацию, которая вмещается в одну строку, используют окно однострочного редактора текста, представляемого компонентой Edit. Как уже известно, то, что пользователь указал в окошке ре- дактора, хранится в свойстве Text. Тип свойства Text – строковый (AnsiString). Компонента Label используется для вывода надписей, выводимый пользователю текст содержится в свойстве Caption, тип свойства – строковый (AnsiString). Если в качестве результатов работы программы необходимо вы- вести не одну строку, а несколько, рекомендуется использовать многострочный редактор текста, представленый компонентой Memo (вкладка Standart). XIV. Функции преобразования типов Особенностью работы языка С++ является типизированность дан- ных. Так, вычисления (сложение, вычитание, умножение, деление, расчет тригонометрических функций и т. д.) могут производится только с числовыми типами данных (double – для вещественных чи- сел, int – для целых чисел и проч.). В то же время вывод информа- ции на экран и ввод ее с экрана осуществляется через символьные (строковые) типы данных, с которыми вышеперечисленные операции недопустимы. Поэтому необходимы функции преобразования типов. Наиболее часто используемые из них представлены в табл. 10. Пример: На форме имеются компоненты Edit1 и Edit2, причем в обе пользователь вводит только целые числа. Необходимо сложить зна- 49 Таблица 10 Название функции Назначение StrToFloat(Str) Преобразует строку Str в вещественное число StrToInt(Str) Преобразует строку Str в целое число. FloatToStr (W) Преобразует вещественное число W в строку символов IntToStr (W) Преобразует целое число W в строку символов чения, указанные в их окошках и вывести результат на форму. Дей- ствия пользователя: 1. Как правило, пользователь создает две новые переменных (на- пример, х и у) нужного типа (в данном случае – целого (int)) и записывает в них (присваивает им) преобразованные значения свой- ства Text соответствующего компонента. Код на языке С++ выглядит следующим образом: int x,y; //объявление переменных х = StrToInt(Edit1–>Text); //преобразование из строки в целое для Edit1 y = StrToint(Edit2–>Text); //преобразование из строки в целое для Edit2 Внимание! При записи числовых значений в окошках Edit не должно быть пробелов, а разделителем целой и дробной частей обычно яв- ляется запятая! 2. Для вывода итога вычисления на форму добавляется компонент Label, в свойство Caption которого необходимо записать результат суммирования. Поскольку результат суммирования – целое, а свой- ство Captiоn имеет строковый тип, следует предварительно выпол- нить преобразование «из целого в строку». Вышеприведенный код на языке С++ расширяется в этом случае следующей строкой: Label1 –> Caption = IntToStr(x+y); Упражнение 5. Простейший калькулятор 1. Создать новый проект, в форме разместить два компонента Edit, четыре компонента Label, четыре кнопки. Настроить форму, как показано на рис. 9. Цветовую гамму, размер шрифта и имена для компонентов Label, Edit и Button выбрать самостоятельно. 2. Для кнопки с надписью «+» перейти в обработчик события Click и само- стоятельно набрать код, аналогичный приведенному в примере к теоретиче- 50 Рис. 9. Вид окна приложения ским сведениям, но с учетом того, что в компоненты Edit пользователь будет вводить вещественные числа. 3. Запустить проект, предварительно сохранив его с именем MyCalc. Имя мо- дуля (формы) – Form1. 4. Проверить правильность работы программы. 5. Ввести в качестве любого операнда какое-либо число с пробелом (слово, число «через точку») и посмотреть на реакцию программы при нажатии на кнопку с надписью «+». 6. Запустить приложение из любого файлового менеджера, вновь ввести не- корректное значение операнда и, нажав кнопку «+», посмотреть на реакцию программы. 7. Добавить обработчики событий для кнопок «–», « », «/». Запустить при- ложение и убедиться в правильности его работы. 8. Для метки «Результат расчета» установить выравнивание по правому краю. 9. Изменить обработчик события Click для кнопки «+», набрав перед выво- дом результата сложения на форму строку: <ИмяМетки> –> Caption = ”Результат сложения: ”; 10. Самостоятельно изменить обработчики событий для других кнопок ана- логичным образом. 11. Запусить проект, проверить правильность его работы. Краткие теоретические сведения. XV. Компонент Memo Это многострочный редактор текста, который удобно использо- вать также для вывода результатов работы программы, если это не- обходимо сделать в несколько строк. Свойства компонента пред- ставлены в табл. 11. 51 Таблица 11 Название свойства Смысл 1 2 ImeMode возможность использования редакторов способа ввода (Input Method Editor, IME). Такие редакторы позво- ляют приспособить стандартную раскладку клавиатуры для символьных языков для ввода нестандартных сим- волов (иероглифов и т. д.). Редакторы IMЕ представ- ляют собой специально устанавливаемое в операцион- ной системе программное обеспечение (ПО). Имя тако- го редактора задается в свойстве ImeName. Режим ра- боты редактора определяется свойством ImeMode. ImeName Lines Содержит информацию, выводимую в компоненте. Ин- формация представлена в виде массива строк. Для очистки массива строк используется метод <ИмяКомпонента> –> Clear(); Для добавления новой строки используется метод <ИмяКомпонента> –>Lines–>Add(Str); ScrollBars Определяет наличие полос прокрутки внутри компо- нента. Возможные значения: ssBoth Отображаются и вертикальная, и горизон- тальная ssHorizont al Отображается только горизонтальная ssNone Не отображается ни вертикальная, ни гори- зонтальная ssVertical Отображается только вертикальная WantReturns В режиме ввода, определяет, допустимо ли при нажа- тии Enter добавлять новую строку. Возможные значения: True Значение по умолчанию. Разрешено добавление новой строки текста при нажатии клавиши Enter, когда курсор находится внутри компонента Fals e Нажатие клавиши Enter, когда курсор находится внутри компонента приводит к возникновению события Change WantTabs Определяет режим функционирования клавиши Tab, когда пользователь вводит текст в элементе управления. Возможные значения: 52 Таблиц 11 (продолжение) 1 2 1 True Клавиша Tab функционирует стандартным образом при вводе текста (сдвигает позицию курсора на значение табуляции вправо) Fals e Значение по умолчанию. Клавиша Tab функционирует в качестве средства перемещения фокуса на форме с одного элемента управления на другой. Упражнение 6. Работа с компонентом Memo. Задача: Составить программу вычисления арифметического выражения для заданных значений x, y, z : Окно программы должно иметь вид, представленный на рис. 10. Рис. 10. Вид окна приложения Ход решения: 1. Создать новый проект с именем MyMemo. 2. Оформить окно формы, заменив заголовок Form1 на нужный текст (свой- ство Caption). 3. Поместить на форму компоненты Label, задав соответствующие значения в свойстве Caption, установить для них шрифты жирного начертания. 4. Поместить на форму компоненты для ввода исходных данных (Edit), вы- ровнять их по верхнему краю; их самих и соответствующие им метки – по середине. 53 5. Поместить на форму компонент Memo; запретить редактирование его строк, разрешить появление обеих полос прокрутки. 6. Поместить на форму кнопку (Button), оформить ее внешний вид. 7. Перейти в код модуля, и после строки #include #include Цель набранной строки – подключение модуля встроенных математиче- ских функций. 8. Перейти в обработчик события Click для кнопки, в котором указать сле- дующий код: double x, y, z, a, b ,c, rez; //х, у, z – исходные данные //а, b, с – вспомогательные переменные; //rez – результат вычисления*/ //Ниже должно быть три строки, обеспечивающие считывание исходных данных и пре- образование из типа-строка в тип-вещественное число. Написать самостоятельно. Имена переменных – см. выше. … … … a = pow(tan(x+y),2); //расчет квадрата тангенса суммы b = exp(y-z); //расчет экспоненты c = sqrt(cos(x*x)+sin(z*z)); //расчет квадратного корня rez = a-b*c; //общий итог //вывод результата: Memo1->Lines->Add("При х="+FloatToStr(x)+";y="+FloatToStr(y)+";z="+FloatToStr(z)); Memo1->Lines->Add("Результат = "+FloatToStr(rez)); 9. Запустить проект и проверить его работоспособность. 10. Перейти в обработчик события Create для формы. Указать в нем следую- щий код: Edit1->Text = "3,4"; Edit2->Text = "7,4e-2"; Edit3->Text = "1,943e2"; Memo1->Clear(); Memo1->Lines->Add("Лабораторная работа № 1"); 11. Запустить проект, отследить появившиеся изменения. 54 Содержание отчета: 1. Титульный лист 2. Цель работы 3. Краткие теоретические сведения (список используемых операторов, их цель, синтаксис, формат и проч.) 4. Коды модулей С++ 5. Копии форм и сведения о свойствах компонентов. 6. Копии экрана с примерами работы программ 7. Схемы алгоритмов программ. 8. Выводы по работе. Контрольные вопросы 1. Перечислите этапы создания приложения с оконным интерфейсом. 2. Что такое форма? 3. Что такое модуль? 4. Каким образом и с какой целью можно открыть окно Project Manager? 5. Каким образом и с какой целью можно открыть окно Object Inspector? 6. Каким образом и с какой целью можно переключаться между модулем и формой? 7. Укажите файловых состав приложения с оконным интерфейсом. Что из- менилось в этом составе по сравнению с консольным приложением? 8. Какая классификация компонентов, использующихся для разработки приложений с оконным интерфейсом Вам известна? 9. Предложите способ, согласно которому, не знающий пользователь смог бы определить, какой из компонентов является визуальным, а какой – нет. 10. Как разместить нужный компонент на форме? 11. Как выделить группу компонентов на форме? Для каких целей это может понадобиться? 12. Как удалить элемент(ы) интерфейса с формы? 13. Каким образом можно выровнять компоненты интерфейса на форме? 14. Что такое свойства элементов интерфейса? 15. Каким образом можно установить один и тот же размер компонентов ин- терфейса на форме? 16. Какие вкладки и с какой целью содержит окно Object Inspector? 17. В каких режимах допустимо изменение свойств компонентов? 55 18. Как в режиме проектирования формы можно изменить свойства компо- нентов? 19. Как в окне Object Inspector отличить простое свойство от сложного? 20. Как вводить значения свойств компонентов в окне Object Inspector? 21. Перечислите и поясните важнейшие свойства визуальных компонентов. 22. Перечислите и поясните специфические свойства компонента Label. 23. Перечислите и поясните специфические свойства компонента Edit. 24. Перечислите и поясните специфические свойства компонента Button. 25. Поясните термин «событие» 26. Где можно просмотреть список событий, на которые может реагировать тот или иной компонент? 27. Объясните, в какие моменты времени возникают события Click, DBLClick, Change. 28. Какие действия необходимо выполнить, чтобы перейти в режим про- граммирования обработчика нужного события? 29. Каким образом можно менять/устанавливать свойства компонентов в процессе выполнения программы? 30. Какие компоненты используются для организации ввода/вывода данных, необходимых для реализации линейного вычислительного процесса? Пере- числите и объясните их свойства и события. 31. Что такое тип данных? 32. Что такое преобразование типов данных? 33. Какие функции преобразования типов данных Вам известны? Приведите их синтаксис и принцип использования. 34. Какой компонент может использоваться для многострочного вво- да/вывода текста? Перечислите и поясните его свойства и события. |