Метода(c++)
.pdfd.Установить свойства компонентов lbl1 и lbl2 так, чтобы при запуске они бы не отображались в окне, а флажок cbxModul находился бы в снятом неустановленном) состоянии.
e.Перейти в обработчик события Click для компонента cbxModul и самостоятельно написать код, по которому при установке флажка компоненты lbl1 и lbl2 становились бы видимыми, а при снятии – не видимыми.
8.Запустить проект, проверить правильность работы программы.
9.Сохранить проект.
10.Разместить на форме две радиокнопки с подписями «Дневная», «Вечерняя».
11.Запустить проект. Убедиться, что лишь одна из них может находиться в установленном (выбранном) состоянии.
12.Добавить три новые радиокнопки с подписями «ФРТ», «ФКТИ», «ФИБС».
13.Запустить, убедиться, что по-прежнему лишь одна из всех добавленных на форму радиокнопок может находиться в установленном состоянии.
14.Закрыть проект без сохранения изменений
Краткие теоретические сведения: III. Компонент Panel (панель)
Используется для группирования управляющих элементов (кнопок, радиокнопок, флажков и т. д.), функционально связанных друг с другом. Не имеет заголовка, позволяет регулировать оформление границ. Важнейшие свойства представлены в табл. 14
Таблица 14
|
Название |
|
|
|
|
Смысл |
|
|
|
|
|
свойства |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
||||
|
BevelInner |
|
Задает вид внутренней фаски панели |
|
|
|
||||
|
|
|
Возможные значения: |
|
|
|
|
|
||
|
|
|
bvNoe |
|
Внутренней фаски нет. Значение по |
|
||||
|
|
|
|
|
||||||
|
|
|
|
|
умолчанию |
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
bvLowered |
|
фаска выглядит утопленной в элемент |
|
||||
|
|
|
|
|
управления |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bvRaised |
|
Фаска |
выглядит |
приподнятой |
над |
|
|
|
|
|
|
|
элементом управления |
|
|
|
||
|
|
|
|
|
|
|
|
|
||
|
|
|
bvSpace |
|
Фаска заменяется отступом |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
60
|
BevelOuter |
Задает вид внешней фаски панели |
|
||||||
|
|
Возможные значения, такие же, как и у свойства |
|
||||||
|
|
BevelInner |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
BevelWidth |
Определяет ширину внешней части панели |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Таблица 14 (продолжение) |
|
||
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|||
|
BorderStyle |
|
Определяет стиль бордюра |
|
|||||
|
|
|
Возможные значения: |
|
|||||
|
|
|
bsNone |
|
нет рамки |
|
|||
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
bsSingle |
компонент по периметру обводится |
|
||||
|
|
|
|
|
|
линией толщиной в 1 пиксель |
|
||
|
|
|
|
|
|
|
|
|
|
|
BorderWidth |
|
Определяет ширину бордюра |
|
|||||
|
|
|
|
|
|||||
|
FullRepaint |
|
Разрешает/запрещает перерисовку панели и всех ее |
|
|||||
|
|
|
дочерних элементов при изменении ее размеров |
|
|||||
|
|
|
Возможные значения: |
|
|||||
|
|
|
|
|
|
|
|||
|
|
|
True |
|
Перерисовка разрешена |
|
|||
|
|
|
|
|
|
|
|
||
|
|
|
False |
|
Перерисовка запрещена |
|
|||
|
|
|
|
|
|
|
|
|
|
IV. Компонент GroupBox (групповая панель, групповое окно)
Используется для группирования управляющих элементов (кнопок, радиокнопок, флажков и т. д.), функционально связанных друг с другом. Имеет заголовок, но не позволяет регулировать оформление границ.
V. Компонент RadioGroup (панель группы радиокнопок)
Используется для отображения регулярно расположенных (столбцами и столбиками) радиокнопок, подписи которых имеют близкую длину. Важнейшие свойства компонента представлены в табл 15.
|
|
|
|
Таблица 15 |
|
|
|
|
|
|
|
|
Название |
|
|
Смысл |
|
|
свойства |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
2 |
|
|
|
|
|
|
|
|
Items |
Определяет |
количество радиокнопок и их надписи. |
|
|
|
|
Для редактирования списка радиокнопок следует |
|
||
|
|
нажать на |
кнопку |
справа от названия свойства в |
|
|
|
окне ObjectInspector. |
|
||
|
|
Для программного получения надписей радиокнопок |
|
||
|
|
следует использовать конструкцию вида: |
|
||
|
|
<ИмяКомпонентаRadioGroup>->Items->Strings[<ИндексНужнойРадиокнопки>] |
|
||
|
|
|
|
|
|
|
Columns |
Определяет |
количество столбцов, в которых будут |
|
|
|
|
|
|
|
|
61
располагаться кнопки (не более 17).
ItemIndex Содержит индекс (номер) выбранной (выделенной) радиокнопки. Нумерация начинается с 0!!!! Если ItemIndex= -1 (значение по умолчанию), то ни одна радиокнопка не выбрана.
Упражнение 2. Компоновка компонентов CheckBox и RadioButton
1.Создать новый проект, имя файла формы FrmGroup, имя файла проекта –
PrGroup.
2.Добавить на форму компонент RadioGroup
3.Установить для компонента:
•подпись в «Факультет»,
•имя – rgrpF,
•добавить радиокнопки с подписями «ФИБС», «ФКТИ», «ФЭА», «ФРТ», «ФЭЛ», «ФЭМ», «ГФ», «ОФ».
4.Последовательно установить количество столбцов радиокнопок в 2, 3, 4, 5. Просмотреть получающийся эффект.
5.Изменить подписи радиокнопок, как показано в табл. 16.
Таблица 16
Старая подпись |
Новая подпись |
|
|
ФРТ |
Факультет радиотехники и телекоммуникаций |
|
|
ФЭЛ |
Факультет электроники |
|
|
ОФ |
Открытый факультет |
|
|
6.Вновь последовательно установить количество столбцов радиокнопок в значения 2, 3, 4. Просмотреть получающийся эффект.
7.Добавить на форму компонент Panel. Свойство Caption очистить.
8.Меняя свойства BevelInner, BevelOuter, BevelWidth, BorderStyle,
BorderWidth самостоятельно просмотреть варианты оформления панели.
9.Разместить на Panel три компонента RadioButton. Подписи компонентов:
«y = ax + b», «y = sin x», «y = log x»
62
10.Изменить количество и подписи радиокнопок на панели, как показано на рис. 13.
11.Запустить проект, убедиться, что ни одна из радиокнопок автоматически не выбрана.
12.Закрыть проект и сделать так, чтобы автоматически при запуске выбиралась бы радиокнопки с подписью «y = sin x» и «х = 100».
13.Запустить проект и убедиться в
независимости радиокнопок на панелях
Рис. 13. Вид панели
аргумента функции и типа функции.
14.Добавить на панель Panel по два компонента Label и Edit. Подпись первого компонента Label – «а =», подпись второго – «b =». Написать соответствующие обработчики событий, чтобы при выборе варианта «y = ax + b» добавленные компоненты Label и Edit становились доступны, а при выборе других видов функций – недоступными. Убедиться, что при запуске приложения добавленные компоненты также недоступны.
15.Добавить на форму кнопку с подписью «Вычислить», компонент Label.
16.Запрограммировать обработчик события Click для кнопки «Вычислить» так, чтобы при нажатии на кнопку в компоненте Label выводился бы результат вычисления функции в заданной точке.
17.Разместить на форме компонент GroupBox и перенести на него все компоненты, располагающиеся в Panel. Подпись GroupBox установить в «Вид функции».
18.Запустить проект и проверить правильность его работы.
I. Компонент StringGrid
Вкладка на палитре компонент – Additional. Предназначен для ввода/вывода текстовых табличных данных. Важнейшие свойства компонента представлены в табл. 17.
|
|
|
|
|
|
Таблица 17 |
|
|
|
|
|
|
|
|
|
|
Название |
|
|
|
Смысл |
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
BorderStyle |
Определяет |
стиль |
границ |
таблицы. Возможные |
|
|
|
|
значения: |
|
|
|
|
|
|
|
|
|
|
|
||
|
|
bsNone |
|
Границы |
нет. Применяется в том |
|
|
|
|
|
|
случае, |
когда |
таблица размещается |
|
|
|
|
|
|
|
|
|
63
|
|
|
|
|
|
|
внутри |
какого-либо |
другого |
|
||||||
|
|
|
|
|
|
|
компонента, внешние границы которого |
|
||||||||
|
|
|
|
|
|
|
являются |
также |
внешними |
границами |
|
|||||
|
|
|
|
|
|
|
компонента StringGrid. В этом случае |
|
||||||||
|
|
|
|
|
|
|
таблица |
более гармонично |
вписывается |
|
||||||
|
|
|
|
|
|
|
в этот компонент. |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
bsSingle |
Граница |
– линия, очерчивающая таблицу |
|
|||||||||
|
|
|
|
|
|
|
по периметру |
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
ColCount |
|
Количество столбцов в таблице |
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
Color |
|
Цвет «не заголовочных» ячеек таблицы |
|
|
|
|
|||||||||
|
|
|
|
|
|
|
|
|
||||||||
|
Ctrl3D |
|
Управляет объемным/плоским видом компоненты. |
|
||||||||||||
|
|
|
Возможные значения: |
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
Таблица 17 (продолжение) |
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||
|
Ctrl3D |
|
|
True |
|
Компонент объемный |
|
|
|
|
|
|
|
|||
|
(продолжениие) |
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
False |
|
Компонент плоский |
|
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|||||||
|
Default- |
|
|
Автоматически |
устанавливаемая |
ширина столбцов |
|
|||||||||
|
ColWidth |
|
|
таблицы |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
||||||||
|
Default- |
|
|
Автоматически |
устанавливаемая |
высота |
строк |
|
||||||||
|
RowHeight |
|
|
таблицы |
|
|
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|||||||||||
|
FixedCols |
|
|
Определяет количество «фиксированных» столбцов, |
|
|||||||||||
|
|
|
|
|
не участвующих |
в горизонтальной |
прокрутке. |
|
||||||||
|
|
|
|
|
«Фиксированные» |
столбцы |
|
применяются |
для |
|
||||||
|
|
|
|
|
размещения заголовков столбцов таблицы |
|
|
|
||||||||
|
|
|
|
|
|
|||||||||||
|
FixedRows |
|
|
Определяет количество «фиксированных» строк, не |
|
|||||||||||
|
|
|
|
|
участвующих |
в |
вертикальной |
прокрутке. |
|
|||||||
|
|
|
|
|
«Фиксированные» |
строки |
|
применяются |
для |
|
||||||
|
|
|
|
|
размещения заголовков строк таблицы |
|
|
|
|
|||||||
|
|
|
|
|
|
|||||||||||
|
FixedColor |
|
|
Цвет фона фиксированных строки и столбцов |
|
|||||||||||
|
|
|
|
|
таблицы |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||||||
|
GridLineWidth |
|
|
Ширина линии-разделителя между ячейками таблицы |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
64
|
Options |
|
позволяет дополнительно настроить внешний вид и |
|
|||||||||||||||
|
|
|
|
|
поведение |
компонента |
StringGrid. |
Свойство |
|
||||||||||
|
|
|
|
|
содержит 15 элементов, которые в Object Inspector |
|
|||||||||||||
|
|
|
|
|
могут принимать значение True либо False: |
|
|
|
|
|
|||||||||
|
|
|
|
|
goFixedVertLine |
|
Есть/нет |
вертикальные |
|
||||||||||
|
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
разделительные |
|
линии |
|
||||||
|
|
|
|
|
|
|
|
|
|
между |
|
|
ячейками |
|
|||||
|
|
|
|
|
|
|
|
|
|
фиксированной зоны |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
goFixedHorzLine |
|
Есть/нет |
горизонтальные |
|
||||||||||
|
|
|
|
|
|
|
|
|
|
разделительные |
|
линии |
|
||||||
|
|
|
|
|
|
|
|
|
|
между |
|
|
ячейками |
|
|||||
|
|
|
|
|
|
|
|
|
|
фиксированной зоны |
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
goVertLine |
|
|
|
|
Есть/нет |
вертикальные |
|
|||||||
|
|
|
|
|
|
|
|
|
|
разделительные |
|
линии |
|
||||||
|
|
|
|
|
|
|
|
|
|
между обычными ячейками |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
goHorzLine |
|
|
|
|
Есть/нет |
горизонтальные |
|
|||||||
|
|
|
|
|
|
|
|
|
|
разделительные |
|
линии |
|
||||||
|
|
|
|
|
|
|
|
|
|
между обычными ячейками |
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
goRangeSelect |
|
Разрешение/запрет |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
выделения |
региона |
ячеек |
|
||||||
|
|
|
|
|
|
|
|
|
|
мышкой |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
goDrawFocusSelected |
|
Выделять/не |
|
выделять |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
цветом |
ячейку, |
имеющую |
|
||||||
|
|
|
|
|
|
|
|
|
|
фокус |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
Таблица 12 (продолжение) |
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
Options |
|
|
goRowSizing |
|
Разрешение/запрет |
на |
изменение |
|
||||||||||
|
(продолжение) |
|
|
|
|
|
мышкой высоты строки таблицы |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
||||||||||
|
|
|
|
goColSizing |
Разрешение/запрет на изменение |
|
|||||||||||||
|
|
|
|
|
|
|
мышкой ширины столбца таблицы |
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
goRowMoving |
|
Разрешение/запрет |
передвижения |
|
|||||||||||
|
|
|
|
|
|
|
строки таблицы мышкой (изменять |
|
|||||||||||
|
|
|
|
|
|
|
её индекс) |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
goColMoving |
|
Разрешение/запрет |
передвижения |
|
|||||||||||
|
|
|
|
|
|
|
столбца таблицы мышкой (изменять |
|
|||||||||||
|
|
|
|
|
|
|
её индекс) |
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
goEditing |
|
Разрешение/запрет |
|
|
|
на |
|
||||||||
|
|
|
|
|
|
|
редактирование ячеек |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
goTabs |
|
определяет |
поведение |
фокуса |
при |
|
|||||||||
|
|
|
|
|
|
|
нажатии клавиши Tab: |
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
True |
|
|
фокус |
перемещается |
на |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65
|
|
|
|
|
|
|
|
|
соседнюю ячейку таблицы |
|
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
|
|
|
|
|
|
|
False |
фокус |
перемещается |
на |
|
||||||||
|
|
|
|
|
|
|
|
|
компонент, |
следующий |
в |
|
|||||||
|
|
|
|
|
|
|
|
|
списке TabOrder |
|
|
|
|
|
|
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
goRowSelect |
Выделять/не |
выделять |
цветом |
всю |
|
|||||||||||
|
|
|
|
|
|
|
строку, содержащая ячейку с фокусом |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
goAlways- |
|
|
|
Разрешить/запретить |
доступность |
|
||||||||||
|
|
|
ShowEditor |
|
редактирования |
|
ячейки |
без |
|
||||||||||
|
|
|
|
|
|
|
дополнительных |
|
действий |
при |
|
||||||||
|
|
|
|
|
|
|
перемещении в ячейку фокуса |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
goThumb- |
|
|
|
Определяет |
поведение |
таблицы |
при |
|
||||||||
|
|
|
Tracking |
|
|
|
протягивании |
|
пользователем |
|
|||||||||
|
|
|
|
|
|
|
ползунка скроллинга мышкой: |
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
True |
скроллинг |
|
происходит |
|
||||||||
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
одновременно с движением |
|
|||||||||
|
|
|
|
|
|
|
|
|
ползунка |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
False |
скроллинг |
|
происходит |
|
||||||||
|
|
|
|
|
|
|
|
|
только |
после |
того |
как |
|
||||||
|
|
|
|
|
|
|
|
|
пользователь |
|
отпустит |
|
|||||||
|
|
|
|
|
|
|
|
|
ползунок |
|
|
|
|
|
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
RowCount |
|
Число строк в таблице |
|
|
|
|
|
|
|
|
|
|
||||||
|
|
|
|
|
|
|
|
|
|
||||||||||
|
ScrollBars |
|
Управляет |
наличием/отсутствием |
полосы |
прокрутки |
|
||||||||||||
|
|
|
в таблице, если если количество строк или |
|
|||||||||||||||
|
|
|
столбцов не помещается в окне компонента. |
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
Таблица 12 (окончание) |
|||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
||||||
|
ScrollBars |
|
Возможные значения: |
|
|
|
|
|
|
|
|
|
|
||||||
|
(продолжение |
|
ssBoth |
|
|
при |
необходимости |
появляются |
как |
|
|||||||||
|
|
|
|
|
|||||||||||||||
|
|
|
|
|
|
||||||||||||||
|
) |
|
|
|
|
вертикальная, |
|
так |
|
и |
|
||||||||
|
|
|
|
|
|
|
|
|
|||||||||||
|
|
|
|
|
|
горизонтальная полосы прокрутки |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
ssHorizontal |
|
при |
|
необходимости |
появляются |
|
||||||||||
|
|
|
|
|
|
только |
горизонтальная |
полоса |
|
||||||||||
|
|
|
|
|
|
прокрутки |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
|
|
ssVertical |
|
при |
|
необходимости |
появляются |
|
||||||||||
|
|
|
|
|
|
только |
вертикальная |
полоса |
|
||||||||||
|
|
|
|
|
|
прокрутки |
|
|
|
|
|
|
|
|
|
|
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
ssNone |
|
|
ни |
|
горизонтальная, |
|
ни |
|
||||||||
|
|
|
|
|
|
вертикальная |
полосы |
|
прокрутки |
|
|||||||||
|
|
|
|
|
|
появиться не могу в любом случае |
|
||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|||||||||
|
Row |
|
Свойства доступны |
только |
в |
режиме |
выполнения. |
|
|||||||||||
|
|
|
Определяют |
номер |
строки |
выделенной |
в таблице |
|
|||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
66
|
|
ячейки. |
|
|
|
Внимание! Нумерация строк и столбцов начинается |
|
|
|
с нуля!!!! |
|
|
|
|
|
|
Col |
Свойства доступны только в режиме выполнения. |
|
|
|
Определяют номер столбца выделенной в таблице |
|
|
|
ячейки. |
|
|
|
Внимание! Нумерация строк и столбцов начинается |
|
|
|
с нуля!!!! |
|
|
|
|
|
|
Cells |
Свойство доступно только в режиме выполнения. |
|
|
|
Позволяет получить доступ к каждой отдельной |
|
|
|
ячейке таблицы по заданным номерам столбца и |
|
|
|
строки. Принцип доступа: |
|
|
|
<ИмяКомпонента> -> Cells[<НомерСтолбца>][<НомерСтроки>] |
|
|
|
Внимание! Нумерация строк и столбцов начинается |
|
|
|
с нуля!!!! |
|
|
|
Тип данных – хранящихся в Cells – AnsiString. |
|
|
|
|
|
Упражнение 3. Ввод значений элементов массива с помощью компонента
StringGrid.
1.Создать новый проект. Сохранить его в папке «InpTableCol». Имя проекта
– InpTable, имя файла модуля – frmTable.
2.Добавить на форму:
•компонент Label;
•компонент SpinEdit;
•компонент StringGrid;
•два компонента Button.
Компонент StringGrid должен быть невидим при запуске, число строк – 2, число фиксированных строк и столбцов – 1. Таблица должна иметь максимально возможный размер по горизонтали и возможность редактирования данных в ячейке. Имя таблицы – StrGr.
Подпись для компонента Label установить в «Число столбцов таблицы». У компонента SpinEdit свойства MinValue и MaxValue установить в 1 и 100, соответственно. Имя – speCount.
Первый компонент Button: подпись – «Вывести таблицу», имя – btnOutTable. Второй компонент Button: подпись – «Что ввели?», имя – btnRes.
3. Перейти в обработчик события Click для компонента btnOutТable. Набрать в нем следующий код:
67
unsigned char ColCount; ColCount = speCount->Value+1; StrGr->ColCount= ColCount; StrGr ->Cells[0][0]="Столбец"; StrGr ->Cells[0][1]="Данные"; for (int i=1;i<ColCount;i++)
{
StrGr ->Cells[i][0]=IntToStr(i);
}
StrGr ->Visible = True;
4.Не запуская программу, постараться понять действия, выполняемые в вышеприведенном коде.
5.Проверить свои размышления: запустить программу, задавая различные значения для числа столбцов таблицы в компоненте SpinEdit.
6.Проверить возможность ручного ввода в ячейки таблицы.
7.Добавить на форму два компонента Label, расположить их рядом друг с другом. В первом компоненте установить подпись «Результат ввода», во втором компоненте подпись очистить. Имя второго компонента – lblRes.
8.Перейти в обработчик события Click для компонента btnRes и набрать в нем следующий код:
lblRes->Caption="";
for (int i = 1;i<speCount->Value+1;i++)
{
lblRes->Caption=lblRes->Caption+StrGr->Cells[i][1]+", ";
}
9.Не запуская программу, постараться понять действия, выполняемые в вышеприведенном коде.
10.Проверить свои размышления: запустить программу, задать желаемое число столбцов для таблицы (не более 10), заполнить ячейки таблицы целыми числами с различными знаками; нажать на кнопку «Что ввели?»
11.Сохранить проект и форму в новой папке с именем «InpTableRow». Имена файлов не менять. C помощью файлового менеджера убедиться, что в папке InpTableRow появилось 6 файлов.
12.Самостоятельно изменить тексты функций для обеих кнопок так, чтобы
заполнение таблицы велось не как вектор-строки, а как вектор-столбца.
68
13.Добавить на форму компонент Label, расположить под компонентом lblRes; подпись очистить, имя установить в lblRes_1.
14.Добавить на форму третью кнопку, подпись – «Записать таблицу в массив». Цель кнопки – переписать данные, введенные пользователем в таблицу, в одномерный массив целых чисел с именем MyMas, изменить в массиве MyMas все отрицательные введенные числа на 0 и вывести результат в компонент lblRes_1. Код обработчика события Click для кнопки будет выглядеть следующим образом:
int MyMas[100]; lblRes_1->Caption="";
for (int i = 1;i<speCount->Value+1;i++)
{
MyMas[i-1]=StrToInt(StrGr->Cells[i][1]); if (MyMas[i-1]<0) {MyMas[i-1]=0;}
}
for (int i = 0;i<speCount->Value;i++)
{
lblRes_1->Caption=lblRes_1->Caption+IntToStr(MyMas[i])+", ";
}
15. Разобраться в набранном коде, запустить проект, убедиться в его работоспособности.
Упражнение 2. Заполнение массива с помощью датчика случайных
чисел и вывод результата в компонент StringGrid.
1.Открыть проект InpTable из папки InpTableCol.
2.Удалить с формы кнопку «Что ввели?».
3.Добавить на форму компонент GroupBox. Заголовок (подпись) – «Принцип заполнения таблицы».
4.В компонент GroupBox добавить два компонента RadioButton и один компонент Panel. Подпись для первого RadioButton – «ручной ввод», для второго – «генератор случайных чисел». В компоненте Panel очистить подпись. Имена: rbtnManual и rbtnRand соответственно. Радиокнопка rbtnManual при запуске приложения должна быть выбрана.
5.В компонент Panel добавить три RadioButton, подписи: «целые от 0 до N», целые от –N до N», «действительные от 0 до N». Имена – rbtn1, rbtn2, rbtn3. При запуске приложения должна быть выбрана радиокнопка rbtn1.
69