Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 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; просмотров: 276; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.236 (0.008 с.) |