Zer0Galaxy
-
Публикации
1 220 -
Зарегистрирован
-
Посещение
-
Победитель дней
189
Сообщения, опубликованные пользователем Zer0Galaxy
-
-
Чередуя дни беспросветной лени с часами бешеного программирования, удалось реализовать редактор обработчиков событий. Таким образом FormsMaker начинает приобретать черты полноценной системы программирования. Продемонстрирую на примере простенькой программы - счетчик количества нажатий на кнопку.
Запустим fmaker и создадим на форме метку (addLabel). Эта метка будет отображать количество нажатий. Необходимо установить начальное значение равное нулю, для чего щелкнем ПКМ на метке и откроем окно свойств. Выберем свойство "caption" (надпись) и зададим ему новое значение - "0"
Закроем окно свойств метки и аналогичным образом создадим кнопку (addButton). В качестве надписи укажем - "+1"
Щелкнем на строчку onClick в окне свойств кнопки. onClick - это обработчик нажатия на кнопку. Пока он не привязан ни к какой функции, о чем нам и сообщается.
Что бы создать функцию обработки, нажимаем кнопку "New" и попадаем в редактор обработчика событий
Заголовок функции-обработчика и завершающий end создаются автоматически. Наша задача прописать тело функции
Строчка
Label1.caption=Label1.caption+1
увеличивает значение надписи на единицу. А строчка
Label1:redraw()
вызывает перерисовку компонента Label1.
Для выхода из редактора обработчика событий необходимо кликнуть за пределами поля редактирования или нажать F10. Вот, собственно, и всё программирование. Теперь необходимо сгенерировать код, для чего вызвать соответствующий пункт меню
... и выйти из FormsMaker
Что бы посмотреть код, получившийся в результате генерации, откроем его командой "edit Project1.lua"
А запустив его на выполнение, можно убедиться в его работоспособности
Напоминаю, с последней версией редактора можно поэкспериментировать в дата-центре на компьютере с координатами 10150, 14199.
-
6
-
-
-
Ивент заканчивается при выходе из функции event.pull. А это происходит уже внутри тела term.read
Можно сделать даже так
computer.pushSignal("event1") --ставим в очередь событие 1 computer.pushSignal("event2") --ставим в очередь событие 2 computer.pushSignal("event3") --ставим в очередь событие 3 repeat ev=event.pull(1) -- обрабатываем события print(ev) until not evПри этом поставленные в очередь события никуда не деваются, а спокойно дожидаются своей очереди.
-
1
-
-
Ну-ка, объясните мне, зачем вызывать параллельно ивент клавиши и read. Чем последовательный вызов не устраивает?
-
Не похоже. Я выполнил действия, как на приведенном скрине - у меня работает. Наверное, в код вкралась ошибка.Тебе выдали вместо программы HTML-страницу, о чём символизирует ошибка ().DiNeoNew, выполни команду
edit editor
и выложи что получилось
-
...
... local users=Set({computer.users()}) ...Что за функция Set? И что оно в конце концов делает?
-
тогда не понятно какую строку в какой ввод нужно вставить
-
Выполняется код: local r=term.read()
как программно вставить в ввод строку?
computer.pushSignal("key_down",kbd.address,0,200) --имитируем нажатие стрелки вверх r=term.read({"bla-bla-bla"}) -- вызываем read с прописанной историей-
1
-
-
Предлагаю никаких особых команд не делать, а сделать что бы посылка типа "$$ <текст>" в чат передавала этот текст во входной буфер компьютера. А содержимое экрана с заданной периодичностью или по событию отправлялось на очки. Получится удаленная консоль.
-
уже знаю как это сделатьдолжно принимать сообщения из чата в функцию read -
Правильно я понял, эта штука дублирует на очки экран компьютера?
-
TextEdit должен быть похож на компонент Edit, с той лишь разницей, что Edit это редактор одной строки, а TextEdit - многострочный редактор. Но с добавлением этого компонента библиотека forms должна остаться "легкой", а для этого нужно максимально использовать системные ресурсы. К примеру, для создания Edit я использовал стандартный term.read, хоть и не совсем обычным способом.
-
1
-
-
Почему с одним? Сколько надо, столько и делай
-
1
-
-
Юзай связанные платы, пока не покроют вай-фаем весь сервер)
Теперь уже не покроют. Алекс вырубил сервера OpenNetа т.к. им никто не пользовался.
-
Если ивент стандартный из ОС, то можно легко найти в документации опсаниевсях ивентов ОС.
Вспомнился анекдот
Математику, физику и инженеру дали три одинаковых ластика и попросили найти их объём. Математик достал сантиметр и измерил длину окружности ластика. Затем он разделил результат на два Пи, чтобы узнать радиус, возвёл полученное значение в куб, снова разделил на Пи, потом разделил на три четверти и таким образом получил объём.
Физик взял ровно 1.00000 литр воды, бросил туда ластик и измерил объём вытесненной воды.
А инженер? А инженер записал серийный номер ластика и посмотрел объём в справочнике.
-
2
-
-
Кто сможет сделать компонент TextEditor?
-
1
-
-
целое - integerцелое – whole-
1
-
-
При клике на какое то из свойств открывается окно редактирования свойства (его я не показал на скриншоте), в котором присутствует компонент Edit. В этот Edit вводится новое значение свойства. Или речь идет об одном TextEditorе, в котором редактируются сразу все свойства?А не будет ли лучше, редактировать свойства в компоненте по типу TextEditor?-
1
-
-
Последовательности из большого количества elseif можно заменять на таблицу функций. Сравни эти две реализации:
if a==1 then foo1() elseif a==2 then foo2() elseif a==3 then foo3() elseif a==4 then foo4() elseif a==5 then foo5() -- и т.д. else error() end
и
t={foo1,foo2,foo3,foo4,foo5 } if t[a] then t[a]() else error() end-
2
-
-
Для уточнения названий событий и их параметров я пользовался вот такой программкой
event=require("event") while true do ev={event.pull()} for i=1,#ev do if type(ev[i])=="string" then ev[i]='"'..ev[i]..'"' end io.write(ev[i].." ") end print() endНо dmesg лучше.
-
1
-
-
Кто же его знает. Как дело пойдет. В принципе, то что есть уже можно использовать.А как скоро будет готов релиз?
Тестировать, находить баги, предлагать свои варианты реализации программы.И чем можно помочь для ускорения выпуска?-
1
-
-
наверное, все таки andв частности end и or -
Получился редактор луа таблиц )
Верно. Любой объект на луа есть ничто иное как таблица. Изменение свойств объекта это редактирование таблицы. А если учесть, что переменные и функции являются полями таблицы _G, то можно говорить, что программирование тоже редактирование таблицы.
-
1
-
-
Пока никаких. Но в будущем, возможно, любые.
-
1
-

Система визуального программирования FormsMaker
в Графика
Опубликовано:
Уже нет