События модуля 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 содержит следующие классы:
- 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.
На скрине показал, где она должна быть:
И да, вот как она, собственно, выглядит:
У меня она пропала. Как ее включить обратно?- Вопрос задан более года назад
- 166 просмотров
Комментировать
Решения вопроса 1
tmkbl @tmkbl Автор вопросаМда. Сидел копался, не получилось ничего сделать. Задал сюда вопрос, после чего покопался еще чуть-чуть, и у меня получилось вернуть эту кнопку следующим способом: создаем на форме какой-нибудь объект (напр. кнопку), удаляем, и наша кнопка возвращается!
Ответ написан более года назад
Ошибка эта воспроизводится легко и стабильно.
При стандартных начальных настройках:
Файл — Новый проект — Приложение Windows Forms — OK (В инспекторе объектов кнопки на месте)
В инспекторе объектов на этой панели с кнопками ПКМ — Закрыть
В окне Структура проекта двойной клик ЛКМ по Unit1.pas (Ваших кнопок нет)Так что, если Вам этот проет интересен, создайте issue на их github-е или на их форуме опишите. Окажете пользу сообществу 🙂
Ответы на вопрос 0
Ваш ответ на вопросВойдите, чтобы написать ответ
- Pascal
Как работает WriteLn в PascalAbc?
- 1 подписчик
- 14 сент. 2023
- 83 просмотра
- Pascal
Как в Pascal Abc использовать функцию дополнения кода (чтобы команда дописывалась)?
- 1 подписчик
- 07 сент. 2023
- 87 просмотров