ReWanet Опубликовано 26 ноября, 2017 Поделиться Опубликовано 26 ноября, 2017 Вот хочу узнать как узнать созданный объект чтобы его изменять не прописывая к нему каждую циферку ( надеюсь внятно написал.. ) Код LUA: Скрытый текст local i = 1 local b = 1 function createPointSaver() --Это функция Создания Edit local editLine = {}; editLine[1] = createEdit( UDF1_CEPanel2 ); editLine[2] = createEdit( UDF1_CEPanel2 ); editLine[3] = createEdit( UDF1_CEPanel2 ); editLine[4] = createEdit( UDF1_CEPanel2 ); for x = 1, #editLine do control_setCaption( editLine[x], "EDIT: " .. tostring( b ) ); --Параметры для Edit'ов control_setPosition( editLine[x], ( x * 90 ) - 75 , 15 * i ) editLine[x].height = 16 editLine[x].width = 80 editLine[x].maxlength = 10 editLine[x].font.name = "Arial" editLine[x].font.size = 8 editLine[x].font.color = "0xFFFFFF" editLine[x].color = "0x533F3F" editLine[x].borderstyle = "bsNone" editLine[x].name = "SPoint"..b.."" b = b + 1 end end function CEButton1Click(sender) --Функция по нажатию вызывает функцию выше и создает Edit'ы createPointSaver() i = i + 1.5 UDF1.CELabel1.Caption = wincontrol_getControlCount(UDF1_CEPanel2) end Возьму еще одну попытку и попытаюсь выразится яснее! Как видно из скрипта по нажатию на [ Button1 ] идет вызов функции после чего к [ I ] добавится 1.5 ( расстояние между Edit ) в функции каждому Edit'у задается имя [ editLine[x].name = "SPoint"..b.."" ] так вот чтобы обратиться к какому либо Edit'у нужно прописывать [ UDF1.SPoint(циферка без скобок).Text = "Ля-ля-ля" ] а я хочу чтобы циферка сама подставлялась а не прописывать ее каждый раз ( допустим Обращений будет 100 и писать под 400 UDF1.blabla.blabla = "blabla" ну не комильфо ). Типа такого [ UDF1.SPoint.Text = "Ля-ля-ля" ] ( что не рабочий вариант а лишь глупый пример ). Я конечно попробовал поискать инфу но что-то лапки мешают. Поэтому вот тут эту темку и сделал Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 26 ноября, 2017 Автор Поделиться Опубликовано 26 ноября, 2017 Не много допер Ошибку нашел.. Ну коротко Edit'ы ищутся но все еще задаюсь вопросом как найти сразу 4 Edit'а. Походу не надо вчера до 7 утра сидеть Ссылка на комментарий Поделиться на другие сайты Поделиться
elvis66666 Опубликовано 26 ноября, 2017 Поделиться Опубликовано 26 ноября, 2017 1 час назад, ReWanet сказал: Не много допер Ошибку нашел.. Ну коротко Edit'ы ищутся но все еще задаюсь вопросом как найти сразу 4 Edit'а. Походу не надо вчера до 7 утра сидеть в луа не шарю, но по принципу C++ могу предположить такой вариант: if(editLine++) - перебор всех едитов Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 26 ноября, 2017 Автор Поделиться Опубликовано 26 ноября, 2017 1 минуту назад, elvis66666 сказал: перебор всех едитов Да я перебор уже сделал. Выхватываю один а остальные ( 3 ) не захватываются. Вот типа так: for i = 0,count - 1 do c = component_getComponent(UDF1, i) if object_getClassName(c)=="TCEEdit" then UDF1.CELabel2.Caption = component_getName(c) --Чтоб понять какой получаю ( Первый из списка ( В мое случаем Edit1 )) return c end end Сейчас думаю над захватом всех.. есть мысля как сделать но пока читаю wiki ce и про lua. Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 26 ноября, 2017 Поделиться Опубликовано 26 ноября, 2017 А зачем ты используешь табличные индексы, а не table.insert? Ссылка на комментарий Поделиться на другие сайты Поделиться
CHBS Опубликовано 26 ноября, 2017 Поделиться Опубликовано 26 ноября, 2017 (изменено) Скрытый текст local i = 1 local b = 1 function createPointSaver() -- Это функция Создания Edit local editLine = {}; table.insert(editLine, createEdit(UDF1_CEPanel2)); table.insert(editLine, createEdit(UDF1_CEPanel2)) table.insert(editLine, createEdit(UDF1_CEPanel2)) table.insert(editLine, createEdit(UDF1_CEPanel2)) for key, value in pairs(editLine) do control_setCaption(value, "EDIT: " .. tostring(b)); -- Параметры для Edit\ов control_setPosition(value, (key*90) - 75, 15*i); value.height = 16; value.width = 80; value.maxlength = 10; value.font.name = "Arial"; value.font.size = 8; value.font.color = "0xFFFFFF"; value.color = "0x533F3F"; value.borderstyle = "bsNone"; value.name = "SPoint"..b..""; b = b + 1; end end function CEButton1Click(sender) -- Функция по нажатию вызывает функцию выше и создает Edit\ы createPointSaver() i = i + 1.5 UDF1.CELabel1.Caption = wincontrol_getControlCount(UDF1_CEPanel2) end На счёт key, value in pairs(editLine) там может быть ошибка, так что глаза в оба, протестить не могу, ибо не знаю как, где находятся UDF1 элемент и его панели? Изменено 26 ноября, 2017 пользователем CHBS Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 26 ноября, 2017 Автор Поделиться Опубликовано 26 ноября, 2017 2 минуты назад, CHBS сказал: ибо не знаю как, где находятся UDF1 элемент и его панели? Ммм для чего мне это?) Я создаю и так нормально. Мне нужно найти 4 элемента и с каждым иметь возможно работать отдельно. Элементы и панели находятся в вкладке "Table -> Create Form" Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 26 ноября, 2017 Поделиться Опубликовано 26 ноября, 2017 57 минут назад, ReWanet сказал: Вот типа так: Не рано ли return? For не успевает отрабатывать полностью Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 26 ноября, 2017 Автор Поделиться Опубликовано 26 ноября, 2017 Только что, partoftheworlD сказал: Не рано ли return? For не успевает отрабатывать полностью Ну по логике он доходит до первого элемента с данным КлассИмя и передает его мне. For отрабатывает до первого элемента который подойдет под условия т.е. нашел элемент и передал и все. Хм.. Ссылка на комментарий Поделиться на другие сайты Поделиться
partoftheworlD Опубликовано 26 ноября, 2017 Поделиться Опубликовано 26 ноября, 2017 2 минуты назад, ReWanet сказал: нашел элемент и передал и все Если у тебя этот участок кода не в цикле, то он выйдет из for и не запустится для перебора других объектов, предлагаю в отдельный массив складывать, а после того как for перестанет отрабатывать все вместе выводить return тем же Ссылка на комментарий Поделиться на другие сайты Поделиться
ReWanet Опубликовано 27 ноября, 2017 Автор Поделиться Опубликовано 27 ноября, 2017 Спасибо @partoftheworlD и @CHBS за помощь. Понял свою ошибку \/ . Тему можно закрывать! Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения