Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь КАТЕГОРИИ: АрхеологияБиология Генетика География Информатика История Логика Маркетинг Математика Менеджмент Механика Педагогика Религия Социология Технологии Физика Философия Финансы Химия Экология ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Интерфейс пользователя для проекта
Интерфейс разрабатываемого проекта представлен на рисунке 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 с.) |