Интерфейс пользователя для проекта 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Интерфейс пользователя для проекта



Интерфейс разрабатываемого проекта представлен на рисунке 10.2. Интерфейс проекта предполагает, что исходная информация будет храниться в ячейках компонента StringGrid1. Результаты обработки исходных данных будут записываться в компонент StringGrid2.

Добавить строку к исходным данным можно с помощью кнопки «Добавить пустую строку к таблице», а удалить текущую строку можно с помощью кнопки «Удалить текущую запись». Кнопка «Упорядочить по группе и фамилии» обеспечивает сортировку данных по группам, а в пределах групп по фамилиям.

Кнопка «Упорядочить по неуд. и ср.баллу» обеспечивает сортировку данных по количеству неудовлетворительных оценок, а при их равенстве, по среднему баллу.

При нажатии на кнопку «Выбрать ударников какой-то группы» должен появиться компонент InputBox, с помощью которого вводится нужная группа, после чего во втором окне появится список соответствующих студентов отсортированный по фамилиям..

При нажатии на кнопку «Подсчитать количество имеющих более 2-х хвостов» во втором окне появится список соответствующих студентов отсортированный по результатам успеваемости,а их количество будет выведено в окне MessageBox

Рисунок 10.2 – Интерфейс проекта

Определение типов данных

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

Тексты этих описаний для создаваемого проекта приведены ниже.

Type

TFio = String [20]; // тип для фамилии студента

TGroup = String [5]; // тип для группы

TAttRec = record //тип для записи

fio: TFio;

group: TGroup;

neud: integer;

srBall: real;

end;

// Тип для массива записей

TAttArray = Array [1..30] of TAttRec;

Инициализация интерфейса

При запуске проекта необходимо подготовить интерфейс так, чтобы было удобно с ним работать и проводить отладку. Для этого можно использовать процедуру обработки события 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;

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

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

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

procedure TfrmRecord.btnAddClick(Sender: TObject);

Begin

StringGrid1.RowCount:= StringGrid1.RowCount +1;

end;

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

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

Но для того, чтобы переносить записи из одной строки компонента в другую, целесообразно предварительно написать подпрограммы считывания записи из строки компонента 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; //Узнаем, какая строка активна

i f k = 0 then exi t;

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

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

b egin

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

recordToRowGrid(r, StringGrid1, i);

end;

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

StringGrid1.RowCount:= StringGrid1.RowCount - 1;

end;

 



Поделиться:


Последнее изменение этой страницы: 2017-02-07; просмотров: 206; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.130.31 (0.009 с.)