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

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
Нет описания правки
Метка: редактор вики-текста 2017
м style editing
Метка: редактор вики-текста 2017
Строка 1: Строка 1:
ABCButtons - модуль для создания кнопок на PascalABC.NET. Основан на ABCObjects.
'''ABCButtons '''- модуль для создания кнопок на '''PascalABC.NET'''. Основан на '''ABCObjects'''.


{{Внимание|Данный модуль является специфическим для '''PascalABC.NET''' и не поддерживается другими диалектами '''Pascal''' и остальными языками.}}{{Внимание|В настоящее время '''рекомендуется''' использовать технологию [https://www.wpf-tutorial.com/ '''WPF'''] для создания оконных приложений под '''Windows'''. Кроссплатформенным аналогом является [https://avaloniaui.net/ '''Avalonia UI''']. Однако, данные технологии '''не поддерживаются''' в полной мере (например, для '''WPF''' отсутствует дизайнер форм и возможность писать на '''XAML''' из IDE) в '''PascalABC.NET'''. Для их использования рекомендуется применять такие среды разработки, как [https://visualstudio.microsoft.com/downloads/ '''Visual Studio'''] и [https://www.jetbrains.com/rider/download/ '''Rider'''].}}
{{Внимание|Данный модуль является специфическим для '''PascalABC.NET''' и не поддерживается другими диалектами '''Pascal''' и остальными языками.}}{{Внимание|В настоящее время '''рекомендуется''' использовать технологию [https://www.wpf-tutorial.com/ '''WPF'''] для создания оконных приложений под '''Windows'''. Кроссплатформенным аналогом является [https://avaloniaui.net/ '''Avalonia UI''']. Однако, данные технологии '''не поддерживаются''' в полной мере (например, для '''WPF''' отсутствует дизайнер форм и возможность писать на '''XAML''' из IDE) в '''PascalABC.NET'''. Для их использования рекомендуется применять такие среды разработки, как [https://visualstudio.microsoft.com/downloads/ '''Visual Studio'''] и [https://www.jetbrains.com/rider/download/ '''Rider'''].}}
Строка 5: Строка 5:


=Основные классы=
=Основные классы=
ABCButtons содержит следующие классы:
'''ABCButtons '''содержит следующие классы:
# '''ButtonABC''' (кнопка) [[https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.button?view=netcore-3.1 аналог в Windows Forms]]
# '''ButtonABC''' (кнопка) [[https://docs.microsoft.com/en-us/dotnet/api/system.windows.forms.button?view=netcore-3.1 аналог в '''Windows Forms''']]


=ButtonABC=
=ButtonABC=
Button (наследуется от UIElementABC) - класс кнопки. Для ее создания пишите:
'''Button '''(наследуется от '''UIElementABC''') - класс кнопки. Для ее создания пишите:
<syntaxhighlight lang="pascal">new Button({x}, {y}, {width}, {height}, {text}, {color});</syntaxhighlight>
<syntaxhighlight lang="pascal">new Button({x}, {y}, {width}, {height}, {text}, {color});</syntaxhighlight>
, заменив:
, заменив:

Версия от 10:59, 17 июля 2020

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



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

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

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

ButtonABC

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

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

, заменив:

  • {x} и {y} на x, y кнопки
  • {width} и {height} на её ширинку и высоту
  • {text} на текст на кнопке
  • {color} на её цвет.
Событие Значение
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 Timers, GraphABC, ABCObjects, ABCButtons;
const
  H = 30;

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

procedure AddTime();
begin
  Inc(T);
  Value.Text := IntToStr(T);
end;

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);
  
  Start := new ButtonABC(0, Y, W, H, 'Start', clMoneyGreen);
  Start.OnClick := StartTimer;
  Stop := new ButtonABC(W, Y, W, H, 'Stop', clMoneyGreen);
  Stop.OnClick := StopTimer;
  
  Value := new RectangleABC(0, 0, Window.Width, Y, clWhite);
  Value.Text := '0';
end.