Приложения для обработки строк, массивов и файлов

Страницы работы

Фрагмент текста работы

396             Урок 13. Приложения для обработки строк, массивов и файлов


Создание табеля с оценками опишите в процедуре обработчика события создания формы Form1. Для этого выберите в окне Инспектора объектов объект Form1 и на странице События сделайте двойной щелчок мышью на пустом поле списка в событии OnCreate, наступающем при создании формы. После этого в окне Редактора кода будет сгенерирована заготовка процедуры обработчика события procedure TForml.FormCreate(Sender: TObject);.

Вставьте в текст модуля main перед разделом implementation описание раздела констант и переменных, задающих постоянные параметры массива и столбцов StringGrid1:

const COLWIDTHS : array[0..5] of integer=(85.70.70.70.70,60);

{ширина столбцов таблицы}

COLTITLES : аггау[0..5] of string=('Предмет','1-я четверть','2-я четверть','3-я четверть','4-я четверть','годовая');

{шапка таблицы}

{вариант выравнивания}

{объект Form1} {ширина курсора}

COLALIGNS : array[0..5] of byte=(1.2.2.2,2,2);

var

Form1: TForm1;

Col All:integer;

Отредактируйте заготовку процедуры обработчика этого события следующим образом:

procedure TForml.FormCreate(Sender: TObject);

var I,J:integer;

К : real;

begin

for i:=0 to 5 do

begin

Inc(ColAll,C0LWIDTH5[i]+l);

{Подсчет общей ширины для курсора}

StringGridl.ColWidths[i] := COLWIDTHS[i];

{Установка ширины колонок}

StringGridl.Cells[ i.0 ] := COLTITLES[i];

{Установка шапки таблицы}

end;

with StringGrid1 do begin      {Массив сданными успеваемости}

Cells[ 0, 1]

='Русский язык';

Cells[ 0, 2]

= 'Математика';

Cells[ 0, 3]

= 'История';

Cells[ 0, 4]

='География':

Cells[ 0. 5]

='Музыка';

{Оценки за 1-ю четверть - 2-й столбец}


Использование компонента StringGrid для представления двухмерных массивов        397

Cells[ 1,

1]

= '5'

Cells[ 1,

2]

= '4'

Cells[ 1.

3]

= '4'

Cells[ 1.

4]

= '4'

Cells[ 1.

5]

= '5'

{Оценки за 2-ю четверть - 3-й столбец}

Cells[ 2.

1]

= '4'

Cells[ 2.

2]

= '2'

Cells[ 2.

3]

= '4'

Cells[ 2.

4]

= '5'

Cells[ 2.

5]

= '3'

{Оценки за 3-ю четверть - 4-й столбец}

Cells[ 3,

1]

= '5'

Cells[ 3.

2]

= '2'

Cells[ 3.

3]

= '3'

Cells[ 3,

4]

= '4'

Cells[ 3.

5]

= '5'

{Оценки за 4-ю четверть - 5-й столбец}

Cells[ 4,

1]

= '4'

Cells[ 4,

2]

= '3'

Cells[ 4,

3]

= '4'

Cells[ 4.

4]

= '5'

Cells[ 4.

5]

= '5'

{6-й столбец: вычисление оценок за год как среднего арифметического оценок за 4 учебные четверти} for I:=1 to 5 do begin К:=0; for J:=l to 4 do

K:=K+StrToInt(Cells[J,I]): K:=K/4:                                             {вычисление среднего балла за год}

Cells[J.I]:-FloatToStr(K): end; end; end;

Как видно из текста процедуры, сначала задаются параметры «шапки» таблицы, затем задаются элементы массива: названия предметов и оценки за 1—4-ю четверти. В заключительном фрагменте процедуры вычисляется оценка за год как среднее арифметическое оценок по предмету за все четверти.


398            Урок 13. Приложения для обработки строк, массивов и файлов


Для раскраски ячеек StringGridl создайте процедуру обработчика события OnDrawCell, для чего выберите в окне Инспектора объектов объект StringGrid и на странице Свойства сделайте двойной щелчок мышью на пустом поле списка в событии OnDrawCell. После этого отредактируйте заготовку процедуры обработчика этого события следующим образом:

procedure TForm1,StringGridlDrawCell(Sender: TObject: Col. Row: Integer: Rect: TRect; State: TGridDrawState);

var

CurrCel1:String:                                       {текущая ячейка}

begin

with TStringGrid(sender).Canvas,Rect do

begin

CurrCe11:=TStringGnd(sender).Ce11s[Col.Row];

Bottom:=Bottom+l;

Font.Color:=clBlack:                              {цвет шрифта}

Brush.Color:=clWhite;                           {цвет закраски}

if Row<l then begin                             {если нулевая строка, то рисуем шапку таблицы}

Bfush.Color:=clBtnFace:        {цвет закраски - текущий цвет кнопок}

Bottom:-Bottom-1;

DrawEdge(Handle, Rect. BDR_RAISEDINNER, BF_TOPRIGHT or

BF_MIDDLE or BF_B0TT0MLEFT):

InflateRect(Rect,-2,-2):

TextRect(Rect,Left- 2+((COLWIDTHS[Col]TextWidth(CurrCell))shr 1). Top-2,CurrCell):

exit:

end; case

Col

of

0:

brush.Color

=clBlue

1

.4:

brush.Color

=clAqua

{закраска ячеек в разных столбцах}

{нулевой столбец синий} {первый - четвертый столбцы -голубые}

{цвет закраски пятого столбца и цвет шрифта символов зависит от значения ячейки} if StrToFloat(CurrCell)<3 then begin brush.Color:=clRed;      {если оценка <3, то цвет закраски красный}


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


399


Font.Colог;=с1Aqua;      {цвет шрифта символов голубой} end else

if StrToFloat(CurrOell)<4 then begin brush.Color:=clYellow; {если оценка <4, то цвет закраски желтый}


 


Font.Color:=clOlive;

{цвет шрифта символов

оливковый}

end

else

begin

brush.Color;=clGreen;

{иначе - цвет закраски

зеленый}

Font.Color:=clYellow;

{цвет шрифта символов желтый

end;

end;

{выравнивание значений в столбцax(COLALIGNS)}

case COLALIGNS[Col] of 1; TextRect(Rect.Left,Top.CurrCell);                            {влево}

2; TextRect(rect,Left+((COLWIDTHS[Col]TextWidth(CurrCell)) shr 1).Top.CurrCell); {по центру} end;

{левая граница} {верхняя граница} {правая граница} {цвет}

{рисование курсора выделения строки} if (Row=TStringGrid(sender).Row) then begin Left:=0;

Bottom:=Bottom-1; Right:=ColAll; Brush. Color:=clBlack; TStringGrid(sender).Canvas.FrameRect(Rect):    {курсор в таблице} end; end; end;

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


Проверьте работу приложения. Закройте окно приложения и задайте другие значения элементов массива, например, изменив оценки за 4-го четверть, как показано далее:

Cells[ 4, 1]:='5'; Cells[ 4. 2]:='4'; CelIs[ 4, 3]: = '3'; Cells[ 4, 4]:='4'; Cells[ 4, 5]:='3';

Сохраните изменения в проекте, перекомпилируйте и запустите приложение. Обратите внимание на то, что с изменением значения среднего балла

Похожие материалы

Информация о работе