ТАБЛИЦЫ (Методичка С++)

2013-09-07СтудИзба

Описание файла

Файл "ТАБЛИЦЫ" внутри архива находится в папке "METODY". Документ из архива "Методичка С++", который расположен в категории "". Всё это находится в предмете "информатика" из 2 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "информатика" в общих файлах.

Онлайн просмотр документа "ТАБЛИЦЫ"

Текст из документа "ТАБЛИЦЫ"

15


Московский государственный технический университет им. М.Э. Баумана

Кафедра «Компьютерные системы и сети»

VCL. Компоненты TDrawGrid, TStringGrid и ListView

2001

1Класс ТCustomGrid

При создании приложений часто бывает удобно представлять информацию в виде таблицы. Delphi позволяет создавать различные виды таблиц. Исходным классом всех таблиц является класс TСustomGrid. Этот класс включает в себя характеристики, общие для любых таблиц, которые можно построить на его основе. Большинство из них определяет внешний вид таблицы.

К
аждая таблица может содержать произвольное количество строк и столбцов. Столбцы и строки могут иметь отображаемые наименования. Размеры отдельных строк и столбцов могут быть произвольными и даже меняться в процессе выполнения программы. В ячейки может помещаться разнообразная текстовая и графическая информация в зависимости от предназначения таблицы. Информацию в ряде случаев можно редактировать.

В таблицах помимо обычных координат, задающих положение и размеры различных элементов в пикселях, существует и другая система координат. В качестве таких координат используют номер столбца и номер строки, в которых расположена ячейка. При этом нумерация строк и столбцов начинается с нуля, например, ячейка с координатами (0,0) является левой верхней ячейкой. Зная размеры ячеек, от этой системы координат можно перейти к традиционной, и наоборот.

Если с ячейкой не выполняются никакие операции, то она находиться в пассивном состоянии. Таблица может содержать, так называемые фиксированные ячейки, которые предназначены для размещения заголовков столбцов и строк. Фиксированные ячейки могут занимать только целые строки и целые столбцы, причем самые верхние и самые левые. Количество фиксированных строк и столбцов можно изменять. Можно, также, задать их цвет. Фиксированные ячейки нельзя выделить, активизировать или отредактировать.

Активная ячейка выделяется либо рамкой из точек, либо специальным цветом. Если предусмотрена возможность редактирования ячеек, то ячейка может дополнительно находиться в редактируемом состоянии.

Ячейки таблицы могут разделяться линиями различной толщины. Имеется возможность изменять во время работы программы ширину столбцов и высоту строк с помощью мыши. Можно также с помощью мыши перемещать строки и столбцы таблицы.

Если вся таблица не умещается в поле, которое для нее отведено, то автоматически появляются линейки скроллинга (если они не запрещены), с помощь которых можно просматривать содержимое таблицы.

Для редактирования текстов используется специальный редактор класса TInplaceEditor. Этот редактор позволяет изменять содержимое любой ячейки (если редактирование разрешено) за исключением фиксированных ячеек. У редактора есть свойство Grid , определяющее то, что он используется совместно с таблицей. Grid – это свойство типа TСustomGrid, содержащее указатель на таблицу, с которой связан редактор.

Приведем некоторые из свойств класса TCustomGrid, при помощи которых можно задать нужный вид таблицы.

ColCount – свойство целого типа, задающее число столбцов.

RowCount – свойство целого типа, задающее число строк таблицы.

Col - свойство целого типа, задающее столбец, в котором находится активная ячейка.

Row – свойство целого типа, задающее строку таблицы, в которой находится активная ячейка.

DefeultColWidth – свойство целого типа задает исходную ширину всех столбцов. Для индивидуального задания ширины отдельных столбцов используется свойство ColWidths.

ColWidths – свойство-массив целого типа с индексами целого типа, задающие ширину каждого столбца.

DefeultRowHeight – свойство целого типа задает исходную высоту всех строк. Для индивидуального задания высоты отдельных строк используется свойство RowHeights.

RowHeights – свойство-массив целого типа с индексами целого типа, задающее высоту каждой строки.

DefeultDrawing – свойство логического типа. Если задано значение true, то содержимое ячеек отображается автоматически. Если задано значение false, то необходимо создавать свои средства для отображения информации.

FixedCols – свойство целого типа задает число фиксированных столбцов (по умолчанию – один).

FixedRows – свойство целого типа задает число фиксированных строк ( по умолчанию – одна).

Примечание. Фиксированные ячейки нельзя редактировать в процессе выполнения программы.

FixedColor – свойство целого типа TСolor задает цвет фиксированных ячеек.

GridLineWidth – свойство целого типа задает толщину линий между ячейками в пикселах.

LeftCol – свойство целого типа, задающее самый левый столбец таблицы, видимый на экране, не считая фиксированных столбцов.

TopRow – свойство целого типа, задающее самую верхнюю строку таблицы, видимую на экране, не считая фиксированных строк.

VisibleRowCount – свойство целого типа, определяющее число полностью видимых столбцов таблицы на экране, не считая фиксированных.

VisibleColCount – свойство целого типа, определяющее число полностью видимых строк таблицы на экране, не считая фиксированных.

ScrollBars – свойство, определяющее наличие линеек скроллинга.

ssNone – нет линеек,

ssHorizontal – горизонтальная,

ssVertical – вертикальная,

ssBoth – обе линейки.

Selection – свойство, задающее прямоугольник (фактически своими левой верхней и правой нижней ячейками), охватывающий все выделенные ячейки.

Свойства не отражающиеся в списке, но необходимые для функционирования таблицы.

InplaceEditor – свойство типа TInplaceEdit задает встроенный текстовый редактор.

TСustomGrid(x, y) – функция возвращает номер столбца и строки таблицы для координат мыши X и Y (пикселях). Возвращаемый результат имеет тип TGridCoord:

type

TGridCoord=record

X: Longint;

Y: Longint;

End;

Где X – номер столбца таблицы; Y – номер строки таблицы.

TabStops – свойство-массив логического типа с индексами целого типа задает для каждого столбца возможность выделения с помощью клавиши Tab.

Options – свойство типа TGridOptions, задающее флаги, определяющие поведение таблицы. Тип TgridOptions формируется на основе типа TGridOption:

TGridOptions =set of TGridOption;

тип TGridOption, имеет следующий вид:

TGridOption=(goFixedVertLine, goFixedHorzline, goVertLine, goHorzLine, goRangeSelect, goDrawFocusSelected, goRowSizing, goColSizing, goRowMoving, goColMoving, goEditing, goTabs, goRowSelect, goAlwaysShowEditor, goThumbTracking);

Где индентификаторы означают следующее:

GoFixedVertLineфиксированные ячейки разделены вертикальными линиями;

goFixedHorzline - фиксированные ячейки разделены горизонтальными линиями;

goVertLine – остальные ячейки разделяются вертикальными линиями;

goHorzLine – остальные ячейки разделяются горизонтальными линиями;

goRangeSelect – допустимо выделение нескольких ячеек;

goDrawFocusSelected – активная ячейка закрашивается тем же цветом, которым выделяется и выделенная, в противном случае закрашивается цветом нейтральных ячеек;

goRowSizing – высота строк может изменяться;

goColSizing – ширина столбцов таблицы может изменяться;

goRowMoving – строки таблицы могут перемещаться;

goColMoving – столбцы таблицы могут перемещаться;

goEditing – ячейки могут редактироваться;

goTabs – переход от ячейки к ячейке возможен с помощью клавиши Tab;

goRowSelect – выделение только целых строк таблицы;

goAlwaysShowEditor – при выделении ячейки она сразу же становится активной (в противном случае должна бать активизирована);

goThumbTracking – перемещение подвижной части таблицы синхронно с перемещением ползунка линейки скроллинга (в противном случае перемещение осуществляется только после того, как ползунок будет отпущен).

2Таблица DrawGrid

Эта таблица в первую очередь предназначена для размещения графической информации (возможно вместе с текстовой информацией). Для класса ТDrawGrid заданы многие такие же события, что и для других компонент, например, OnClick, OnEnter, OnExit, OnKeyPress, OnMouseUp и другие. Вместе с тем, заданы специальные события, возникающие при различных манипуляциях ячейками таблицы. Опишем некоторые из них.

OnDrawCell – событие, возникающее, когда необходимо перерисовать содержимое ячейки.

OnColumnMoved – событие, возникающее, когда столбец таблицы перемещается с помощью мыши и для свойства Options задан флаг goColMoving.

OnGetEditMask – событие, возникающее, когда необходимо перерисовать содержимое ячейки и для свойства Options задан флаг goEditing. С помощью этого события задается маска для текста ячейки.

OnGetEditText – событие, возникающее, когда необходимо перерисовать содержимое ячейки и для свойства Options задан флаг goEditing. С помощью этого события задается исходное значение текста ячейки.

OnRowMoved – событие, возникающее, когда строка таблицы перемещается с помощью мыши и и для свойства Options задан флаг goColMoving.

OnSetEditText – событие, возникающее после завершения редактирования текста ячейки.

Так как работа с таблицей – это, в первую очередь, работа с ячейками, то имеется ряд методов, позволяющих найти размеры тех или иных ячеек или преобразовать одни координаты в другие.

CellRect(Col, Row) – функция, определяющая прямоугольник, который занимает ячейка в столбце Col и строке Row. Используя этот метод, можно сделать ячейку цветной.

MouseToCell(X, Y, Col, Row) – процедура, преобразующая координаты мыши X и Y в координаты Col и Row ячейки, на которой находится курсор мыши.

При помощи метода Selection можно выделить прямоугольник из ячеек, например оператор

StringGrid1.Selection := Rect(3,1,2,4);

позволяет выделить прямоугольник из четырех ячеек с индексами (3,1), (3,2), (4,1) и (4,2).

Свойство TopRow позволяет задать самую верхнюю строку, которая будет видна на экране. Это свойство можно использовать, например, когда таблица не имеет линеек прокрутки, а все строки не помещаются в поле таблицы. В этом случае, используя свойство TopRow, можно увидеть невидимые строки, если сделать верхней нужную строку. Например, оператор

StringGrid1.TopRo :=5;

делает верхней пятую строку. А если применить оператор

StringGrid1.TopRo :=StringGrid1.RowCount;

то верхней будет последняя стока таблицы.

Аналогично, для столбцов можно использовать свойство LeftCol, которое задает самый правый столбец видимый на экране.

П
ример
. Создадим таблицу класса DrawGrid, в которой в верхней строке будет случайным образом закрашиваться одна из ячеек и затем «падать» вниз.

Для этого разместим на форме компоненту DrawGrid из страницы Additional. В инспекторе объектов задавим свойству ColCount значение 10, а свойству RowCount значение12. Теперь наша таблица имеет 10 столбцов и 12 строк. Для того, чтобы избавится от фиксированных строк зададим свойствам FixedCols и FixedRows значение 0. Изменим размеры таблицы таким образом, чтобы ячейки полностью заняли все ее пространство (чтобы не было линеек скроллинга). Зададим свойству DefaultDrawing значение False, а свойству ScrollBars – значение ssNone.

Теперь создадим кнопку Batton1 и в инспекторе объектов кнопки зададим свойству Caption значение «Пуск». На странице Events инспектора объектов для кнопки Batton1 активизируем мышью (двумя щелчками) событие OnClick и в заготовку обработчика события поместим следующий текст:

procedure TForm1.Button2Click(Sender: TObject);

var n:integer;

a: array [1..10,1..2] of longint;

i,j,c,k:longint;

Rect:TRect;

begin

Randomize;

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее