- •Федеральное агентство по образованию государственное образовательное учреждение
- •Кафедра автоматики и телемеханики интегрированная среда разработки приложений
- •Лабораторная работа 1 Ознакомление с Интегрированной Средой Разработки (иср)
- •Основное окно иср
- •Библиографический список
- •Лабораторная работа 2 Формы и компоненты Включение в проект новой формы
- •Размещение компонентов на форме
- •Депозитарий – хранилище форм и проектов
- •Задание 7. Опробовать режимы заимствования форм из Депозитария
- •Библиографический список
- •Лабораторная работа 3 Отладка приложений Компиляция и компоновка проекта
- •Сообщения компилятора и компоновщика
- •Действия в случае ошибки выполнения
- •Дальнейшие действия
- •Окно наблюдения Список Часов
- •Окно оценки и модификации Оценить|Изменить
- •Пошаговое выполнение приложения
- •Точки прерывания
- •Использование окна Инспектора Отладки
- •Другие средства отладки
- •Библиографический список
- •Лабораторная работа 4 Компоненты ввода и отображения текстовой информации
- •Компоненты Label, StaticText, Panel
- •Компоненты Edit, LabeledEdit, MaskEdit
- •Компоненты Memo, RichEdit
- •Компоненты ListBox, CheckListBox, ValueListEditor
- •Компонент StringGrid
- •Библиографический список
- •Лабораторная работа 5 Диаграммы и графики Компонент Chart
- •Компонент Image
- •Формирование квадратных матриц
- •Кнопки, индикаторы, управляющие элементы
- •Управляющие кнопки Button и BitBtn
- •Кнопка с фиксацией SpeedButton
- •Группы радиокнопок − компоненты RadioGroup, RadioButton и GroupBox
- •Индикаторы CheckBox и CheckListBox
- •Ползунки и полосы прокрутки − компоненты TrackBar и ScrollBar
- •Заголовки − компоненты HeaderControl и Header
- •Таймер − компонент Timer
- •Панели и компоненты внешнего оформления
- •Панели общего назначения − компоненты Panel,
- •Многостраничные панели − компоненты TabControl,
- •Инструментальные панели − компоненты ToolBar и PageScroller
- •Перестраиваемые панели − компоненты CoolBar и ControlBar
- •Библиографический список
- •Лабораторная работа 9 Системные диалоги
- •Диалоги открытия и сохранения файлов – компоненты
- •Фрагменты диалогов – компоненты
- •Диалог выбора шрифта – компонент FontDialog
- •Диалоги выбора цвета – компоненты ColorDialog, ColorBox
- •Диспетчеризация действий на основе компонента ActionList
- •Диспетчеризация действий на основе компонентов ActionManager, ActionMainMenuBar, ActionToolBar, CustomizeDlg
- •Библиографический список
Компонент 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 при вычислении произведения двух матриц.
Создайте новый проект и сразу сохраните файл модуля и проект под разными именами в созданной ранее папке.
В правый верхний угол пустой формы поместите первую кнопку, в свойство Caption впишите конец, а в обработчик − Close();
Примечание. Во всех компонентах приложения используйте шрифт полужирный, размером 10.
Начнем подготовку компонентов для формирования первой матрицы произведения. В верхней части формы, посредине, поместите первую метку и назовите ее число столбцов.
Под первой меткой поместите первый компонент ввода целых чисел − CSpinEdit1 (со страницы Примеры библиотеки компонентов). В свойство MaxValue занесите 10, MinValue − 0, Value − 3.
Под первым CSpinEdit1 поместите первый компонент StringGrid1 (первую таблицу), слева от него − вторую метку и назовите ее число строк, под меткой поместите второй компонент CSpinEdit2 и установите в нем те же значения свойств, что и в первом.
Правее первой таблицы поместите вторую кнопку, назовите ее ввод 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);
Для первого компонента StringGrid1 установите: FixedCols − 0, FixedRows − 0, в подсвойстве goEditing свойства Options − false. На этом подготовка компонентов для формирования первой матрицы завершается.
Подготовка компонентов для формирования второй матрицы произведения совпадает с подготовкой для первой матрицы, только в подсвойство goEditing свойства Options второго компонента StringGrid2 внесите true, третью кнопку назовите ввод 2-й матрицы, а в обработчик щелчка по ней впишите
Caption="";
StringGrid3->RowCount=0;
StringGrid3->ColCount=0;
StringGrid3->Cells[0][0]="";
StringGrid2->RowCount=CSpinEdit3->Value;
StringGrid2->ColCount=CSpinEdit4->Value;
Итак, вторая таблица с ее компонентами находится на форме под первой таблицей. Третью таблицу (для матрицы-произведения) поместите под второй, а справа от третьей таблицы − четвертую кнопку с названием произведение, в обработчик щелчка по которой впишите
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.
Сохраните проект и запустите на выполнение. Для ввода первой матрицы достаточно нажать на соответствующую кнопку. Для ввода второй матрицы после щелчка на кнопке ввод 2-й матрицы нужно заполнить предложенные ячейки второй таблицы. Для получения матрицы-произведения достаточно щелкнуть на кнопке произведение. Чтобы быстро убедиться в правильности вычислений, сделайте вторую матрицу единичной. Проверьте соотношение числа строк и столбцов матриц-сомножителей для получения матрицы-произведения.
Для завершения работы с приложением щелкните на кнопке конец.