Как сделать кнопку в паскаль
Перейти к содержимому

Как сделать кнопку в паскаль

  • автор:

События модуля GraphABC

Графическая программа продолжает выполняться даже после того как выполнены все операторы основной программы. Графическое окно реагирует на события мыши, клавиатуры, событие изменения размеров окна и событие закрытия окна. Данные события определены в модуле GraphABC и представляют собой процедурные переменные:

OnMouseDown: procedure (x,y,mousebutton: integer);
Событие нажатия на кнопку мыши. (x,y) — координаты курсора мыши в момент наступления события, mousebutton = 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши
OnMouseUp: procedure (x,y,mousebutton: integer);
Событие отжатия кнопки мыши. (x,y) — координаты курсора мыши в момент наступления события, mousebutton = 1, если отжата левая кнопка мыши, и 2, если отжата правая кнопка мыши
OnMouseMove: procedure (x,y,mousebutton: integer);
Событие перемещения мыши. (x,y) — координаты курсора мыши в момент наступления события, mousebutton = 0, если кнопка мыши не нажата, 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши.
OnKeyDown: procedure (key: integer);
Событие нажатия клавиши. key — виртуальный код нажатой клавиши
OnKeyUp: procedure (key: integer);
Событие отжатия клавиши. key — виртуальный код отжатой клавиши
OnKeyPress: procedure (ch: char);
Событие нажатия символьной клавиши. ch — символ, генерируемый нажатой символьной клавишей
OnResize: procedure;
Событие изменения размера графического окна
OnClose: procedure;
Событие закрытия графического окна

Если переменной-событию присвоена некоторая процедура, она называется обработчиком данного события и автоматически вызывается при наступлении указанного события.

Параметры x и y в обработчиках OnMouseDown , OnMouseUp и OnMouseMove определяют координаты курсора мыши в момент наступления события, параметр mousebutton равен 0, если кнопка мыши не нажата, 1, если нажата левая кнопка мыши, и 2, если нажата правая кнопка мыши. Параметр key в обработчиках OnKeyDown и OnKeyUp определяет виртуальный код нажатой клавиши. Параметр ch в обработчике OnKeyPress определяет нажатый символ.

Как сделать кнопку в паскаль

Регистрация: 01.06.2017

Сообщений: 3

[Pascal ABC] Как добавить кнопку и цикл, работающий пока не нажата кнопка?

Если не трудно, то напишите пример простой программки.P.S. на PascalABC

Регистрация: 09.01.2008

Сообщений: 26,229

Pascal ABC или Pascal ABC.NET ?
и что не получается — кнопка или цикл?

Serge_Bliznykov
Посмотреть профиль
Найти ещё сообщения от Serge_Bliznykov

Форумчанин Подтвердите свой е-майл

Регистрация: 01.11.2006

Сообщений: 420

Через таймер наверное лучше будет:

uses FormsABC, Timers; var d: Button; t: Timer; procedure OnTimer; begin // тут что то выполняем write('#'); end; procedure MyClick; begin t.Stop; end; begin t := new Timer(1, OnTimer); t.Start; d := new Button('СТОП'); d.Click += MyClick; end.

Если ничто другое не помогает, прочтите, наконец, инструкцию! Аксиома Кана

Введение в ABCButtons

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

Данный модуль является устаревшим (может быть в будущем исключен из среды) и специфическим для PascalABC.NET и не поддерживается другими диалектами Pascal и остальными языками. Современный аналог — Controls.

  • 1 Основные классы
  • 2 ButtonABC
  • 3 Примеры
    • 3.1 Смена цвета кнопки
    • 3.2 Перемещение фигуры кнопками

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

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

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

    ButtonABC править

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

    new ButtonABC( , , , , , ); 
    • , — x, y кнопки
    • , — ширина, высота кнопки
    • — текст на кнопке
    • — цвет кнопки

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

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

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

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

    uses ABCButtons, GraphABC; begin Window().Caption := 'Button color changing'; 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 = 5; begin Window().Caption := 'Figure translating'; 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 - BoxSize div 2, Window().Height div 2 - BoxSize 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. 

    Почему нет кнопки «События» в программе PascalABC.NET?

    Не знаю, ответил ли тут кто-нибудь на этот вопрос, но я попробую спросить.
    Пропала кнопка «События» в инспекторе объектов в редакторе Windows Forms.
    На скрине показал, где она должна быть:
    633047223b217839511638.png
    И да, вот как она, собственно, выглядит:
    875a8375f91de049494d6073098e8a2f_d206d11b6d6ee9d436bb743bb38a208b.png
    У меня она пропала. Как ее включить обратно?

    • Вопрос задан более года назад
    • 166 просмотров

    Комментировать
    Решения вопроса 1
    tmkbl @tmkbl Автор вопроса

    Мда. Сидел копался, не получилось ничего сделать. Задал сюда вопрос, после чего покопался еще чуть-чуть, и у меня получилось вернуть эту кнопку следующим способом: создаем на форме какой-нибудь объект (напр. кнопку), удаляем, и наша кнопка возвращается!

    Ответ написан более года назад

    Ошибка эта воспроизводится легко и стабильно.

    При стандартных начальных настройках:
    Файл — Новый проект — Приложение Windows Forms — OK (В инспекторе объектов кнопки на месте)
    В инспекторе объектов на этой панели с кнопками ПКМ — Закрыть
    В окне Структура проекта двойной клик ЛКМ по Unit1.pas (Ваших кнопок нет)

    Так что, если Вам этот проет интересен, создайте issue на их github-е или на их форуме опишите. Окажете пользу сообществу 🙂

    Ответы на вопрос 0
    Ваш ответ на вопрос

    Войдите, чтобы написать ответ

    pascal

    • Pascal

    Как работает WriteLn в PascalAbc?

    • 1 подписчик
    • 14 сент. 2023
    • 83 просмотра

    pascal

    • Pascal

    Как в Pascal Abc использовать функцию дополнения кода (чтобы команда дописывалась)?

    • 1 подписчик
    • 07 сент. 2023
    • 87 просмотров

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *