Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Компонент StringGrid




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

 

AnsiString Cells [int Acol][int ARow] Строка, содержащаяся в ячейке с индексами столбца и строки AColи ARow
TStrings* Cols[int Index] Список столбцов и связанных с ними объектов, содержащихся в столбце с индексом Index
TStrings* Rows[int Index] Список строк и связанных с ними объектов, содержащихся в строке с индексом Index
TObject* Object [int ACol][int ARow] Объект, связанный со строкой, содержащийся в ячейке с индексами столбца и строки AColиARow

 

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

Свойства ColCount и RowCount определяют соответственно число столбцов и строк, свойства FixedCols и FixedRows − число фиксированных (непрокручиваемых) столбцов и строк. Цвет фона фиксированных ячеек определяется свойством FixedColor.

Из множества подсвойств свойства Options отметим важное − goEditing − возможность редактировать содержимое таблицы.

В основном компонент StringGrid используется для выбора пользователем каких-то значений, отображенных в ячейках. Свойства Col и Row показывают индексы столбца и строки выделенной ячейки.

Среди множества событий компонента StringGrid отметим событие OnSelectCell, возникающее в момент выбора пользователем ячейки. В обработчик этого события передаются целые параметры ACol и ARow ( индексы столбца и строки выделенной ячейки) и булев параметр CanSelect − допустимость выбора. Этот параметр можно использовать для запрета выделения ячейки, задав его значение равным false.

Рассмотрим использование компонента StringGrid при вычислении произведения двух матриц.

1. Создайте новый проект и сразу сохраните файл модуля и проект под разными именами в созданной ранее папке.

2. В правый верхний угол пустой формы поместите первую кнопку, в свойство Caption впишите конец, а в обработчик − Close();

Примечание. Во всех компонентах приложения используйте шрифт полужирный, размером 10.

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

4. Под первой меткой поместите первый компонент ввода целых чисел − CSpinEdit1 (со страницы Примеры библиотеки компонентов). В свойство MaxValue занесите 10, MinValue − 0, Value − 3.

5. Под первым CSpinEdit1 поместите первый компонент StringGrid1 ( первую таблицу ), слева от него − вторую метку и назовите ее число строк, под меткой поместите второй компонент CSpinEdit2 и установите в нем те же значения свойств, что и в первом.

6. Правее первой таблицы поместите вторую кнопку, назовите ее ввод 1-й матрицы, а в обработчик впишите

int i,j;

Caption="";

StringGrid3->RowCount=0;

StringGrid3->ColCount=0;

StringGrid3->Cells[0][0]="";

StringGrid1->RowCount=CSpinEdit1->Value;

StringGrid1->ColCount=CSpinEdit2->Value;

for(i=0;i<StringGrid1->RowCount;i++)

for(j=0;j<StringGrid1->ColCount;j++)

StringGrid1->Cells[j][i]=IntToStr(random(101)-50);

7. Для первого компонента StringGrid1 установите: FixedCols − 0, FixedRows − 0, в подсвойстве goEditing свойства Optionsfalse. На этом подготовка компонентов для формирования первой матрицы завершается.

8. Подготовка компонентов для формирования второй матрицы произведения совпадает с подготовкой для первой матрицы, только в подсвойство goEditing свойства Options второго компонента StringGrid2 внесите true, третью кнопку назовите ввод 2-й матрицы, а в обработчик щелчка по ней впишите

Caption="";

StringGrid3->RowCount=0;

StringGrid3->ColCount=0;

StringGrid3->Cells[0][0]="";

StringGrid2->RowCount=CSpinEdit3->Value;

StringGrid2->ColCount=CSpinEdit4->Value;

9. Итак, вторая таблица с ее компонентами находится на форме под первой таблицей. Третью таблицу (для матрицы-произведения) поместите под второй, а справа от третьей таблицы − четвертую кнопку с названием произведение, в обработчик щелчка по которой впишите

int i,j,k,z;

if(StringGrid1->ColCount!= StringGrid2->RowCount){

Caption="число столбцов 1-й матрицы не равно числу строк 2-й матрицы!";

return;}

StringGrid3->RowCount=CSpinEdit1->Value;

StringGrid3->ColCount=CSpinEdit4->Value;

for(i=0;i<StringGrid1->RowCount;i++)

for(j=0;j<StringGrid2->ColCount;j++){

z=0;

for(k=0;k<StringGrid1->ColCount;k++)

z+=StrToInt(StringGrid1->Cells[k][i])*

StrToInt(StringGrid2->Cells[j][k]);

StringGrid3->Cells[j][i]= IntToStr(z);

}

Свойства третьего компонента StringGrid3 установите такими же, как у первого компонента StringGrid1.

10. Сохраните проект и запустите на выполнение. Для ввода первой матрицы достаточно нажать на соответствующую кнопку. Для ввода второй матрицы после щелчка на кнопке ввод 2-й матрицы нужно заполнить предложенные ячейки второй таблицы. Для получения матрицы-произведения достаточно щелкнуть на кнопке произведение. Чтобы быстро убедиться в правильности вычислений, сделайте вторую матрицу единичной. Проверьте соотношение числа строк и столбцов матриц-сомножителей для получения матрицы-произведения.

11. Для завершения работы с приложением щелкните на кнопке конец.





Поделиться с друзьями:


Дата добавления: 2015-10-01; Мы поможем в написании ваших работ!; просмотров: 1165 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Логика может привести Вас от пункта А к пункту Б, а воображение — куда угодно © Альберт Эйнштейн
==> читать все изречения...

2303 - | 2226 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.