Введение в FormsABC: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
Метка: редактор вики-текста 2017
Метка: редактор вики-текста 2017
Строка 245: Строка 245:
! Событие || Описание
! Событие || Описание
|-
|-
| '''Click''' || Хранит ссылку на процедуру, которая выполнится при щелчке по списку.
| '''Click''' || Хранит ссылку на процедуру, которая выполнится при щелчке по списку. Для установки его значения используйте +=.
|-
|-
| '''SelectedIndexChanged''' || Хранит ссылку на процедуру, которая выполнится при смене выбранного элемента списка.
| '''SelectedIndexChanged''' || Хранит ссылку на процедуру, которая выполнится при смене выбранного элемента списка. Для установки его значения используйте +=.
|}
|}
{| class="wikitable sortable"
{| class="wikitable sortable"

Версия от 11:52, 17 июля 2020

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 (наследуется от Object) - класс кнопки. Для ее создания пишите:

new Button({text});

, где:

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

CheckBox

CheckBox (наследуется от Object) - класс флажка. Для его создания пишите:

new CheckBox({text});

, где:

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

RadioButton

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

new RadioButton({text});

, где:

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

IntegerField

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

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

, где:

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

RealField

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

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

, где:

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

Field

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

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

, где:

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

TextBox

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

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

TrackBar

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

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

TextLabel

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

new TextLabel({text});

, где:

  • {text} - текст метки

ListBox

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

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

ComboBox

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

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:
        if second.Value <> 0 then
          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.