Мегаобучалка Главная | О нас | Обратная связь


Лабораторная работа 5. Компоненты-таблицы



2020-02-04 259 Обсуждений (0)
Лабораторная работа 5. Компоненты-таблицы 0.00 из 5.00 0 оценок




Цель: изучить возможности обработки табличной информации, используя компоненты StringGrid и DrawGrid.

Для обработки табличных данных предусмотрены компоненты StringGrid, представляющий собой таблицу строк, и DrawGrid,являющийся таблицей более общего назначения, в ячейках которого может храниться произвольная информация произвольной природы, например, текст, числа, рисунок и т. д. Оба компонента находятся на странице Additional.

Компоненты таблицы имеют форму и функциональные возможности электронных таблиц. В компоненте DrawGrid можно отображать какие-либо данные (числа, рисунки, пиктограммы) в форме таблиц. Кроме того, имеется возможность редактировать данные в каждой ячейке по отдельности. С помощью компонента StringGrid можно обрабатывать строки
и связанные с ними объекты, в полной мере пользуясь возможностями компонента DrawGrid.

С помощью инспектора объектов в свойстве ColCount можно определить количество строк, а в свойстве RowCount задать количество столбцов. Свойства DefaulColWidth и DefaulRowWidth задают ширину всех строк и высоту всех столбцов. Свойство ScrollBar является логическим
и определяет наличие линеек прокрутки. Логическое свойство DefaultDrawing показывает, отображается ли содержание ячейки автоматически. Если данное свойство имеет значение True, то происходит автоматическое отображение содержимого, в противном случае необходимо создавать свои средства отображения.

Каждая таблица должна иметь ячейки, в которых будет выводиться служебная информация, постоянно находящаяся на экране, даже если применяются линейки прокрутки. Поэтому существуют свойства FixedCol, FixedRows и FixedColor,задающие количество фиксированных строк и столбцов таблицы, их цвет (по умолчанию FixedCol = FixedRows =1). Любая таблица должна иметь хотя бы одну строку и один столбец подобных ячеек. Необходимо помнить, что нумерация и строк, и столбцов начинается с нуля. Поэтому, если оставить одну фиксированную строку и столбец, нумерация, доступная для редактирования, будет начинаться с 1.

Рисунок 19

 

С помощью составного свойства Options можно задать флаги, определяющие поведение таблицы. Среди них отметим следующие: goEditing — показывает, может ли редактироваться содержимое ячеек, goAlweysShowEditing — определяет, становится ли выделенная ячейка сразу и активной (в противном случае ячейка активизируется либо нажатием клавиши F2, либо двойным щелчком мыши, либо нажатием произвольной символьной клавиши).

На рисунке 19 изображена форма с компонентом StringGrid. Большинство описанных свойств представлены в инспекторе объектов.

Следует знать в виду, что в силу своей универсальности таблица типа DrawGrid не имеет конкретного средства отображения реальных изображений в ячейках таблицы и для каждого нового вида изображений необходимо создавать свои средства, поэтому остановимся более подробно на таблице типа StringGrid.

Для доступа к ячейкам таблицы на этапе выполнения программы можно воспользоваться свойствами Cells[ACol , ARow], Cols[ACol], Rows[ARow].

Cells[ACol , ARow] определяет ячейку, находящуюся в столбце ACol
и строке ARow;

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 имеется один досадный факт,
а именно — в отличие от компонентов Memo и RichEdit в таблицах нет возможности сразу записать все содержимое в файл. Поэтому для работы с файлами данные процедуры необходимо писать самостоятельно. В следующем примере представлены две процедуры, одна из которых записывает содержимое в файл, а вторая читает содержимое из файла, используя только стандартные средства языка программирования Pascal. Это, соответственно, процедуры SaveGrid и LoadGrid. Если не совсем понятно содержимое данных процедур, то соответствующий материал рекомендуется повторить.

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 задания из лабораторных работ по теме «Массива».



2020-02-04 259 Обсуждений (0)
Лабораторная работа 5. Компоненты-таблицы 0.00 из 5.00 0 оценок









Обсуждение в статье: Лабораторная работа 5. Компоненты-таблицы

Обсуждений еще не было, будьте первым... ↓↓↓

Отправить сообщение

Популярное:
Как вы ведете себя при стрессе?: Вы можете самостоятельно управлять стрессом! Каждый из нас имеет право и возможность уменьшить его воздействие на нас...
Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы...



©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (259)

Почему 1285321 студент выбрали МегаОбучалку...

Система поиска информации

Мобильная версия сайта

Удобная навигация

Нет шокирующей рекламы



(0.008 сек.)