Привет, мои дорогие друзья и подписчики :) Не так давно с одним учеником разбирали домашнюю задачку по программированию. Цель задачи была в том, чтобы разобрать основы работы с таблицами в среде разработки Lazarus, ну и немного связать эту работу с другими компонентами.
Для начала немного истории
Lazarus является открытой средой разработки на языке программирования Object Pascal для компилятора Free Pascal. Данная IDE (Integrated Development Environment) позволяет создавать кроссплатформенные приложения, а потом переносить их под Linux, FreeBSD, Mac OS, Windows, Android.
Благодаря стараниям фирмы Apple Computer в 1986 году появился язык Object Pascal, который мог полноценно работать с объектами. В 1994 году свет увидел первую версию Delphi. Это была графическая IDE для быстрой разработки под Windows. Естественно, это привело к хорошему к быстрому развитию в разработке ПО. Ведь разработку интерфейса теперь можно было осуществлять с помощью конструктора форм, что давало возможность накидать простейшую оконную программу одной лишь мышкой.
Но была одна проблема. Эта среда разработки была платной, что сделало её недоступной для многих образовательных учреждений. Поэтому начались работы над проектом FPC (Free Pascal Compiler), первая версия которого появилась в июле 2000 года. Она была бесплатной и поддерживала несколько платформ: Windows, Linux, FreeBSD, Mac OS X. Немного позже появился Lazarus, ставший первой в мире бесплатной IDE для разработки программ с использованием компилятора FPC. Lazarus распространяется под лицензией GNU GPL (General Public License).
Где скачать Lazarus ?
Как говорилось ранее, это бесплатный продукт. Скачать его можно на официальном сайте: https://www.lazarus-ide.org/
Задача
Создать таблицу StringGrid, для этого: в поля ввода задать:
1. Количество строк
2. Количество столбцов
3. Количество фиксированных строк
4. Количество фиксированных столбцов
Для изменения цвета фиксированной зоны создать 3 командных кнопки (для разных цветов). Для изменения цвета рабочей зоны создать 3 командных кнопки (для разных цветов).
Создать поле ввода и 2 командные кнопки:
1 команда кнопка выводит строку с номером, заданным в поле ввода.
2 команда кнопка выводит столбец с номером, заданным в поле ввода.
Вывод строки или столбца осуществляется в поле Memo.
Реализация
При первом запуске IDE Lazarus появляется следующее:
Также стоит кратко поговорить о том коде, который генерирует студия в самом начале:
Для реализации данной задачи нам необходимо:
1. Накидать на форму необходимые компоненты интерфейса, такие как таблица (StringGrid), поля ввода (Edit), подписи-подсказки (Label), компонент для вывода информации (Memo), кнопки (Button). Всё это можно найти на палитре компонентов.
2. Проследить за тем, чтобы по нажатию на кнопки срабатывали события (Event) onclick. Также во время создания формы (событие oncreate) удобно генерировать таблицу с помощью заполнения произвольными числами. А ещё при изменении Edit-ов, отвечающих за количество строк и столбцов, нужно обновлять таблицу динамически.
3. Из полей ввода мы должны считывать числа. Но если мы забудем ввести туда число, то программа не должна сломаться, если попытается спарсить пустую строку. По-хорошему, надо бы также исключить возможности ввода текста в те поля, где мы ожидаем числа. А числа мы ожидаем во всех Edit'ах в данной программе. Но не будем загромождать код всеми проверками. Будем считать, что пользователь вводит только числа.
4. По сути, весь код можно написать в процедурах, которые генерируется при срабатывании определенных событий. Отдельно можно сделать функцию для генерации числа в заданном диапазоне - get_random_number() и процедуру заполнения таблицы случайными числами - FillTable().
Как генерировать процедуры по событиям?
Выделяем на форме нужный компонент. Смотрим в инспектор объектов слева. Выбираем в нем вкладку события. Выбираем нужно событие и двойным щелчком левой кнопки мыши по полю справа от нужного события генерируем это событие в редакторе кода. У нас появляется процедура, в которую мы можем написать тот код, который будет выполняться при наступлении соответствующего события (это может быть нажатие на кнопку, изменение поля ввода, создание формы и т.д.)
Исходный код программы
Архив с программой будет доступен в моем telegram канале Репетитор IT mentor ( @mentor_it )
Компиляция программы и пример работы:
Немного полезного материала для начинающих:
Краткое введение в современный Object Pascal для программистов (PDF)
Статья по программированию на Lazarus
Понравился разбор задачи ? Поставьте лайк, подпишитесь на канал! Вам не сложно, а мне очень приятно :)
Если Вам нужен репетитор по физике, математике или информатике/программированию, Вы можете написать мне или в мою группу Репетитор IT mentor в VK
Библиотека с книгами для физиков, математиков и программистов
Репетитор IT mentor в Instagram
Репетитор IT mentor в telegram