Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Ввод-вывод массивов
Ввод с клавиатуры Чаще всего массив нужно не заполнять случайными значениями, а вводить с клавиатуры или считывать из файла. Для ввода значений пользователем удобнее всего использовать компонент TStringGrid , находящийся на закладке Additional. Он представляет собой таблицу с произвольно задаваемым числом столбцов и строк, в каждую ячейку которой можно вводить и выводить данные (рис. 1).
Рис. 1. Компонент TStringGrid
Основными свойствами компонента TStringGrid являются: ColCount – общее число столбцов, включая фиксированные; RowCount – общее число строк, включая фиксированные; DefaultColWidth – ширина каждого столбца в пикселах: DefaultRowHeight – высота каждой строки в пикселах; FixedCols, FixedRows – число фиксированных столбцов и строк соответственно. Фиксированные столбцы и строки выделены цветом (она задается в свойстве FixedColor) и остаются на месте при прокрутке содержимого таблицы, поэтому в них очень удобно задавать заголовки столбцов и строк; ScrollBars – управляет отображением полос прокрутки. Возможные значения: ssNone (нет), ssHorizontal (только горизонтальная полоска), ssVertical(только вертикальная полоска), ssBoth (обе полоски); GridLineWidth – задает толщину линий сетки в пикселах. Свойство Options представляет собой множество значений, управляющих работой TStringGrid. Среди этих значений: goFixedVertLine – отображать вертикальные линии для фиксированных ячеек таблицы; goFixedHorzLine– отображать горизонтальные линии для фиксированных ячеек таблицы; goVertLine - отображать вертикальные линии для обычных ячеек таблицы; goHorzLine- отображать горизонтальные линии для обычных ячеек таблицы; goRangeSelect – возможность выделения диапазона ячеек, если отключен ввод данных в ячейки с клавиатуры; goDrawFocusSelected – выделение редактируемой ячейки цветом; goRowSizing – возможность изменения высоты строк пользователем; goColSizing – возможность изменения ширины столбцов пользователем; goRowMoving – возможность изменения порядка следования обычных строк при перетягивании их мышкой; goColMoving - возможность изменения порядка следования обычных столбцов при перетягивании их мышкой; goEditing – возможность ввода значений в ячейки таблицы пользователем с клавиатуры; goTabs – клавиша Tab обеспечивает переход от ячейки к ячейке; goRowSelect – выделение не отдельной ячейки, а целой строки; goAlwaysShowEditor – постоянно включен режим редактирования содержимого ячеек и отображается текстовый курсор; goThumbTracking – содержимое таблицы перерисовывается "на ходу", в процессе перетаскивания линеек прокрутки. Для доступа из программы к содержимому каждой ячейки применяется массив Cells[столбец, строка]. Нумерация строк и столбцов ведется с нуля! Данные в ячейках хранятся как текст (тип данных String), поэтому при работе с числами необходимо выполнять преобразование. Организуем ввод с клавиатуры двумерного массива вещественных чисел 4´5 элементов и найдем его максимальный элемент. Положим на форму компонент TStringGrid и установим его свойства следующим образом: ColCount=4; RowCount=5; DefaultColWidth=50; DefaultRowHeight=50; FixedCols=0; FixedRows=0; ScrollBars=ssNone; Options=[goEditing, goDrawFocusSelected]
Кстати, число строк и колонок можно задавать и программным путем, тем самым меняя размер таблицы на ходу. Поместим на форму кнопку, компонент Label и в обработчике ее нажатия запишем следующий код:
VAR i,j:BYTE; max:REAL; begin WITH StringGrid1 DO BEGIN max:=StrToFloat(Cells[1,1]); FOR i:=1 TO ColCount-1 DO FOR j:=1 TO RowCount-1 DO IF StrToFloat(Cells[i,j])>max THEN max:=StrToFloat(Cells[i,j]); Label1.Caption:='Max='+FloatToStrF(max,ffFixed,10,4) END end;
Как видно, нет необходимости копировать введенные числа в статический массив – можно напрямую работать с массивом Cells. В приведенном примере для простоты отсутствует защита от ввода неверных значений. В реальной программе, разумеется, надо ставить оператор TRY…EXCEPT. Для вывода информации в виде массива нужно просто присваивать значения элементам массива Cells. Например, так можно заполнить заголовки (ячейки фиксированной строки). Строка StringGrid1.Cells[0,0]:='Длина, мм'; занесет значение "Длина, мм" в левую верхнюю ячейку таблицы.
Date: 2015-06-06; view: 502; Нарушение авторских прав |