Разработка справочной системы по визуальным компонентам интегрированной среды разработки Lazarus

Интегрированная среда разработки Lazarus. Среда программных продуктов Lazarus, объекты программных компонентов. Палитра компонентов Standard, Additional. Разработка справочной системы: структура проекта, интерфейс программы, компоненты приложения.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 08.01.2023
Размер файла 695,2 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Курсовая работа (проект)

Разработка справочной системы по визуальным компонентам интегрированной среды разработки Lazarus

Ставрополь, 2022 г

Содержание

программа lazarus интерфейс приложение

  • ВВЕДЕНИЕ
  • Глава 1. Интегрированная среда разработки Lazarus
    • 1.1 Языки программирования: понятие, этапы развития, классификация
    • 1.2 Среда разработки программных продуктов Lazarus
    • 1.3 Основные объекты программных компонентов Lazarus
    • 1.3.1 Палитра компонентов Standard
    • 1.3.2 Палитра компонентов Additional
    • 1.3.3 Общие свойства компонентов
  • Глава 2. Разработка справочной системы по визуальным компонентам Lazarus
    • 2.1 Средства разработки
    • 2.2 Структура проекта
    • 2.3 Интерфейс программы
    • 2.4 Компоненты, использованные в приложении
  • Заключение
  • Список использованной литературы

Введение

Программирование требует от программиста усвоения огромного объема информации, однако, запомнить всё, что имеется в современных системах разработки не представляется возможным.

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

Поэтому удобнее всего иметь на компьютере справочное приложение, которое помогало бы находить нужную информацию.

Такое приложение облегчит жизнь начинающему программисту и поможет сэкономить время программисту опытному.

Цель курсовой работы: создать приложение, позволяющее получать справочную информацию по визуальным компонентам интегрированной среды разработки Lazarus.

Для достижения этой цели потребуется выполнить следующие задачи:

1. Ознакомиться с интегрированной средой разработки Lazarus.

2. Изучить справочные и учебные материалы по компонентам библиотеки интегрированной среды разработки Lazarus.

3. Разработать справочную систему по визуальным компонентам интегрированной среды разработки Lazarus.

Глава 1. Интегрированная среда разработки Lazarus

1.1 Языки программирования: понятие, этапы развития, классификация

Язык программирования- это формальная знаковая система, предназначенная для записи компьютерных программ.

Программа представляет собой набор инструкций для компьютера, позволяющих выполнить тот или иной вычислительный процесс, организовать управление различными объектами, и т.д.

Понятие «язык программирования»многие создатели трактуют по разному, но в итоге большинство сходится к тому, что язык программирования определяет набор правил (лексических, синтаксических и семантических), задающих внешний вид программы и действия, которые выполнит компьютер под ее управлением.[9]

В отличие от естественных языков, в языке программирования ограничен запас слов (операторов) и существуют строгие правила их написания, а правила синтаксиса и семантики однозначно и четко сформулированы.

Первым полноценным языком программирования стал язык Assembler - язык программирования низкого уровня, команды которого представляют собой удобную форму записи машинных команд с возможностью реализации базовых конструкций- переменных, перехода по метке, ветвления, цикла и макроопределения с параметрами.

После появления ассемблера языки программирования стали появляться один за другим.

На сегодняшний день в эволюции языков программирования насчитывается шесть поколений (Табл. 1), большинство из которых продолжает существовать и развиваться параллельно друг другу. [5]

Таблица 1 -Поколения языков программирования

Поколение

Типы языков

Годы появления

Первое

Машинные языки

Середина 40-х годов XX века

Второе

Ассемблеры

Конец 50-х годов XX века

Третье

Процедурные языки (Algol, Pascal, C)

Начало 60-х годов XX века

Четвертое

Языки поддержки сложных структур данных (SQL)

Конец 60-х годов XX века

Пятое

Языки искусственного интеллекта (Prolog)

Начало 70-х годов XX века

Шестое

Языки нейронных сетей

Середина 80-х годов XX века

По набору понятий языки программирования разделяются на высоко? и низкоуровневые. Первые предоставляют высокий уровень абстракции от оборудования и относятся к третьему поколению и выше (Pascal, C), вторые ? низкий, приближенный к машинному (ассемблер для любой архитектуры). Можно также выделить языки сверхвысокого уровня - языки для полностью абстрактных машин, такие как Prolog, SETL, APL, Miranda.

С позиции предметной области использования языки делятся на универсальные (процедурные) и специализированные (Prolog, Lisp). Универсальные языки позволяют реализовать любой алгоритм, пользуясь стандартным набором конструкций. [10]

С точки зрения методологии языки программирования можно разделить на следующие группы (Рис. 1):

Рисунок 1 - Классификация языков программирования по методологии языка

1.2 Среда разработки программных продуктовLazarus

Lazarus - это IDE для создания графических и консольных приложений при помощи компилятора Free Pascal. Free Pascal - это компилятор языков Pascal и Object Pascal, работающий под Windows, Linux, macOS, FreeBSD и другими ОС.

Интегрированная среда разработки программLazarusсодержит редакторы кода, форм, Инспектор Объектов, отладчик и многие другие инструменты. Можно также сказать, что среда Lazarus - это RAD (Rapid Application Development) - среда быстрой разработки приложений.

Среды быстрой разработки являются развитием концепции интегрированных сред разработки. Интегрированная среда разработки представляет собой пакет программ (компилятор, компоновщик, редактор исходного кода и отладчик),в основе быстрых средств разработки кроме того лежит идея визуального проектирования интерфейса при помощи редактора форм. Сама работа программы определяется совокупностью обработчиков событий. Событием называется действие пользователя или операционной системы. В средах быстрой разработки каждый элемент интерфейса представляет собой объект класса. Обработчик события представляет собой метод этого класса. Среда Lazarus совмещает обе концепции.

Кроме того, Lazarus бесплатная IDE, доступнаявсем разработчикам. Также Lazarus является проектом Open Source - проектом с открытым исходным кодом. Lazarus имеет поддержку множества языков, в том числе и русского.На текущиймомент Lazarus декларирует 90% совместимость с наиболее распространёнными диалектами Pascal: turbo и object, в свободном доступе имеются версии 2.2.х (stable release) и 2.3.х - (development release).

1.3 Основные объекты программных компонентовLazarus

Большинство современных операционных систем позволяют пользователям использовать два типа интерфейсов: консольный и графический. В консольном интерфейсе работа с компьютером осуществляется при помощи ввода текстовых команд. В графическом интерфейсе программы и данные представлены в виде графических элементов.

В основе графического интерфейса лежит окно. Будущее окно приложения - это форма, на которой будут размещаться необходимые элементы будущего окна приложения.

Визуальное программирование построено на понятии компонента.

Компонент - это некий виртуальный объект, который обладает своими свойствами и событиями, находится на Палитре компонентов, и который можно установить на форму. Структура компонента описывается формулой:

Компоненты, также как и форма являются некоторыми графическими объектами, каждый компонент реализован в виде класса. Суть визуального программирования заключается в том, что из набора компонентов библиотеки LCL на форму переносятся необходимые компоненты, производится их настройки и формируется дизайн программы. Компоненты, содержащиеся в библиотеке LCL (библиотеке Lazarus), находятся на Палитре компонентов. Палитра компонентов находится в главном окне Lazarus и содержит несколько вкладок (рис. 2).

Состояние компонента определяется его свойствами. Свойства бывают изменяемые (для чтения и записи) и неизменяемые (только для чтения). Помимо этого, свойства могут получать значения либо на этапе проектирования, либо только во время выполнения программы.

Рисунок 2 - Главное окно IDELazarus.

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

Поведение компонента описывается с помощью его методов -процедур и функций. Вызовы методов компонента помещаются в исходный код программы и происходят только во время выполнения приложения. Методы - это не визуальная часть компонента.

Реакция компонента на действия пользователя - это события. События позволяют, например, связать нажатие кнопки с вызовом метода формы. События реализуются с помощью свойств, содержащих указатели на методы, и именно обработка событий и является основной задачей программиста в среде визуального программирования.

Все компоненты делятся на две группы: визуальные и не визуальные.

Визуальные компоненты - это видимые элементы пользовательского интерфейса: кнопки, метки, блоки списков и др. Они выглядят одинаково и на стадии проектирования, и во время работы приложения.

Не визуальные компоненты можно в процессе проектирования расположить на форме, но при запуске приложения они не будут видны. К не визуальным компонентам относятся таймер, компоненты доступа к базам данным и др. Некоторые компоненты хоть и не визуальные, однако, могут отображать что-либо на экране, например, не визуальный компонент MainMenu отображает на форме полосу главного меню, а компонент OpenDialog - стандартное диалоговое окно выбора файла.

1.3.1 Вкладка Палитры компонентов Standard

На этой странице Палитры компонентов собраны основные интерфейсные элементы(табл. 2) большинства приложений.

Таблица 2 - Назначение компонентов страницы Standart

Компонент

Назначение

TMainMenu

Главное меню программы

TPopupMenu

Локальное меню

TButton

Командная кнопка

TLabel

Метка, ддля размещения однострочных надписей

TEdit

Однострочный текстовый редактор

TMemo

Многострочный текстовый редактор

TToggleBox

Зависимый переключатель

TCheckBox

Независимый переключатель

TRadioButton

Радиокнопка

TListBox

Список выбора

TComboBox

Комбинированный список выбора

TScrollBar

Линейка скроллинга (прокрутки)

TGroupBox

Группа элементов

TRadioGroup

Группа радиокнопок

TCheckGroup

Группа независимых переключателей

TPanel

Панель для объединения нескольких компонентов

TFrame

Группирующий компонент, аналог формы

TActionList

Список действий

1.3.2 Вкладка Палитры компонентов Additional

На этой странице Палитры компонентов с размещены дополнительные компоненты (табл. 3), которые используются во многих приложениях. Как правило, к этой палитре обращаются, если приложение предполагает дружественный интерфейс, использование графики в приложении и работу с информацией, структурированной в виде таблиц.

Таблица 3 - Назначение компонентов страницы Additional

Компонент

Назначение

TBitBtn

Командная кнопка с надписью и пиктограммой

TSpeedButton

Скоростная кнопка

TStaticText

Статический текст

TImage

Для размещения рисунков

TShape

Для размещения фигур

TBevel

Кромка

TPaintBox

Инструмент рисования

TNotebook

Произвольная таблица

TLabeledEdit

Комбинация однострочного редактора и метки

TSplitter

Разделитель

TTrayIcon

Иконка

TControlBar

Контейнер для управления панелями инструментов

TFlowPanel

Для размещения компонентов с возможностью автоматического распределения при изменении размеров формы

TMaskEdit

Однострочный редактор для ввода текста с маской

TCheckListBox

Список множественного выбора

TScrollBox

Блок с линейками прокрутки

TApplicationProperties

Свойства приложения

TStringGrid

Таблица строк

TDrawGrid

Таблица рисунков

TPairSplitter

Парный разделитель

TColorBox

Выбор цвета

TColorListBox

Список цветов

TValueListEditor

Cетка для редактирования списков строк

1.3.3 Общие свойства компонентов

У любого компонента всегда имеется свойство Name- это имя компонента, по сути, имя экземпляра класса компонента. По этому имени разработчик обращается к различным свойствам этого конкретного экземпляра.

Приведем общие свойства всех визуальных компонентов (табл. 4).

Таблица 4 - Общие свойства визуальных компонентов

Название

Описание свойства

Left и Top

Положение визуального компонента внутри формы (координаты левого верхнего угла компонента относительно левого верхнего угла формы)

Width и Height

Ширина и высота компонента

Anchors

Привязка границ компонента к границам формы. Если привязать границы компонента к форме, то они будут соответственно изменяться при изменении размеров формы. В Lazarus можно указать к какому конкретно объекту будет привязан компонент

Caption

Надпись на компоненте

Constraints

Задает ограничения на размеры компонента.

Color

Задает цвет компонента.

Cursor

Задает вид указателя мыши при наведении его пользователем на компонент.

Enabled

Определяет доступность компонента для пользователя. True означаетдоступностькомпонента для действий пользователя, False - недоступностьдля действий пользователя.

Font

Задает шрифт надписи (текста) компонента.

Hint

Подсказка, появляющаяся над компонентом, когда пользователь задерживает над ним указатель мыши на какое-то время. Разрешитьпоказ можно с помощью свойства ShowHint.

PopupMenu

Используется для привязки контекстного меню к компоненту. Это меню вызывается щелчокм правой кнопки мыши по компоненту.

Visible

Определяет видимость компонента на экране. True - компонент виден, False - компонент не виден.

События, общие для большинства визуальных компонентов:

OnClick- происходит в результате щелчка мыши по компоненту.

OnContextPopup- происходит при вызове контекстного меню.

OnDblClick- происходит в результате двойного щелчка мыши.

OnEnter- происходит при получении компонентом фокуса ввода. Когда компонент теряет фокус ввода, происходит событие OnExit.

OnKeyDown- происходит при нажатии пользователем любой клавиши (если компонент обладает фокусом ввода). При отпускании нажатой клавиши происходит событие OnKeyUp.

OnMouseDown- происходит при нажатии пользователем кнопки мыши, когда указатель мыши наведен на компонент. После отпускания кнопки мыши в компоненте происходит событие OnMouseUp.

Глава 2. Разработка справочной системы по визуальным компонентам Lazarus

2.1 Средства разработки

В качестве среды разработки была выбрана IDELazarus(версия 2.2.0). для разработки справочной системы также использовался HTML-код.

Выбор среды разработки обусловлен темой настоящей курсовой работы, так как логично использовать для разработки справочника по визуальным компонентам среды разработки Lazarus саму рассматриваемую систему, тем более, что она предоставляет все необходимые средства для разработки такого приложения.

Для разработки справочной системы также использовался HTML-код. Написание HTML-кода не требует специальных программных средств, в процессе работы использовался обычный текстовый редактор типа Блокнот.

2.2 Структура проекта

Основу разрабатываемого проекта составляет главный модуль проекта. Именно из него вызываются все основные модули системы. Главный модуль разрабатываемой системы называется HlpVisualComponentProject.lpr.

Остальные модули проекта подключаются к главному модулю. Всего в проекте 3 модуля, кроме главного. Это модули

fUnit, , hlpUnit- главное окно программы,

hlpUnit- модуль справочной информации,

ExampleUnit- модуль примера использования визуальных компонентов.

Все формы модулей создаются при запуске проекта и вызываются по мере необходимости.

Схема взаимодействия вышеперечисленных модулей приведена на рисунке 3.

Рисунок3 - Структура проекта

2.3Интерфейс программы

Интерфейс программы разрабатывался в соответствии со структурой проекта и поставленными задачами.

Главная форма программы (модуль fUnit) позволяет вызвать модули ExampleUnitи hlpUnit. На главном окне расположены название программы и кнопки, позволяющие перейти к справочнику, запустить иллюстрирующее приложение и завершить работу.

Внешний вид главной формы показан на рис. 4.

Рисунок4 - Главное окно программы.

Щелчок по кнопке «Открыть справку» главной формы вызывает окно модуля hlpUnit (рис. 6) и скрывает главную форму приложения. Щелчок по кнопке «Запустить пример приложения» вызывает модуль ExampleUnit(рис. 5) и скрывает главную форму приложения. Щелчок по кнопке «Выход» главной формы завершает работу всей программы.

Рисунок5 - Окно примера приложения (модуль ExampleUnit).

Окно примера демонстрирует некоторые свойства визуальных компонентов и выполнено для демонстрации некоторых фрагментов справочника.

В окне модуля hlpUnit(рис. 2.4) информация выводится на одну форму, при смене раздела меняется содержимое в информационном поле, но самоокно остается без изменений.

Рисунок 6 - Окно справочника по визуальным компонентам.

В левой части окна в виде дерева расположены заголовки разделов справочника. Над ними имеются две кнопки: «Сортировать» и «Отмена сортировки». Сортировка производится сначала по корневым элементам дерева справочника, а затем внутри каждой ветки отдельно в алфавитном порядке. Щелчок по кнопке «Вперед» выполняет переход к следующему разделу в списке слева, то есть, можно пройти по всем пунктам последовательно без исключения, в том числе и по подразделам. С последнего элемента в списке программа возвращается на начало списка.

Щелчок по кнопке «Назад» выполняет возврат по истории прочтений. То есть, если обучающийся посетил 1, 2, 3, 7, 4, 9 разделы (в сквозной нумерации), то последовательные щелчки по кнопке «Назад», выведут на экран соответственно по 4, 7, 3, 2, 1 разделы. Дойдя до конца списка пройденных разделов, программа перейдет на первоначальную заставку.

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

2.4Компоненты, использованные в приложении

В разработанном приложении используются следующие компоненты: TForm, TButton, TLabel, TBitBtn, TEdit,TMemo, TUpDown, TGroupBox, TRadioBox,Tpanel,TScrollBar, TBevel, TIpFileDataProvider,TIpHtmlPanel, TTreeView.

TLabel - компонент панели инструментов Standart, отображающий названия полей на главной форме. Его главное свойство - Caption, в этом свойстве задается и меняется при необходимости пояснительная надпись.

Компонент TEdit - стандартный элемент, однострочное текстовое поле. Основное свойство - Text, в него вводится или выводится значение.

Компонент TButton - это обычная командная кнопка, она используется для реализации команд с помощью обработчика события OnClick.

Компонент TBevel служит для визуального разделения окна.

Основное предназначение компонента TMemo - работа с большим количеством строк (ввод, отображение и редактирование текстового материала).

Компонент TUpDown позволяет изменять значения от минимального до максимального с определенным шагом, обычно привязан к какому-либо компоненту для вывода значения. В примере используется для перемещения фигуры TShape.

КомпонентTShapeслужит для создания фигур (треугольников, кругов или квадратов) на поверхности родительского компонента.

На форме, демонстрирующей некоторые визуальные компоненты(Form3), используется компонент TBitBtn - кнопка с возможностью добавления рисунка на кнопку и возможностью возврата модального результата. Она не требует программирования обработчика события OnClick, если выбрано конкретное свойство Kind.

Компонент TreeView служит для показа иерархических данных. Отображение имеет древовидную структуру, в которой можно выбрать необходимый узел или узлы. Нумерация узлов дерева ведется как по главным узлам, так и по сквозному принципу, начиная с 0.

Заполнить компонент TreeView можно из внешнего файла, хранящегося в рабочей папке Help. Такая организация вывода информации позволяет оперативно менять содержимое справочника без изменений в коде программы.

Все записи в TreeView имеют свой абсолютный индекс, начиная с 0, этот же индекс используется в наименовании файлов справки, каждый файл создается с типовым именем IndexNN.html и помещается в папку Help. По мере обращения файлы, содержащие в своем имени индекс выбранного раздела, выводятся на форму. Рисунки, использующиеся в файлах html, хранятся в папке Index.files и имеют подобную нумерацию: NN-mm.jpg, где NN - номер записи в списке разделов справки, mm - номер рисунка по порядку в файле справки.

Компонент TipHtmlPanel предназначен для отображения HTML-страницы, он является частью пакета Turbopower Internet Pro, обеспечивающий собственный доступ к HTML. Этот компонент доступен на вкладке Ipro палитры компонентов.

В компонент TIpHtmlPanel выводится справочная информация, хранящаяся в файлах с расширением html.Предварительно требуется связать этот компонент с невизуальным компонентом TipFileDataProvider через свойство DataProvider компонента TipHtmlPanel.

Компонент TIpFileDataProvider является интерфейсом между TipHtmlPanelи файловой системой и расположен на той же вкладке, что и TIpHtmlPanel. Компонент TIpFileDataProvider обрабатывает запросы на изображения и другие файлы и позволяет отображать HTML-файл в окне компонента TIpHtmlPanel.

В отличие от компонента TWebBrowser, имеющегося в Delphi, который использует InternetExplorer (IE), установленный в операционной системе Windows, компонент TIpHtmlPanel в Lazarus независим от IE. В этом его преимущество, но и недостаток также, поскольку отображение файлов HTML с использованием стилей, например, уже требует дополнительных усилий от программиста. Кроме того, этот компонент не принимает файлы, подготовленные, например, в Word, и поэтому требуется писать чистый код HTML. Но это небольшие недостатки в сравнении с возможностью редактирования справочника без переписывания кода приложения. То есть можно не только поменять список разделов справочника, но изменять само содержание справочника, дополняя его. При этом подойдёт даже Блокнот, поскольку рисунки можно вставить в текст, прописывая ссылку на них в HTML-код.

Выбор компонента TIpHtmlPanel для вывода различных разделов в одно окно значительно уменьшают размеры программы.

Заключение

В процессе выполнения настоящей курсовой работы мы познакомились с интегрированной средой разработки Lazarus, изучили различные ресурсы по компонентам библиотеки LCL.

В результате изучения информации были выделены общие свойства визуальных компонентов и их общие события, выделена основная информация по компонентам, а затем скомпонована в файлы html, чтобы быть включенной в справочную систему.

Также в результате выполнения настоящей курсовой работы было разработано приложение, которое реализует справочную систему по визуальным компонентам Lazarus на основе набора из html файлов, подключаемых к приложению по мере выбора соответствующей строки из списка компонентов.

Также к приложению был добавлен простой пример применения визуальных компонентов и изменения их свойств, чтобы начинающему программисту можно было не только изучить справку, но и увидеть некоторые компоненты в действии.

Поставленные в начале работы задачи были выполнены, цель курсовой работы достигнута.

Список использованной литературы

программа lazarus интерфейс приложение

1. Алексеев Е. Р., Чеснокова О. В., Кучер Т. В. Free Pascal и Lazarus: Учебник по программированию / Е. Р. Алексеев, О. В. Чеснокова, Т. В. Кучер - М. : ALT Linux ; Издательский дом ДМК-пресс, 2010. - 440 с.

2. Ачкасов В.Ю. Программирование на Lazarus/ В.Ю. Ачкасов - М.: Национальный Открытый Университет «ИНТУИТ», 2016. - 521 с.

3. ГуриковС.Р. Программирование в среде Lazarus. Учебное пособие. - М.: Издательство «Форум», 2019. - 336 с.

4. Мансуров К.Т. Основы программирования в среде Lazarus, 2010. - 772 с.

5. Одинцов И.О. Профессиональное программирование. Системный подход. - СПб.: БВХ-Петербург, 2004. - 624 с.

6. LCL Components/ru- [Электронный ресурс]- Режим доступа:https://wiki.lazarus.freepascal.org/LCL_Components/ru(дата обращения: 10.05.2022)

7. История версий Delphi. -URL:http://bourabai.ru/einf/Delphi/history.htm(дата обращения: 21.10.2017)

8. Lazarus. - [Электронный ресурс]- Режим доступа:https://gospodaretsva.com/category/lazarus(дата обращения: 21.10.2017)

9. Клейменова Е.М. АНАЛИЗ СОВРЕМЕННЫХ ЯЗЫКОВ ПРОГРАММИРОВАНИЯ // Материалы VIII Международной студенческой электронной научной конференции «Студенческий научный форум» -[Электронный ресурс]- Режим доступа: http://www.scienceforum.ru/2016/1508/20094(дата обращения: 10.05.2022).

10. Семухин С. О. Сравнительный анализ языков программирования // Научно-методический электронный журнал «Концепт». - 2015. - Т. 35. - С. 166-170. - [Электронный ресурс]- Режим доступа: http://e-koncept.ru/2015/95588.htm(дата обращения: 10.05.2022)

Приложение

Листинг приложения

unit fUnit;

{$mode objfpc}{$H+}

interface

uses

Classes, SysUtils, Forms, Controls, Graphics, Dialogs, LazHelpHTML, ComCtrls,

StdCtrls, Ipfilebroker, IpHtml;

type

{ TForm1 }

TForm1 = class(TForm)

BtnOk: TButton;

BtnExit: TButton;

Button1: TButton;

Label1: TLabel;

procedure BtnExitClick(Sender: TObject);

procedure BtnOkClick(Sender: TObject);

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

private

public

end;

var

Form1: TForm1;

ProgramPath:string;

implementation

uses hlpUnit,ExampleUnit;

{$R *.lfm}

{ TForm1 }

procedure TForm1.BtnExitClick(Sender: TObject);

begin

Form1.Close;

end;

procedure TForm1.BtnOkClick(Sender: TObject);

begin

Form1.Hide;

Form2.Show;

end;

procedure TForm1.Button1Click(Sender: TObject);

begin

Form1.Hide;

Form3.ShowModal;

Form1.Show;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

ProgramPath:=ExtractFileDir(ParamStr(0));

end;

end.

unit hlpUnit;

{$mode ObjFPC}{$H+}

interface

uses

Classes, SysUtils, Forms, Controls, Graphics, Dialogs, ComCtrls, ExtCtrls,

StdCtrls, IpHtml, Ipfilebroker, StrUtils;

type

{ TForm2 }

TForm2 = class(TForm)

Bevel1: TBevel;

Bevel2: TBevel;

Bevel3: TBevel;

Bevel4: TBevel;

btnExit: TButton;

btnBack: TButton;

btnNext: TButton;

btnSort: TButton;

btnCancelSort: TButton;

IpFileDataProvider1: TIpFileDataProvider;

IpHtmlPanel1: TIpHtmlPanel;

TreeView1: TTreeView;

procedure btnBackClick(Sender: TObject);

procedure btnCancelSortClick(Sender: TObject);

procedure btnExitClick(Sender: TObject);

procedure btnNextClick(Sender: TObject);

procedure btnSortClick(Sender: TObject);

procedure FormActivate(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure FormResize(Sender: TObject);

procedure TreeView1Click(Sender: TObject);

private

public

end;

mList=array[0..2,1..100] of string;

var

Form2: TForm2;

IdI, IdP: integer;

Stek: string;

FList:TextFile;

implementation

uses fUnit;

{$R *.lfm}

function StekPrev(var s:string):integer;

var i, k:integer;

begin

i:=Length(s);

if i=3 then

k:=-1

else

begin

while s[i]<>'/' do

i:=i-1;

k:=StrToInt(AnsiRightStr(s,Length(s)-i));

s:=AnsiLeftStr(s,i-1);

result:=k;

end;

end;

{ TForm2 }

procedure TForm2.FormActivate(Sender: TObject);

begin

TreeView1.Height:=Form2.ClientHeight-2;

Bevel1.Height:=Form2.ClientHeight-2;

Bevel1.Left:=Form2.ClientWidth div 4;

Bevel2.Top:=Form2.ClientHeight-40;

Bevel2.Width:=Form2.ClientWidth-Bevel1.Left-5;

Bevel3.Top:=Form2.ClientHeight-35;

Bevel3.Left:=Bevel1.Left+3+(Form2.ClientWidth-Bevel1.Left) div 3;

Bevel4.Top:=Form2.ClientHeight-35;

Bevel4.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3);

btnExit.Top:=Form2.ClientHeight-35;

btnExit.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3);

btnExit.Height:=33;

btnBack.Top:=Form2.ClientHeight-35;

btnBack.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3);

btnBack.Height:=33;

btnNext.Top:=Form2.ClientHeight-35;

btnNext.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3);

btnNext.Height:=33;

btnSort.Width:= Bevel1.Left div 2 - 2;

IpHtmlPanel1.Width:=Form2.ClientWidth-Bevel1.Left-10;

IpHtmlPanel1.Height:=Bevel2.Top-3;

IpHtmlPanel1.Left:=Bevel1.Left+3;

IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index.html');

IdI:=-1;

stek:=IntToStr(IdI);

end;

procedure TForm2.btnExitClick(Sender: TObject);

begin

IpHtmlPanel1.SetHtmlFromStr('');

Close;

Form1.Show;

end;

procedure TForm2.btnNextClick(Sender: TObject);

var Node:TTreeNode;

begin

if IdI<TreeView1.Items.Count-1 then

begin

IdI:=IdI+1;

IdP:=Idp+1;

stek:=stek+'/'+IntToStr(IdI);

TreeView1.Selected:=treeview1.Items[IdI];

Form2.Caption:=treeview1.Selected.text;

IpHtmlPanel1.SetHtmlFromStr('');

IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html');

IpHtmlPanel1.Refresh;

IpHtmlPanel1.SetFocus;

end

else

begin

IdI:=0;

IdP:=Idp+1;

stek:=stek+'/'+IntToStr(IdI);

TreeView1.Selected:=treeview1.Items[IdI];

Form2.Caption:=treeview1.Selected.text;

IpHtmlPanel1.SetHtmlFromStr('');

IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html');

IpHtmlPanel1.Refresh;

IpHtmlPanel1.SetFocus;

end;

end;

procedure TForm2.btnSortClick(Sender: TObject);

begin

TreeView1.AlphaSort;

end;

procedure TForm2.btnBackClick(Sender: TObject);

var k: integer;

begin

if IdI=-1 then IdI:=0; //если дошли до начала, то встаем на первый

k:=StekPrev(stek); //идем назад по стеку

if k=IdI then k:=StekPrev(stek); //повторяем, чтобы не загружать повторно текущий файл

if IdP>1 then

begin

IdI:=k; //запоминаемпредыдущий

IdP:=IdP-1;//уменьшаем счетчик пройденных страниц

TreeView1.Selected:=treeview1.Items[IdI]; //переходнапредыдущий

Form2.Caption:=treeview1.Selected.text; //прописываемвзаголовкеформы

IpHtmlPanel1.SetHtmlFromStr(''); //загружаемстраничку

IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html');

IpHtmlPanel1.Refresh;

IpHtmlPanel1.SetFocus;

end

else

begin

IdI:=-1; //если ещё не было переходов по страницам

IdP:=0; //счетчик нулевой

stek:='-1/';//стек нулевой

TreeView1.Selected:=treeview1.Items[IdI+1]; //вдеревевстаемнапервыйпункт

Form2.Caption:=treeview1.Selected.text;

IpHtmlPanel1.SetHtmlFromStr(''); //загружаемстартовуюстраницу

IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index.html');

IpHtmlPanel1.Refresh;

IpHtmlPanel1.SetFocus;

end;

end;

procedure TForm2.btnCancelSortClick(Sender: TObject);

var dirpath:string;

begin//заполнение TreeView изфайла

dirpath:=fUnit.ProgramPath+'\Help\List.dat';

if FileExists(dirpath) then

begin

TreeView1.LoadFromFile(Dirpath);

end;

IpHtmlPanel1.SetHtmlFromStr('');

if IdI<>-1 then IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html')

else IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index.html');

IpHtmlPanel1.Refresh;

IpHtmlPanel1.SetFocus;

end;

procedure TForm2.FormCreate(Sender: TObject);

var dirpath:string;

begin

TreeView1.Color:=Form2.Color;

//заполнение TreeView изфайла

dirpath:=fUnit.ProgramPath+'\Help\List.dat';

if FileExists(dirpath) then

begin

TreeView1.LoadFromFile(Dirpath);

end;

IdI:=-1;

IdP:=0;

stek:='-1/';

end;

procedure TForm2.FormResize(Sender: TObject);

begin

TreeView1.Height:=Form2.ClientHeight-2;

Bevel1.Height:=Form2.ClientHeight-2;

Bevel1.Left:=Form2.ClientWidth div 4;

Bevel2.Top:=Form2.ClientHeight-40;

Bevel2.Width:=Form2.ClientWidth-Bevel1.Left-5;

Bevel3.Top:=Form2.ClientHeight-35;

Bevel3.Left:=Bevel1.Left+3+(Form2.ClientWidth-Bevel1.Left) div 3;

Bevel3.Height:=33; Bevel4.Height:=33;

Bevel4.Top:=Form2.ClientHeight-35;

Bevel4.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3);

btnExit.Top:=Form2.ClientHeight-35;

btnExit.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3);

btnExit.Height:=33; btnBack.Height:=33; btnNext.Height:=33;

btnBack.Top:=Form2.ClientHeight-35;

btnBack.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3);

btnNext.Top:=Form2.ClientHeight-35;

btnSort.Width:= Bevel1.Left div 2 - 2;

btnNext.Left:=Bevel1.Left+3+2*((Form2.ClientWidth-Bevel1.Left) div 3);

IpHtmlPanel1.Width:=Form2.ClientWidth-Bevel1.Left-10;

IpHtmlPanel1.Height:=Bevel2.Top-3;

IpHtmlPanel1.Left:=Bevel1.Left+3;

end;

procedure TForm2.TreeView1Click(Sender: TObject);

begin

IdI:=TreeView1.Selected.AbsoluteIndex;

IdP:=Idp+1;

stek:=stek+'/'+IntToStr(IdI);

Form2.Caption:=treeview1.Selected.text;

//По умолчанию в WebBrowser1 ничего не показывается

IpHtmlPanel1.SetHtmlFromStr('');

IpHtmlPanel1.OpenURL(fUnit.ProgramPath+'\Help\Index'+inttostr(IdI)+'.html');

IpHtmlPanel1.Refresh;

IpHtmlPanel1.SetFocus;

end;

end.

unit ExampleUnit;

{$mode ObjFPC}{$H+}

interface

uses

Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, Buttons,

ExtCtrls, ComCtrls;

type

{ TForm3 }

TForm3 = class(TForm)

BitBtn1: TBitBtn;

CheckGroup1: TCheckGroup;

ComboBox1: TComboBox;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

GroupBox1: TGroupBox;

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Memo1: TMemo;

Panel1: TPanel;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

ScrollBar1: TScrollBar;

ScrollBar2: TScrollBar;

ScrollBar3: TScrollBar;

Shape1: TShape;

UpDown1: TUpDown;

UpDown2: TUpDown;

procedure ComboBox1Change(Sender: TObject);

procedure ComboBox1Click(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure ScrollBar1Change(Sender: TObject);

procedure UpDown1Changing(Sender: TObject; var AllowChange: Boolean);

procedure UpDown2Changing(Sender: TObject; var AllowChange: Boolean);

private

public

end;

var

Form3: TForm3;

implementation

uses fUnit;

{$R *.lfm}

{ TForm3 }

procedure TForm3.ScrollBar1Change(Sender: TObject);

begin

Shape1.Brush.color:=RGBToColor(ScrollBar1.Position,ScrollBar2.Position,ScrollBar3.Position);

edit1.text:=ScrollBar1.Position.ToString;

edit2.text:=ScrollBar2.Position.ToString;

edit3.text:=ScrollBar3.Position.ToString;

Shape1.Pen.Color:= RGBToColor(255-ScrollBar1.Position,255-ScrollBar2.Position,255-ScrollBar3.Position);

Memo1.Clear;

Memo1.Lines.Add('Изменениецветафигуры');

end;

procedure TForm3.UpDown1Changing(Sender: TObject; var AllowChange: Boolean);

begin

Shape1.Top:=UpDown1.Position;

Memo1.Clear;

Memo1.Lines.Add('Перемещение фигуры по вертикали');

end;

procedure TForm3.UpDown2Changing(Sender: TObject; var AllowChange: Boolean);

begin

Shape1.Left:=UpDown2.Position;

Memo1.Clear;

Memo1.Lines.Add('Перемещение фигуры по горизонтали');

end;

procedure TForm3.ComboBox1Change(Sender: TObject);

begin

case ComboBox1.ItemIndex of

0: Shape1.Shape:=stCircle;

1: Shape1.Shape:=stEllipse;

2: Shape1.Shape:=stRectangle;

3: Shape1.Shape:=stSquare;

4: Shape1.Shape:=stTriangle;

end;

end;

procedure TForm3.ComboBox1Click(Sender: TObject);

begin

Memo1.Clear;

Memo1.Lines.Add('Выборформыфигуры');

end;

procedure TForm3.RadioButton1Click(Sender: TObject);

begin

if RadioButton1.Checked then Shape1.visible:=true else Shape1.visible:=false;

Memo1.Clear;

Memo1.Lines.Add('Отображение фигуры включено');

end;

procedure TForm3.RadioButton2Click(Sender: TObject);

begin

if RadioButton2.Checked then Shape1.visible:=false else Shape1.visible:=true;

Memo1.Clear;

Memo1.Lines.Add('Отображениефигурывыключено');

end;

end.

Размещено на Allbest.ru


Подобные документы

  • Бесплатная среда разработки программного обеспечения с открытым исходным кодом для компилятора Free Pascal. Почему Lazarus такой популярный. Корректность введенных данных. Использование основных методов визуализации в среде программирования Lazarus.

    курсовая работа [695,5 K], добавлен 19.04.2013

  • Методы, подходы, принципы, интерфейс Lazarus и Delphi. Технические различия, ход установки и коммерческий доступ к продуктам среды визуального программирования. Установление дополнительных компонент программы, их совместимость с операционными системами.

    курсовая работа [4,1 M], добавлен 14.03.2012

  • Общее понятие, виды энергоресурсов и методы их измерения. Системы и программы для учета потребления энергоресурсов. Выбор среды разработки и требования, предъявляемые программной системе. Краткий обзор среды Lazarus. Проектирование программной системы.

    дипломная работа [3,6 M], добавлен 11.09.2014

  • Форма программы для ввода и вывода массива в программной среде Lazarus. Характеристика главных недостатков Lazarus. Цикл для пропуска пробелов между словами. Результат обработки текстового редактора memo.text. Листинг и экранные формы заданной программы.

    контрольная работа [799,2 K], добавлен 15.01.2011

  • Характеристика графических возможностей среды программирования Lazarus. Анализ свойств Canvas, Pen, Brush. Сущность методов рисования эллипса и прямоугольника. Возможности компонентов Image и PaintBox. Реализации программы "Графический редактор".

    курсовая работа [2,8 M], добавлен 30.03.2015

  • Засоби доступу до БД в середовищі Lazarus. Створення і робота з таблицями за допомогою DBase. Набір візуальних компонентів LCL в Lazarus. Основні переваги останньої версії InterBase. Основи створення нової таблиці бази даних програмного забезпечення.

    курсовая работа [49,5 K], добавлен 23.11.2010

  • История интегрированной среды разработки, версии Delphi. Организация библиотеки компонентов. Страница Additional, ряд часто используемых компонентов общего назначения. Исполняемый файл программы "Архиватор текстовых файлов", интерфейс приложения.

    курсовая работа [1019,0 K], добавлен 16.05.2017

  • Описание процесса проектирования информационно–справочной системы с помощью среды разработки PascalABC.Net, ее использование для регистрации обращений в медицинское учреждение. Логическая структура программы, алгоритм ее работы, особенности интерфейса.

    курсовая работа [628,8 K], добавлен 07.06.2017

  • Проектирование концептуальной, логической и физической модели базы данных. Формирование сущностей и связей между ними. Создание форм с функциями добавления, редактирования, удаления, поиска, печати. Разработка клиентской части БД с помощью среды Lazarus.

    курсовая работа [1,3 M], добавлен 05.04.2015

  • Разработка программы для тестирования студентов в интегрированной среде разработки Lazarus. Создание формы, отображение графического изображения, выхода, ответа, завершения теста. Процесс выбора ответа студентом. Исходный вид программы тестирования.

    курсовая работа [388,4 K], добавлен 23.12.2014

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.