Введение в ABCButtons: различия между версиями
Содержимое удалено Содержимое добавлено
Нет описания правки Метка: редактор вики-текста 2017 |
Метка: редактор вики-текста 2017 |
||
Строка 42: | Строка 42: | ||
</syntaxhighlight> |
</syntaxhighlight> |
||
==Перемещение фигуры кнопками== |
|||
==Простой таймер== |
|||
<syntaxhighlight lang="pascal"> |
<syntaxhighlight lang="pascal"> |
||
uses |
uses GraphABC, ABCObjects, ABCButtons; |
||
const |
const |
||
ButtonSize = 25; |
|||
BoxSize = 100; |
|||
MoveValue = 2; |
|||
var |
|||
Start, Stop: ButtonABC; |
|||
Value: RectangleABC; |
|||
T: integer; |
|||
Timer1: Timer; |
|||
procedure AddTime(); |
|||
begin |
begin |
||
⚫ | |||
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.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.
Внимание! Данный модуль является специфическим для PascalABC.NET и не поддерживается другими диалектами Pascal и остальными языками. |
Внимание! В настоящее время рекомендуется использовать технологию WPF для создания оконных приложений под Windows. Кроссплатформенным аналогом является Avalonia UI. Однако, данные технологии не поддерживаются в полной мере (например, для WPF отсутствует дизайнер форм и возможность писать на XAML из IDE) в PascalABC.NET. Для их использования рекомендуется применять такие среды разработки, как Visual Studio и Rider. |
Основные классы
ABCButtons содержит следующие классы:
- 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.