методичка с++. Лабораторные работы по программированию в среде С Builder 0
Скачать 1.64 Mb.
|
IV. Компоненты, размещаемые на форме, разделяются на видимые (визуальные) и невидимые (невизуальные). Визуальные компоненты появляются в окне программы во время выполнения точно так же, как и во время проектирования. Невизуальные компоненты появляют- ся во время проектирования как пиктограммы на форме, они никогда не видны во время выполнения, но обладают определенной функцио- нальностью (например, вызывают стандартные диалоги Windows и проч.). Для размещения нужного компонента (элемента интерфейса) на форме следует: 1. Переключится в окно формы 2. Открыть нужную вкладку на палитре компонентов 3. Щелкнуть нужный компонент 4. а) Используя технологию «нажать – держать – тащить» указать на форме прямоугольную область, в которой будет помещаться нуж- ный элемент интерфейса б) щелкнуть в желаемом месте на форме V. Выделение группы элементов интерфейса на форме производится при нажатой клавише Schift. Для удаления элемента интерфейса с формы следует выделить его и нажать клавишу Delete. Перетаксива- ние элементов интерфейса (или их группы) и изменение размеров производится стандартным способом. VI. Как правило, перед первым запуском на исполнение нового про- екта необходимо сохранять как все его модули, так и сам про- ект.При последующих запусках сохранения не требуется, даже если в модулях были проведены какие-либо изменения. Напоминания о не- обходимости сохранить модуль в силу его изменений тоже отсутст- вуют, поэтому следует обязательно сохранять измененные модули самостоятельно. Упражнение 1. Работа с формой и палитрой компонентов. 1. Запустить среду Borland C++ Builder 6.0 37 2. Оставить видимыми три ее основных окна (форма, редактор кода, Object Inspector), и расположить их так, как показано на рис. 8. 3. Выполнить View Window List и убедиться, что в списке открытых окон присутствуют лишь указанные выше. 4. Переключиться в окно формы и добавить на нее компоненты, указан- ные в табл. 3 (компоненты распола- гать на форме в произвольном поряд- ке с произвольными размерами). 5. Сохранить модуль (File Save или комбинация клавиш Ctrl+S или кнопка на панели инструментов) в папке своей группы с именем MyFom1. 6. Переключится в «Проводник» (или запустить его при необходимо- сти), и открыв содержимое папки сво- ей группы убедиться в появлении файлов MyForm1.cpp, MyForm1.dfm, MyForm1.h. 7. Переключиться в среду С++ Buil- Таблица 3 Название компонента Вкладка на палитре компонентов 1 2 MainMenu Standart Label CheckBox RadioButton Edit Button Shape Additional SpeedButton Timer System OpenDialog Dialogs SaveDialog ColorDialog CSpinEdit Samples CCalender der 6.0и сохранить проект (File Save Project As) с именем MyPr1 в папке своей группы. 8. Переключится в «Проводник» (или запустить его при необходимости) и убедиться в появлении файлов MyPr1.bpr, MyPr1.cpp, MyPr1.res. 9. Вернуться в среду С++ Builder 6.0 и запустить проект (Run Run или клавиша F9 или на панели инструментов). При этом происходит трансляция и, если нет ошибок, компоновка программы и создание единого загружаемо- го файла с расширением exe. При этом на экране появляется окно програм- мы. 10. Расположить на экране окна так, чтобы была возможность наблюдать на экране и форму, и появившееся окно программы. Сравнивая их, понять, ка- кие из добавленных компонент являются визуальными, а какие – нет. 11. Закрыть окно выполняемой программы (стандартным образом). 12. Выйти из среды C++ Builder 6.0 (закрыть среду C++ Builder 6.0). 38 Упражнение 2. Некоторые приемы работы при разработке формы 1. Открыть проект MyPr1. 2. Перемещая существующие на форме компоненты сгруппировать их так, чтобы в верхней части формы находились бы визуальные, а в нижней – не визуальные. 3. Не сохраняя ни файл модуля, ни файл проекта, запустить проект и убе- диться, что все сделанные изменения были учтены. 4. Закрыть среду программирования C++ Builder 6.0, ответив «Yes» на во- прос о сохранении изменений. Обратить внимание, что конкретно за измене- ния предлагается сохранить. 5. Вновь открыть проект MyPr1.bpr. 6. Удалить с формы компонент RadioButton. 7. За один прием удалить с формы все невизуальные компоненты. 8. Запустить проект. 9. Закрыть проект. 10. Выделить на форме компоненты Shape и SpeedButton и последовательно выполнить команды Edit Align, Edit Size, Edit Scale. Самостоятельно определить цели выполнения этих команд. Замечание. Вышеприведенные команды доступны также в контекстном меню выделенных компонентов. 11. Выполнить View Alignment Palette и, нажимая на кнопки в появившей- ся панели, определить их цель. 12. Установить для компонента Button ширину в 100 пт, а высоту – в 45 пт. 13. Сделать так, чтобы все находящиеся на форме компоненты были сгруп- пированы по принадлежности их к вкладке на палитре компонентов, т.е., на- пример, в один столбик (строчку) были бы расположены все компоненты с вкладки Standart, в другой – все компоненты с вкладки Additional и т. д. 14. За один прием сделать так, чтобы все компоненты с вкладки Standart име- ли бы размер по горизонтали в 120 пт, а размер по вертикали соответствовал бы меньшему из всех этих компонентов . 15. Сохранить модуль, запустить проект, закрыть среду C++ Builder 6.0. Краткие теоретические сведения VII. Окно Object Inspector. Окно содержит две вкладки: Properties и Events, а также выпа- дающий список с перечнем всех находящихся на форме компонентов. 39 На обеих вкладках отображаются сведения о выделенном в данный момент на форме компоненте, или общие сведения для компонентов, если в данный момент на форме выделено несколько из них (те све- дения, которые справедливы для всех выделенных компонентов). На вкладке Properties отображаются свойства выделенного(ых) в дан- ный момент на форме компонента(ов). На вкладке Events – его(их) события. VIII. Изменение свойств компонентов на этапе проектирования фор- мы. Каждый компонент C++ Builder имеет три разновидности характе- ристик: свойства, события и методы. Свойства являются атрибутами компонента, определяющими его внешний вид и поведение. Изменять значения свойств пользователь может: в режиме проектирования формы; в ходе выполнения программы, написав соответствующий программ- ный код. Для изменения какого-либо свойства визуального компонента в режиме проектирования формы следует выделить нужный визуальный компонент на форме (щелчок) и изменить значение нужного свойства на вкладке Properties окна Object Inspector. Вкладка Properties содержит две колонки. Первая – название (имя) свойства компонента, вторая – его текущее значение. Свойства компонента могут быть простыми или сложными. К про- стым относятся свойства, определяемые единственным значением - числом, строкой символов, значением True (Истина) или False (Ложь) и т. п. Сложные свойства определяются совокупностью значений. Перед именем такого свойства стоит значок "+". При двойном щелчке на име- ни сложного свойства или при щелчке по значку «+» раскрывается спи- сок вложенных (уточняющих) свойств, а значок "+" меняется на " ". Значения свойств (как простых, так и сложных) могут вводиться вручную, выбираться из выпадающего списка или устанавливаться в специальных диалоговых окнах. В первом случае в правой колонке вкладки Properties находится обычное поле ввода, во втором – по- ле ввода представляет собой стандартный выпадающий список, в третьем – в поле ввода находится кнопка «…», щелчок по которой приводит к открытию диалогового окна IX. Важнейшие общие свойства визуальных компонентов приведены в табл. 4. 40 Таблица 4 Название свойства Смысл Caption Отображаемый в компоненте текст Color Цвет фона компонента Cursor Вид указателя мыши при установке ее на компонент Enabled Регулирует доступность/недоступность компонента Font Регулирует тип шрифта, эффекты, размер, эффекты шриф- та Top Определяет местоположение левого верхнего угла компо- нента (в пикселях) Left Width Определяет ширину и высоту компонента (в пикселях) Height Visible Регулирует видимость/невидимость объекта в окне при- ложения Name Имя компонента, которое используется в дальнейшем в программе. Задается только в процессе проектирования и не должно изменяться во время выполнения. Hint Всплывающая подсказка, которая появляется при наведе- нии указателя мыши на компонент ShowHint Будет ли отображаться всплывающая подсказка для ком- понента Х. Специфические свойства некоторых элементов интерфейса: Компонент Label (Надпись) служит для получения коротких надписей на форме. Свойства компонента представлены в табл. 5. Таблица 5 Название Смысл 1 2 AutoSize Определяет, можно/нельзя автоматически менять раз- меры компонента так, ч тобы полностью отобразить текст Caption с учётом установленного шрифта. Alignment Определяет принцип горизонтального выравнивания текста внутри компонента. Возможные значения taLeftJustify прижать текст влево; taCenter выровнять по центру; taRightJustify прижать текст вправо 41 Таблица 5 (продолжение) 1 2 Layout управляет положением текста по вертикали Возможные значения tlTop прижать вверх tlCenter выровнять по середине; tlBottom прижать вниз Transparent Определяет прозрачность метки: Возможные значения: False пространство метки закрашивается собствен- ным цветом (свойство Color) True Цвет, установленный в свойстве Color не учитывается и сквозь метку будут видны расположенные на ней компоненты (так, на- пример, можно наложить текст на графику) WordWrap Разрешение/запрет переноса слов из свойства Caption на следующую строку в случае, если длина выводимого текста превышает ширину компонента. Имеет смысл использовать только при AutoSize=False Компонент Edit Однострочный текстовый редактор, окно которого применяется для ввода данных. Свойства компонента приведены в табл. 6. Таблица 6 Название Смысл 1 2 Text Содержит набор символов, который пользователь указал в окошке компонента AutoSelect Определяет будет ли выделен/не выделен весь текст в окошке компонента в момент получения компонентом фокуса ввода. Возможные значения True Текст будет выделен False Текст не будет выделен HideSelection Определяет, останется ли выделение/будет снято выделение с символов в окошке компонента при по- тере компонентом фокуса ввода Возможные значения True Выделение будет снято False Выделение останется 42 Таблица 6 (продолжение) 1 2 ReadOnly Разрешает/запрещает редактирование текста, ото- бражаемого в окошке компонента Возможные значения True Редактирование разрешено False Редактирование запрещено PasswordChar Позволяет скрыть вводимый текст, отображая вме- сто реально вводимых символов «символ-заглушку» Возможные значения #0 Вводимые символы отображаются без сокры- тия Любой символ Вместо вводимых символов выводится ука- занный в свойстве символ BorderStyle Определяет вид рамки для поля ввода MaxLength Определяет максимальное количество символов, ко- торые можно вводить в окне компонента. Если зна- чение установлено в 0, то количество символов не ограничено Все оконные элементы имеют рамку по контуру, состоящую из двух фасок: внешней, отображаемой вдоль края элемента управле- ния, и внутренней, проходящей рядом с внутренней стороной внеш- ней фаски. Параметры рамки задаются группой свойств, представ- ленных в табл. 7. Таблица 7 Название Смысл 1 2 BevelEdges задает, какие стороны входят (отображаются) в рамку; BevelInner Задает вид внутренней фаски Возможные значения: bvNone Внутренней фаски нет. Значение по умолчанию bvLowered фаска выглядит утопленной в элемент управления bvRaised Фаска выглядит приподнятой над эле- ментом управления BevelKind определяет стиль рамки Возможные значения: bkNone рамки нет bkTile рамка с четкими скосами bkSoft рамка со сглаженными скосами bkFlat плоская рамка (без скосов) 43 Таблица 7 (продолжение) 1 2 BevelOuter Задает вид внешней фаски. Возможные значения – такие же, как у BevelInner BevelWidth Задает ширину промежутка между фасками Ctrl3D Задает вид компонента (объемный/плоский( Возможные значения True Компонент объемный False Компонент плоский Компонент Button (кнопка) Обычная кнопка Windows. На первых порах достаточно знать лишь об одном специфическом свойстве этого компонента – Default. Свойст- во определяет, является ли компонент «кнопкой по умолчанию» (кнопка «подсвечена» рамкой, нажатие Enter соответствует щелчку по кнопке). Возможные значения свойства: True Является кнопкой по умолчанию False Не является кнопкой по умолчанию Только у одной кнопки на форме свойство должно быть установ- лено в True. Упражнение 3. Работа с окном Object Inspector и установкой свойств ви- зуальных компонент в режиме проектирования формы. 1. Запустить среду C++ Builder и открыть проект MyPr1. 2. Выделить на форме компонент Shape1. Посмотреть список его свойств. 3. Выделить компонент CheckBox1. Посмотреть список его свойств 4. Выделить одновременно компоненты Shape1 и CheckBox1 и просмотреть список их общих свойств 5. Пронаблюдать действие свойств AutoSize и WordWrap (компонент Label): 5.1. Выделить на форме компонент Label1. 5.2. Установить для него размер шрифта 12 пт. 5.3. Установить для него свойство AutoSize в значение False, а свойство WordWrap в значение True. 5.4. Установить ширину и высоту компонента 90 120 пикселей. 5.5. Для свойства Caption выполнить набор символов «Это очень длинная- длинная- длинная надпись», наблюдая, в какой момент времени произой- дет переход на следующую строку. 44 5.6. Очистить свойство Caption, а свойство WordWrap установить в False. Вновь набрать фразу «Это очень длинная-длинная-длинная надпись» и посмотреть эффект на форме. 5.7. Установить свойство AutoSize в True и посмотреть результат измене- ний на форме. 6. Установить для компонентов свойства, указанные в табл. 8. Таблица 8 Компонент Свойство Значение 1 2 3 CheckBox1 Hint “Переключатель” Caption “Отображать график” Enabled False SpeedButton1 Caption “Рисуй график” Glyph Добавить любую картинку, небольшую по размеру Шрифт подписи Arial, зеленый, полужирный курсив размером 12 Shape1 Shape stEllipse Brush Color clBlue Style bsDiagCross Shape1 Pen Color 0x000080FF Style psSolod Width 10 Width 150 Height 150 Cursor crHelp 7. Сохранить форму, запустить проект, проверить правильность установки свойств. 8. Изменить для SpeedButton1 значение свойства Flat на True; для CheckBox значение ShowHint на True; запустить проект и проверить эффект. Краткие теоретические сведения. XI. События Событие - это какое-либо действие, осуществляемое пользовате- лем, либо средой программирования, либо операционной системой. Каждое из событий перехватывает специальный обработчик и перена- правляет управление в специальную функцию, называемую обработчи- ком события. Текст функции-обработчика события составляет поль- зователь. 45 Каждое событие имеет свое имя. Список событий, на которые мо- жет реагировать тот или иной компонент приводится на вкладке Events окна Object Inspector. Вкладка Events содержит две колон- ки. Первая – название события компонента, вторая – имя функции- обработчика события. Три наиболее часто используемых события приведены в табл 9. Таблица 9 Имя события Возникает Примечание Change Когда меняется состояние флаж- ка, переключателя, екста в окне редактора, изображения и проч. Click Когда пользователь щелкнул ле- вой кнопкой мыши в тот момент, когда указатель мыши находился на компоненте. Также это собы- тие возникает в случаях, когда действие, аналогичное щелчку по компоненту выполняется с помощью клавиатуры (нажатие пример кнопка, был в фокусе; выполнение комбинации «горя- чих» клавиш и т.д.) К одному и тому же компоненту нельзя на- писать обработчики событий Onclick и OnDbiciick, поскольку первый из них всегда перехватит первый из щелчков. DblClick когда пользователь дважды щелкнул левой кнопкой мыши на компоненте, причем отпустил кнопку мыши после второго щелчка над компонентом. Для того, чтобы добавить обработчик нужного события для ком- понента(ов) нужно: 1. Выбрать на форме компонент(ы); 2. Открыть вкладку Events окна Object Inspector 3. Дважды щелкнуть в нужной строке по правому полю нужного события. При этом автоматически открывается окно редактора кода, в кото- ром генерируется текст пустой функции для соответствующего обра- ботчика события, и курсор устанавливается том месте, где следует вводить код. Имя любой функции-обработчика события генерируется по принципу |