Введение в FormsABC

Материал из Викиучебника — открытых книг для открытого мира
Перейти к навигации Перейти к поиску

FormsABC - учебный модуль PascalABC.NET для работы простейшим оконными приложениями без дизайнера форм. Основан на устаревшей технологии Windows Forms.


Основные классы[править]

FormsABC содержит следующие классы элементов управления формы:

  1. Button (кнопка) [аналог в Windows Forms]
  2. CheckBox (флажок) [аналог в Windows Forms]
  3. RadioButton (радио-кнопка) [аналог в Windows Forms]
  4. IntegerField (поле ввода целых значений) [аналог в Windows Forms]
  5. RealField (поле ввода вещественных значений) [аналог в Windows Forms]
  6. Field (поле ввода строк) [аналог в Windows Forms]
  7. TextBox (многострочное текстовое поле) [аналог в Windows Forms]
  8. TrackBar (ползунок) [аналог в Windows Forms]
  9. TextLabel (метка) [аналог в Windows Forms]
  10. ListBox (список) [аналог в Windows Forms]
  11. ComboBox (разворачивающийся список) [аналог в Windows Forms]

Button[править]

Button - класс кнопки. Для ее создания пишите:

new Button({text});

, заменив {text} на текст на кнопке.

Событие Значение
Click Хранит ссылку на процедуру, которая выполняется при нажатии на кнопку. Для установки его значения используйте +=.

CheckBox[править]

Checkbox - класс флажка. Для его создания пишите:

new CheckBox({text});

, заменив {text} на текст, относящийся к флажку.

Свойство Значение
Checked Хранит значение true или false, указывающее установлен ли флажок.
  • true - установлен
  • false - не установлен

RadioButton[править]

RadioButton - класс радио-кнопки. Для её создания пишите:

new RadioButton({text});

, заменив {text} на текст, относящийся к радио-кнопке.

Свойство Значение
Checked Хранит значение true или false, указывающее выбрана ли радио-кнопка.
  • true - выбрана
  • false - не выбрана

IntegerField[править]

IntegerField - класс однострочного поля ввода для целых чисел. Для его создания пишите:

new IntegerField({text}, {width});

, заменив {text} на текст, относящийся к полю и {width} на его ширину.

Свойство Значение
FieldWidth Ширина поля.
Text Текст, отображаемый над полем.
Value Число, находящееся в поле.
Событие Описание
TextChanged Хранит ссылку на процедуру, которая выполняется при смене значения поля. Для установки его значения используйте вместо +=.

RealField[править]

RealField - класс однострочного поля ввода для вещественных чисел. Для его создания пишите:

new RealField({text}, {width});

, заменив {text} на текст, относящийся к полю и {width} на его ширину.

Свойство Значение
FieldWidth Ширина поля.
Text Текст, отображаемый над полем.
Value Число, находящееся в поле.
Событие Описание
TextChanged Хранит ссылку на процедуру, которая выполняется при смене значения поля. Для установки его значения используйте +=.

Field[править]

Field - класс однострочного поля ввода для строк. Для его создания пишите:

new Field({text}, {width});

, заменив {text} на текст, относящийся к полю и {width} на его ширину.

Свойство Значение
FieldWidth Ширина поля.
Text Строка, который содержится в поле ввода.
Событие Описание
TextChanged Хранит ссылку на процедуру, которая выполняется при смене значения поля. Для установки его значения используйте +=.

TextBox[править]

TextBox - класс многострочного поля ввода для строк. Для его создания пишите:

new TextBox();
Свойство Значение
Width Ширина поля.
Height Высота поля.
Text Строка, которая содержится в поле ввода.
Метод Описание
Undo() Отменяет последнее изменение.
Redo() Отменяет отмену последнего изменения.
Cut() Вырезает выделенное.
Copy() Копирует выделенное.
Paste() Вставляет текст из буфера обмена в местоположение курсора.
AddLine(t) Добавляет текст t новой строкой.

TrackBar[править]

TrackBar - класс ползунка. Для его создания пишите:

new TrackBar();
Свойство Значение
Frequency Расстояние через которое расставляются деления на ползунке (в пикселях).
Minimum Минимальное значение ползунка.
Maximum Максимальное значение ползунка.
Value Значение ползунка.
Событие Описание
ValueChanged Хранит ссылку на процедуру, которая выполняется при смене значения ползунка. Для установки его значения используйте +=.

TextLabel[править]

TextLabel - класс метки. Для её создания пишите:

new TextLabel({text});

, заменив {text} на текст метки.

ListBox[править]

ListBox - класс списка. Для его создания пишите:

new ListBox();
Свойство Значение
Count Количество элементов в списке.
SelectedIndex Индекс выбранного элемента списка.
SelectedItem Выбранный элемент списка.
Items.Item[k] K-ый элемент списка.
Событие Описание
Click Хранит ссылку на процедуру, которая выполнится при щелчке по списку.
SelectedIndexChanged Хранит ссылку на процедуру, которая выполнится при смене выбранного элемента списка.
Метод Описание
Items.Add(t) Добавляет в список элемент с текстом t на нем.
Items.Clear() Удаляет все элементы списка.

ComboBox[править]

ComboBox- класс списка. Для его создания пишите:

new ComboBox();
Свойство Значение
Width Ширина списка.
Count Количество элементов в списке.
SelectedIndex Индекс выбранного элемента списка.
SelectedItem Выбранный элемент списка.
Items.Item[k] K-ый элемент списка.
Событие Описание
Click Хранит ссылку на процедуру, которая выполнится при щелчке по списку.
SelectedIndexChanged Хранит ссылку на процедуру, которая выполнится при смене выбранного элемента списка.
Функция Описание
Items.Add(t) Добавляет в список элемент с текстом t на нем.
Items.Clear() Удаляет все элементы списка.

Размещение элементов управления формы[править]

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

Функция Значение
LineBreak Переходит на новую строку.
EmptyLine Пропускает n пикселей по вертикали. Следующий элемент управления будет располагаться через n пикселей по вертикали от предыдущего.
EmptySpace Пропускает n пикселей по горизонтали. Следующий элемент управления будет располагаться через n пикселей по горизонтали от предыдущего.

Свойства формы[править]

Настраивать главную форму можно через глобальную переменную mainForm.

Свойство Значение
Title Заголовок окна.
Метод Описание
mainForm.SetSize(x, y) Устанавливает размер формы, равный xxy пикселей.
mainForm.CenterOnScreen() Центрирует окно относительно центра экрана.

Примеры[править]

Простой калькулятор[править]

uses FormsABC;

const
  Sum = '+';
  Difference = '-';
  Multiplication = '*';
  Division = '/';
  
begin
  mainForm.Width := 350;
  mainForm.Height := 120;
  mainForm.Title := 'Calculator';
  mainForm.IsFixedSize := true;
  
  var first := new IntegerField('First:', 100);
  var second := new IntegerField('Second:', 100);
  var result := new IntegerField('Result:', 100);

  LineBreak();
  
  var actions := new ComboBox();
  actions.Items.Add(Sum);
  actions.Items.Add(Difference);
  actions.Items.Add(Multiplication);
  actions.Items.Add(Division);
  actions.SelectedIndex := 0;
  
  var calculate := new Button('Calculate');
  calculate.Click += () ->
    case actions.SelectedValue.ToString()[1] of
      Sum: result.Value := first.Value + second.Value;
      Difference: result.Value := first.Value - second.Value;
      Multiplication: result.Value := first.Value * second.Value;
      Division: result.Value := first.Value div second.Value;
    end;
end.

Демонтрация стека[править]

uses FormsABC;

const
  Push = 'Push';
  Pop = 'Pop';
  Peek = 'Peek';

begin
  mainForm.Width := 350;
  mainForm.Height := 120;
  mainForm.Title := 'Stack demostration';
  mainForm.IsFixedSize := true;
  
  var source := new Stack<integer>();
  
  var item := new IntegerField('Item:', 100);
  var result := new Field('Result:', 220);

  LineBreak();
  
  var actions := new ComboBox();
  actions.Items.Add(Push);
  actions.Items.Add(Pop);
  actions.Items.Add(Peek);
  actions.SelectedIndex := 0;
  
  var show := new Button('Show');
  show.Click += () ->
  begin
    var stackToString: Func<Stack<integer>, string> := from ->
    begin
      result := string.Empty;
      foreach var item in from do
        result += $'{item} ';
    end;
    
    case actions.SelectedValue.ToString() of
      Push:
        source.Push(item.Value);
      Pop:
        if source.Count > 0 then
          source.Pop();
      Peek:
        if source.Count > 0 then
          source.Peek();
    end;
    
    result.Text := stackToString(source);
  end;
end.

Ссылки[править]

Примеры