imgui.InputText

schtolz

Известный
Автор темы
112
66
Версия MoonLoader
.026-beta
Lua:
    local textBuffer = imgui.ImBuffer(v.text,256)
    if imgui.InputText(u8"Условие поиска##"..v.text,textBuffer)  then
                        v.text = textBuffer.v
                        json.save(j,"еуеу.json")
                    end
Работает по одному символу. Хочу ввести целое слово, а оно вводит один символ и фокус смещается. Необходимо еще раз нажать на InputText для того, чтобы продолжить ввод. При этом все это снова повторяется. Мне нужен полноценный ввод при этом чтобы сохраняло.
Вариант с добавлением отдельной кнопки помогает справиться с этим, но тогда сохранение в json не происходит, потому что при смещении фокуса с InputText текст переписывается.

Lua:
                    local textBuffer = imgui.ImBuffer(v.text,256)
                    imgui.InputText(u8"Условие поиска##"..v.text,textBuffer)
                    if imgui.Button(u8'Сохранить##'..v.text) then
                        v.text = textBuffer.v
                        json.save(j,"еуеу.json")
                    end
Что я вообще хочу? У меня динамически вводятся поля, они сохраняются в json. Для редактирования полей как раз я и пишу эту функцию. При нажатии на некоторую кнопку "Редактировать" должны появляется InputText и таким образом можно отредактировать любую запись в json
 
Последнее редактирование:

Sadow

Известный
1,439
587
Lua:
    local textBuffer = imgui.ImBuffer(v.text,256)
    if imgui.InputText(u8"Условие поиска##"..v.text,textBuffer)  then
                        v.text = textBuffer.v
                        json.save(j,"еуеу.json")
                    end
Работает по одному символу. Хочу ввести целое слово, а оно вводит один символ и фокус смещается. Необходимо еще раз нажать на InputText для того, чтобы продолжить ввод. При этом все это снова повторяется. Мне нужен полноценный ввод при этом чтобы сохраняло.
Вариант с добавлением отдельной кнопки помогает справиться с этим, но тогда сохранение в json не происходит, потому что при смещении фокуса с InputText текст переписывается.

Lua:
                    local textBuffer = imgui.ImBuffer(v.text,256)
                    imgui.InputText(u8"Условие поиска##"..v.text,textBuffer)
                    if imgui.Button(u8'Сохранить##'..v.text) then
                        v.text = textBuffer.v
                        json.save(j,"abTun.json")
                    end
Что я вообще хочу? У меня динамически вводятся поля, они сохраняются в json. Для редактирования полей как раз я и пишу эту функцию. При нажатии на некоторую кнопку "Редактировать" должны появляется InputText и таким образом можно отредактировать любую запись в json
Переменную с буфером надо регистрировать не в onDrawFrame. И чему равна переменная v.text?
 
  • Нравится
Реакции: qdIbp

schtolz

Известный
Автор темы
112
66
Я не понимаю, что вы хотите, пожалуйста, покажите мне весь код и объясните лучше, что вы хотите
nudRl78r.jpg

Есть следующая таблица. Данные для этой таблицы берутся из json файла. Их может быть неограниченное количество.
Я хочу сделать редактирование таблицы. Пока что это реализовано так:

4A5tdgev.jpg

Прошу не обращать внимания на третий столбец, в котором берется только number3. Переведем внимание на первый столбец первой строки.

Переменную с буфером надо регистрировать не в onDrawFrame. И чему равна переменная v.text?
Дело в том, что мне нужно, чтобы эта переменная была динамичной для каждой ячейки в таблице. Ведь строк может быть неограниченное количество, будет плохо, если я буду регистрировать огромное количество ImBuffer для каждой такой ячейки.
v.text возникает при парсере json файла
Lua:
for k,v in ipairs(j) do end
JSON файл выглядит следующим образом
JSON:
 {
    "price": "number1",
    "name": "name1",
    "text": "test1"
}, {
    "price": "number2",
    "name": "name2",
    "text": "test2"
}, {
    "price": "number3",
    "name": "name3",
    "text": "test3"
}
 

wojciech?

Известный
215
130
Дело в том, что мне нужно, чтобы эта переменная была динамичной для каждой ячейки в таблице.
если ты парсишь json в какую-то таблицу и каждый её элемент является таблицей, то можно добавить для последней метаметод:
Lua:
local t = { text = "test1", price = "number1", name = "name1" } -- элемент таблицы

setmetatable(t, {
    __index = function(t, k)
        if k == "ImBuffer" then
            t[k] = imgui.ImBuffer(t.text, 256)
            return t[k]
        end
    end
})

тогда при первой попытке обратится к буфферу он будет создаваться в элементе (то есть v.ImBuffer)