Zer0Galaxy Автор темы 2 187 Опубликовано: 9 июля, 2016 Ну, если говорить строго, данные на экране обновляются не в цикле, а с периодом. Именно для этого и предназначен компонент-таймер (см. пример с computer.energy). Применение таких таймеров реализует своего рода многопоточность ибо работа таймера никак не должна влиять на работу остального кода. К стати, не рекомендую использовать многопоточность на основе thread совместно с forms. Они могут передраться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
SDV 784 Опубликовано: 9 июля, 2016 К стати, не рекомендую использовать многопоточность на основе thread совместно с forms. Они могут передраться. Окей, если бы все было с ними хорошо, то они бы давно бы были как одно единое целое P.S. Самое страшное, что сейчас очень сложно найти более или менее адекватную (и современную), простую в использовании GUI либу чтобы она могла включать в себя много чего.... На форуме я в частности насчитал лишь 3 штуки (возможно и больше есть, но эти либы в топе раздела): твоя, либа от Крутого, ну и всеми забытого нами господина Элиты, мать его, ECS Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Laine_prikol 48 Опубликовано: 30 января, 2017 onEnter - (функция) обработчик окончания ввода Что за обработчик окончания ввода? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Fingercomp 4 397 Опубликовано: 30 января, 2017 Когда ты энтер жмёшь (или кликаешь за пределами поля), обработчик вызывается. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Laine_prikol 48 Опубликовано: 5 марта, 2017 Я уже 1 год не могу понять! Как вытащить текст из edit чтобы он записался в переменную? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Ingr 90 Опубликовано: 5 марта, 2017 (изменено) Я уже 1 год не могу понять! Как вытащить текст из edit чтобы он записался в переменную? Edit1.text не пробовал присваивать переменной? Изменено 5 марта, 2017 пользователем Ingr Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy Автор темы 2 187 Опубликовано: 6 марта, 2017 (изменено) Я уже 1 год не могу понять! Как вытащить текст из edit чтобы он записался в переменную? Edit может работать в двух режимах: редактор строки и редактор текста. По умолчанию он настроен на редактирование строки. В этом случае строка вытаскивается из редактора просто чтением поля text var = Edit1.text Если перед началом редактирования полю text присвоить пустую (или не пустую) таблицу Edit1.text = {} то редактор переходит в режим редактирования многострочного текста. В этом случае каждая строка текста доступна как элемент таблицы var = Edit1.text[1] Изменено 6 марта, 2017 пользователем Zer0Galaxy Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
AndySingularity 14 Опубликовано: 1 мая, 2017 (изменено) Отличная библиотека, простая и удобная.Было бы неплохо добавить что-то типа :isActive() для Timer и Event, а также :addEvents("key_down","key_up",...) для форм (возможно в другом формате). Изменено 2 мая, 2017 пользователем AndySingularity Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy Автор темы 2 187 Опубликовано: 3 мая, 2017 Было бы неплохо добавить что-то типа :isActive() для Timer и Event Я забыл упомянуть в описании, таймер имеет поле Enabled, которое принимает значение true, когда таймер работает и false в противном случае. А для события даже не представляю как это сделать. Событие ведь не приостанавливается, в отличии от таймера. Его можно только уничтожить методом Event1:destruct(). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
prostoshu 51 Опубликовано: 7 мая, 2017 А как можно получить user-а, нажавшего кнопку? Например, есть кнопка "ВХОД", как при нажатии на эту кнопку в функцию-обработчик передать ник-нейм нажавшего(user)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy Автор темы 2 187 Опубликовано: 7 мая, 2017 А как можно получить user-а, нажавшего кнопку? Например, есть кнопка "ВХОД", как при нажатии на эту кнопку в функцию-обработчик передать ник-нейм нажавшего(user)?Описание обработчика onClick устаревшее. В обработчик передается еще один параметр - ник пользователя, нажавшего кнопку. Просто в обработчике добавь еще один параметр: user. Должно получиться. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
AndySingularity 14 Опубликовано: 3 июня, 2017 А как насчет двойной буферизации? Пусть библиотека и "лёгкая", тем не менее очень удобная.Я вот с нее начинал. Глубоко проникся. Однако проект вырос - нагрузка выросла. Нет ну совсем никакого желания переписывать графический интерфейс с нуля, особенно если увидеть масштаб документации (с этой же библиотекой можно разобраться в считаные минуты). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Doob 2 748 Опубликовано: 3 июня, 2017 Библиотека довольно самодостаточная, в ней только самые нужные функции, но можно добавлять свои модули. Буферизацию можно выполнить в виде отдельного демона, который обновляет экран только после явной команды. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
AndySingularity 14 Опубликовано: 3 июня, 2017 Библиотека довольно самодостаточная, в ней только самые нужные функции, но можно добавлять свои модули. Буферизацию можно выполнить в виде отдельного демона, который обновляет экран только после явной команды. Не понял, при чем тут демон?То, как я себе это представляю: написать обертку для gpu компонента, являющуюся промежуточным звеном между этой библиотекой и библиотекой двойной буферизации. Тогда можно работать с такой оберткой как с gpu. Если об этом и была речь, то эту штуку и хотелось бы. Хотя это уже совсем другая библиотека, да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
HeroBrine1st 88 Опубликовано: 4 июня, 2017 Господа люди умные, подскажите смертному простому косяк его в зачатке программы при нажатии на кнопки изменяется переменная en эту переменную выводит Label1 дабы выводил он верно, к каждой кнопке дополнительно вывесил Label1:redraw() но... все еще выводит 0 где же тут косяк ? не заметил очевидную опечатку или не так понял синтаксис методов ? Осторожно! Крайняя упоротость! require("component").gpu.setResolution(60,50) forms=require("forms") forms.ignoreAll() Form1=forms.addForm() Form1.color=12566463 Form1.border=1 en = 0 function Button1onClick(self, user) en = en - 1000000 Label1:redraw() end Button1=Form1:addButton(13,12,"-1M",Button1onClick) Button1.color=7217965 function Button2onClick(self, user) en = en - 100000 Label1:redraw() end Button2=Form1:addButton(13,14,"-100К",Button2onClick) Button2.color=7217965 function Button3onClick(self, user) en = en - 10000 Label1:redraw() end Button3=Form1:addButton(13,16,"-10К",Button3onClick) Button3.color=7217965 Label1=Form1:addLabel(24,14,en) Label1.centered=true Label1.color=984582 Label1.autoSize=false Label1.fontColor=12779488 Label1.W=10 function Button4onClick(self, user) en = en + 1000000 Label1:redraw() end Button4=Form1:addButton(35,12,"+1М",Button4onClick) Button4.color=8101979 function Button5onClick(self, user) en = en + 100000 Label1:redraw() end Button5=Form1:addButton(35,14,"+100к",Button5onClick) Button5.color=8101979 function Button6onClick(self, user) en = en + 10000 Label1:redraw() end Button6=Form1:addButton(35,16,"+10К",Button6onClick) Button6.color=8101979 Label2=Form1:addLabel(10,9,"Выберите количество покупаемой энергии") Label2.color=10395294 Label2.fontColor=0 Label2.W=38 Label2.border=4 Button7=Form1:addButton(24,19,"Оплатить") Button7.fontColor=0 Button7.color=14329120 Label3=Form1:addLabel(10,24,"Проведите смарт-картой по считывателю") Label3.color=10395294 Label3.fontColor=0 Label3.W=37 Label4=Form1:addLabel(26,26,"<<<<<<") Label4.color=10395294 Label4.fontColor=0 Label4.W=6 Label5=Form1:addLabel(14,33,"Количество энергии в хранилище:") Label5.color=10395294 Label5.fontColor=0 Label5.W=31 Label6=Form1:addLabel(24,36,"Label6") Label6.centered=true Label6.color=8060927 Label6.autoSize=false Label6.fontColor=0 Label6.W=10 Label6.alignRight=true forms.run(Form1) Сначала измени текст на самом элементе, а потом перерисовывай. когда ты меняешь начальную переменную, ты меняешь только ее значение, у других переменных значение не меняется. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
HixOff 102 Опубликовано: 4 июня, 2017 Сначала измени текст на самом элементе, а потом перерисовывай. когда ты меняешь начальную переменную, ты меняешь только ее значение, у других переменных значение не меняется. Оо" год прошел я уже переписал вроде-бы... или нет, не помню Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
vlad1vv1 0 Опубликовано: 22 апреля, 2018 Привет! Поясните как должен выглядеть вызов функции по кнопке. Так Form:addButton(20,5,"Open file",function() Моя функция() end) или так? Form:addButton(20,5,"Open file", Моя функция()) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
Zer0Galaxy Автор темы 2 187 Опубликовано: 24 апреля, 2018 Привет! Поясните как должен выглядеть вызов функции по кнопке. Так Form:addButton(20,5,"Open file",function() Моя функция() end) или так? Form:addButton(20,5,"Open file", Моя функция()) Вот так: function My_func() -- что-то там end Form:addButton(20,5,"Open file", My_func) -- без скобочек Но можно и анонимной функцией Form:addButton(20,5,"Open file", function () -- что-то там -- end) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
neon_bones 0 Опубликовано: 2 июля, 2018 Ребят, помогите разобраться с событиями в этой библиотеке. У меня есть программа, которая должна уметь принимать сообщения по модему и писать его в лейбл. Решить ее выходит только с помощью огромного костыля в виде таймера и pullSignal, который просто каждую секунду слушает событие модема и перерисовывает лейбл. При использовании событий почему-то выкидывает или nil, или вообще ничего. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах
man_cubus 28 Опубликовано: 2 июля, 2018 (изменено) огромного костыля в виде таймера и pullSignal Родина дала тебе event.listen, используй его мудро! Вот пример кода local valid_users = {["man_cubus"] = true} local function valid(name) return valid_users[name] end function common.motion_handler(...) local evt = {...} -- evt[1] всегда равно "motion" потому что именно это событие мы и будем слушать, -- остальные поля в соответствии с описанием события на ocdoc.cil.li if valid(evt[6]) then common.red_actions.process_sensor(evt[2]) --[[эта функция тут не показана, но evt[2] - это будет адрес сенсора движения, от которого поймано сообщение]] end end common.event.listen("motion", common.motion_handler) Изменено 2 июля, 2018 пользователем man_cubus 1 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах