Лабораторная работа 5. Компоненты-таблицы
Цель: изучить возможности обработки табличной информации, используя компоненты StringGrid и DrawGrid. Для обработки табличных данных предусмотрены компоненты StringGrid, представляющий собой таблицу строк, и DrawGrid,являющийся таблицей более общего назначения, в ячейках которого может храниться произвольная информация произвольной природы, например, текст, числа, рисунок и т. д. Оба компонента находятся на странице Additional. Компоненты таблицы имеют форму и функциональные возможности электронных таблиц. В компоненте DrawGrid можно отображать какие-либо данные (числа, рисунки, пиктограммы) в форме таблиц. Кроме того, имеется возможность редактировать данные в каждой ячейке по отдельности. С помощью компонента StringGrid можно обрабатывать строки С помощью инспектора объектов в свойстве ColCount можно определить количество строк, а в свойстве RowCount задать количество столбцов. Свойства DefaulColWidth и DefaulRowWidth задают ширину всех строк и высоту всех столбцов. Свойство ScrollBar является логическим Каждая таблица должна иметь ячейки, в которых будет выводиться служебная информация, постоянно находящаяся на экране, даже если применяются линейки прокрутки. Поэтому существуют свойства FixedCol, FixedRows и FixedColor,задающие количество фиксированных строк и столбцов таблицы, их цвет (по умолчанию FixedCol =1и FixedRows =1). Любая таблица должна иметь хотя бы одну строку и один столбец подобных ячеек. Необходимо помнить, что нумерация и строк, и столбцов начинается с нуля. Поэтому, если оставить одну фиксированную строку и столбец, нумерация, доступная для редактирования, будет начинаться с 1. Рисунок 19
С помощью составного свойства Options можно задать флаги, определяющие поведение таблицы. Среди них отметим следующие: goEditing — показывает, может ли редактироваться содержимое ячеек, goAlweysShowEditing — определяет, становится ли выделенная ячейка сразу и активной (в противном случае ячейка активизируется либо нажатием клавиши F2, либо двойным щелчком мыши, либо нажатием произвольной символьной клавиши). На рисунке 19 изображена форма с компонентом StringGrid. Большинство описанных свойств представлены в инспекторе объектов. Следует знать в виду, что в силу своей универсальности таблица типа DrawGrid не имеет конкретного средства отображения реальных изображений в ячейках таблицы и для каждого нового вида изображений необходимо создавать свои средства, поэтому остановимся более подробно на таблице типа StringGrid. Для доступа к ячейкам таблицы на этапе выполнения программы можно воспользоваться свойствами Cells[ACol , ARow], Cols[ACol], Rows[ARow]. Cells[ACol , ARow] определяет ячейку, находящуюся в столбце ACol Cols[ACol] определяет колонку; Rows[ARow] определяет строку. Значения целочисленных свойств Col и Row, допустимых только во время выполнения, указывают на активную в данный момент ячейку, строку или столбец. При работе с таблицами дополнительно обрабатываются события, связанные с изменениями в ячейках. Замечание. На этапе проектирования заполнять таблицу начальными данными нельзя. Пример 1 Заполнить таблицу произвольного размера произвольными числами. Поместим на форму компонент StringGrid, где будем располагать числа; два компонента Edit, в которых будут вводиться размеры таблицы; кнопку Button, при нажатии на нее произойдет заполнение таблицы. Тогда процедура будет иметь следующий вид: procedure TForm1.Button1Click(Sender: TObject); var i,j:Integer; begin with StringGrid1 do begin ColCount:=StrToInt(Edit1.Text)+1; RowCount:= StrToInt(Edit1.Text)+1; for i :=1 to ColCount do for j:=1 to RowCount do Cells[i,j]:=IntToStr(50-Random(100)); end; end; Пример 2 В числовой таблице, заданной произвольным образом, подсчитать количество отрицательных значений в каждой строке и в дополнительном столбце. procedure TForm1.Button2Click(Sender: TObject); var i,j,k:Integer; begin with StringGrid1 do begin ColCount:= StrToInt(Edit1.Text)+2; for i:=1 to RowCount-1 do begin k:=0; for j:=1 to ColCount-2 do If StrToInt(Cells[j,i])<0 Then k:=k+1; Cells[ColCount-1,i]:=IntToStr(k); end; end; end; При использовании компонента DrawGrid элементом каждой ячейки является рисунок класса TRect, возможности обработки которого будут продемонстрированы нами в лабораторной работе 7 при изучении графических возможностей. При работе с компонентом StringGrid имеется один досадный факт, Procedure SaveGrid; var f:textfile; x,y:integer; Begin assignfile (f,’Filename’); rewrite (f); writeln (f, StringGrid1.colcount); writeln (f, StringGrid1.rowcount); For X:=0 to StringGrid1.colcount-1 do For y:=0 to StringGrid1.rowcount-1 do writeln (F, StringGrid1.cells[x,y]); closefile (f); end;
Procedure LoadGrid; var f:textfile; temp,x,y:integer; tempstr:string; begin assignfile (f,’Filename’); reset (f); readln (f,temp); StringGrid1.colcount:=temp; readln (f,temp); StringGrid1.rowcount:=temp; For X:=0 to StringGrid1.colcount-1 do For y:=0 to StringGrid1.rowcount-1 do begin readln (F, tempstr); stringgrid.cells[x,y]:=tempstr; end; closefile (f); end; Задания: 1. Проверьте все примеры из лабораторной работы. 2. Дана таблица размера n×n, посчитайте количество четных элементов главной диагонали. 3. Заполните две таблицы случайными числами и перемножить их по правилу перемножения матриц. Ответ выводится в третьей таблице. 4. Дана таблица размера n×n. Забейте таблицу случайными числами 5. Реализуйте на языке программирования Delphi задания из лабораторных работ по теме «Массива».
Популярное: Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас... Почему стероиды повышают давление?: Основных причин три... Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (259)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |