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

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
Нет описания правки
Метка: редактор вики-текста 2017
Метка: редактор вики-текста 2017
Строка 42: Строка 42:
</syntaxhighlight>
</syntaxhighlight>


==Перемещение фигуры кнопками==
==Простой таймер==
<syntaxhighlight lang="pascal">
<syntaxhighlight lang="pascal">
uses Timers, GraphABC, ABCObjects, ABCButtons;
uses GraphABC, ABCObjects, ABCButtons;

const
const
H = 30;
ButtonSize = 25;
BoxSize = 100;
MoveValue = 2;


var
Start, Stop: ButtonABC;
Value: RectangleABC;
T: integer;
Timer1: Timer;

procedure AddTime();
begin
begin
var left := new ButtonABC(0, 0, ButtonSize, ButtonSize, 'L', clRed);
Inc(T);
var right := new ButtonABC(ButtonSize, 0, ButtonSize, ButtonSize, 'R', clYellow);
Value.Text := IntToStr(T);
var up := new ButtonABC(ButtonSize * 2, 0, ButtonSize, ButtonSize, 'U', clGreen);
end;
var down := new ButtonABC(ButtonSize * 3, 0, ButtonSize, ButtonSize, 'D', clBlue);

procedure StartTimer() := Timer1.Start();

procedure StopTimer() := Timer1.Stop();

begin
SetWindowIsFixedSize(true);
SetWindowSize(300, 100);
SetWindowCaption('Timer');
CenterWindow();
var W := Window.Width div 2;
var Y := Window.Height - H;
Timer1 := new Timer(1000, AddTime);
var rectangle := new RectangleABC(Window().Width div 2, Window().Height div 2, BoxSize, BoxSize, clGray);
Start := new ButtonABC(0, Y, W, H, 'Start', clMoneyGreen);
Start.OnClick := StartTimer;
Stop := new ButtonABC(W, Y, W, H, 'Stop', clMoneyGreen);
Stop.OnClick := StopTimer;
left.OnClick := procedure() -> rectangle.MoveOn(-MoveValue, 0);
Value := new RectangleABC(0, 0, Window.Width, Y, clWhite);
right.OnClick := procedure() -> rectangle.MoveOn(MoveValue, 0);
Value.Text := '0';
up.OnClick := procedure() -> rectangle.MoveOn(0, -MoveValue);
down.OnClick := procedure() -> rectangle.MoveOn(0, MoveValue);
end.
end.
</syntaxhighlight>
</syntaxhighlight>

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

ABCButtons - модуль для создания кнопок на PascalABC.NET. Основан на ABCObjects.



Основные классы

ABCButtons содержит следующие классы:

  1. ButtonABC (кнопка) [аналог в Windows Forms]

ButtonABC

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

new ButtonABC({x}, {y}, {width}, {height}, {text}, {color});

, где:

  • {x}, {y} - x, y кнопки
  • {width}, {height} - ширина, высота кнопки
  • {text} - текст на кнопке
  • {color} - цвет кнопки

, причём {height} - необязательно указывать.


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

Примеры

Смена цвета кнопки

uses ABCButtons;
uses GraphABC;

begin
  var b := new ButtonABC(0, 0, 200, 50, 'Click Me', clRed);
  b.OnClick := procedure ->
  begin
    b.Color := clRandom();
    b.FontColor := RGB(255 - b.Color.R, 255 - b.Color.G, 255 - b.Color.B);
  end;
end.

Перемещение фигуры кнопками

uses GraphABC, ABCObjects, ABCButtons;

const
  ButtonSize = 25;
  BoxSize = 100;
  MoveValue = 2;

begin
  var left := new ButtonABC(0, 0, ButtonSize, ButtonSize, 'L', clRed);
  var right := new ButtonABC(ButtonSize, 0, ButtonSize, ButtonSize, 'R', clYellow);
  var up := new ButtonABC(ButtonSize * 2, 0, ButtonSize, ButtonSize, 'U', clGreen);
  var down := new ButtonABC(ButtonSize * 3, 0, ButtonSize, ButtonSize, 'D', clBlue);
  
  var rectangle := new RectangleABC(Window().Width div 2, Window().Height div 2, BoxSize, BoxSize, clGray);
  
  left.OnClick := procedure() -> rectangle.MoveOn(-MoveValue, 0);
  right.OnClick := procedure() -> rectangle.MoveOn(MoveValue, 0);
  up.OnClick := procedure() -> rectangle.MoveOn(0, -MoveValue);
  down.OnClick := procedure() -> rectangle.MoveOn(0, MoveValue);
end.