Monodevelop: проект на базе DFL2

Monodevelop: проект на базе DFL2

Добро пожаловать во вторую часть нашего руководства по Monodevelop/MonoD! В этой статье мы займемся созданием нашего первого проекта на базе D Form Library 2 (DFL2). Если вы читаете это, значит, вы уже знаете основные принципы работы с Monodevelop и хотите сделать шаг вперед.

Что такое DFL2?

Перед тем как нырнуть в разработку, давайте разберемся, что такое DFL2. D Form Library 2 (DFL2) — это библиотека для создания графических интерфейсов пользователя (GUI) на языке программирования D. Она предоставляет множество инструментов и компонентов для создания оконных приложений, аналогично Windows Forms в .NET.

Создаем первый проект

Написание кода

Теперь перейдем к самому интересному — написанию кода! Откройте source/app.d и замените его содержимое следующим:

import dfl2.all;

class MainForm : Form
{
    this()
    {
        super("Моё первое приложение на DFL2");
        this.size = Size(800, 600);

        auto button = new Button();
        button.text = "Нажми меня!";
        button.location = Point(350, 250);
        button.size = Size(100, 50);
        button.click ~= &onButtonClick;

        this.controls.add(button);
    }

    void onButtonClick(Object sender, EventArgs e)
    {
        MessageBox.show("Привет, мир!", "Сообщение");
    }
}

void main()
{
    Application.run(new MainForm());
}

Давайте разберем этот код.

  1. Импортируем DFL2: import dfl2.all; — это включает все модули DFL2.
  2. Создаем форму: class MainForm : Form — создаем класс формы, наследующий от Form.
  3. Конструктор формы: В конструкторе формы задаем её заголовок, размеры и добавляем кнопку.
  4. Обработчик события: Метод onButtonClick вызывается при нажатии на кнопку и отображает сообщение.
  5. Точка входа: В функции main запускаем приложение и создаем экземпляр MainForm.

Компиляция и запуск

Теперь скомпилируем и запустим наш проект. В Monodevelop нажмите «Build» и затем «Run». Если всё сделано правильно, вы увидите окно с кнопкой «Нажми меня!». При нажатии на кнопку должно появиться сообщение «Привет, мир!».

Глубже в DFL2

Теперь, когда у нас есть базовый проект, давайте добавим в него больше функциональности и рассмотрим некоторые полезные компоненты DFL2.

Добавляем текстовое поле и метку

Расширим наш пример, добавив текстовое поле и метку. Обновите конструктор класса MainForm следующим образом:

class MainForm : Form
{
    TextBox input;
    Label label;

    this()
    {
        super("Моё первое приложение на DFL2");
        this.size = Size(800, 600);

        auto button = new Button();
        button.text = "Нажми меня!";
        button.location = Point(350, 250);
        button.size = Size(100, 50);
        button.click ~= &onButtonClick;

        input = new TextBox();
        input.location = Point(300, 200);
        input.size = Size(200, 30);

        label = new Label();
        label.text = "Введите текст:";
        label.location = Point(200, 200);
        label.size = Size(100, 30);

        this.controls.add(button);
        this.controls.add(input);
        this.controls.add(label);
    }

    void onButtonClick(Object sender, EventArgs e)
    {
        string userInput = input.text;
        MessageBox.show("Вы ввели: " ~ userInput, "Сообщение");
    }
}

Пояснение к новому коду

  1. TextBox и Label: Добавляем текстовое поле и метку к форме.
  2. Расположение компонентов: Указываем координаты и размеры для новых элементов.
  3. Обновленный обработчик: В обработчике нажатия на кнопку считываем текст из текстового поля и отображаем его в сообщении.

Работа с Layout

DFL2 предоставляет возможности для работы с Layout, что позволяет более гибко управлять расположением компонентов. Давайте добавим пример с использованием FlowLayoutPanel:

class MainForm : Form
{
    FlowLayoutPanel panel;

    this()
    {
        super("Моё первое приложение на DFL2");
        this.size = Size(800, 600);

        panel = new FlowLayoutPanel();
        panel.dock = DockStyle.fill;

        auto button = new Button();
        button.text = "Нажми меня!";
        button.size = Size(100, 50);
        button.click ~= &onButtonClick;

        input = new TextBox();
        input.size = Size(200, 30);

        label = new Label();
        label.text = "Введите текст:";
        label.size = Size(100, 30);

        panel.controls.add(label);
        panel.controls.add(input);
        panel.controls.add(button);

        this.controls.add(panel);
    }

    void onButtonClick(Object sender, EventArgs e)
    {
        string userInput = input.text;
        MessageBox.show("Вы ввели: " ~ userInput, "Сообщение");
    }
}

Пояснение к коду с Layout

  1. FlowLayoutPanel: Создаем панель с поточным расположением и добавляем в неё элементы.
  2. Docking: Используем свойство dock, чтобы панель заполнила все окно формы.

Мы прошли длинный путь от создания базового проекта до работы с текстовыми полями и Layout в DFL2. Теперь у вас есть все необходимое, чтобы создавать собственные оконные приложения на языке D с использованием DFL2. Экспериментируйте, добавляйте новые компоненты и функции, и не бойтесь пробовать что-то новое.


Карпов Ярослав

Автор статьи:

Обновлено:

24.05.2024


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *