Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка_Delphi_Ч2.doc
Скачиваний:
15
Добавлен:
02.11.2018
Размер:
1.7 Mб
Скачать
      1. Инициализация интерфейса

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

// Процедура підготовки до роботи

procedure TfrmRecord.FormCreate(Sender: TObject);

begin

//Настраиваем таблицу с исходными данными

with StringGrid1 do begin

ColCount :=4; RowCount :=5; FixedRows :=1;

//Заголовок таблицы в нулевой строке StringGrid1

Cells [0,0]:='Группа'; Cells [1,0]:='Студент';

Cells [2,0]:='Неуд.';Cells [3,0]:='Ср.балл';

//Несколько записей таблицы для ускорения отладки

Cells [0, 1] := 'КС051'; Cells [1,1]:='Чуб П.П.';

Cells [2, 1] := '0'; Cells [3,1] := '4,55';

Cells [0, 2] := 'КС051'; Cells [1,2] := 'Гай А.Л.';

Cells [2, 2] := '3'; Cells [3,2] := '1,55';

Cells [0, 3] := 'КС051'; Cells [1,3] := 'Кот А.В.';

Cells [2, 3] := '1'; Cells [3,3] := '2,45';

Cells [0, 4] := 'ЕМ051'; Cells [1,4] :=' Жир П.Р.';

Cells [2, 4] := '2'; Cells [3,4] := '2,00';

end;

//Настраиваем таблицу для обработанных данных

with StringGrid2 do begin

ColCount :=4; RowCount :=2; FixedRows :=1;

//Заголовок таблицы в нулевой строке StringGrid2

Cells [0,0] := 'Группа'; Cells [1,0] := 'Студент';

Cells [2,0] := 'Неуд.';Cells [3,0] := 'Ср.балл';

end;

end;

      1. Добавление строки в таблицу

Добавить строку в таблицу очень легко. Для этого достаточно увеличить количество строк компонента StringGrid1 на единицу. Соответствующую процедуру следует связать с кнопкой «Добавить». Код процедуры представлен ниже.

//Процедура введення додаткового рядка

procedure TfrmRecord.btnAddClick(Sender: TObject);

begin

StringGrid1.RowCount := StringGrid1.RowCount +1;

end;

      1. Удаление строки из таблицы

Эта процедура несколько сложнее, чем добавление. Для того чтобы удалить некоторую строку следует все остальные последовательно поднять на одну выше, а затем количество строк в компоненте уменьшить на единицу, что обрежет последнюю строку.

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

Код соответствующих подпрограмм приведен ниже.

// Функція, що читає запис із рядка StrinGrid

function recordFromRowGrid(sg: TStringGrid; row: integer): TAttRec;

// Функція, що читає запис із рядка StrinGrid

begin

result.group := sg.Cells [0, row];

result.fio := sg.Cells [1,row];

result.neud := strToInt(sg.Cells [2, row]);

result.srBall := strToFloat(sg.Cells [3, row]);

end;

// Процедура переносу запису у рядoк StrinGrid

procedure recordToRowGrid(rec: TAttRec; sg:TStringGrid; row: integer);

begin

sg.Cells [0, row] := rec.group;

sg.Cells [1, row] := rec.fio;

sg.Cells [2, row]:= intToStr(rec.neud);

sg.Cells [3,r ow]:= floatToStr(rec.srBall);

end;

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

Код процедуры удаления представлен ниже.

// Процедура вилучення поточного рядка із StringGrid

procedure TfrmRecord.btnDelClick(Sender: TObject);

var i, k: integer; r: TAttRec;

begin

k := StringGrid1.Row ; //Узнаем, какая строка активна

if k = 0 then exit;

//Переписуємо наступні рядки у попередні

for i := k to StringGrid1.RowCount - 2 do

begin

r := recordFromRowGrid(StringGrid1, i + 1);

recordToRowGrid(r, StringGrid1, i );

end;

// Обрезаем последюю строку

StringGrid1.RowCount := StringGrid1.RowCount - 1;

end;