imgui テーブルの作成- FlyWithLua

2023年2月17日
-- imgui はフローティング ウィンドウ内でのみ機能するため、最初に作成する必要があります。
column_wnd = float_wnd_create(350, 150, 1, true)
float_wnd_set_title(column_wnd, "imgui Demo")
float_wnd_set_imgui_builder(column_wnd, "column_demo")
float_wnd_set_onclose(column_wnd, "closed_demo")


function column_demo(wnd, x, y)
    -- ここでは、テーブルを出力する 3 つの異なる方法を紹介します。
        -- それらは同じものの非常に単純なバリエーションです!
        -- [方法 1] TableNextRow() を使用して新しい行を作成し、TableSetColumnIndex() を使用して列を選択します。
        -- 多くの場合、以下は最も柔軟で使いやすいパターンです。
        -- imgui.TextUnformatted("Table 1")
        -- imgui.BeginTable("table1", 3)
        -- for row = 0, 4, 1
        -- do
        --      imgui.TableNextRow()
        --      for column = 0, 3, 1
        --      do
        --          imgui.TableSetColumnIndex(column)
        --          imgui.TextUnformatted("Row " .. row .. " Column " .. column)
        --      end 
        -- end
        -- imgui.EndTable()
        
        -- imgui.TextUnformatted("")
        
        -- 【方法2】 forループ+TableSetColumnIndex()ではなく、TableNextColumn()を複数回呼び出す。
        -- これは通常、各列の内容を手動で送信するコードがある場合により便利です。
        imgui.TextUnformatted("Table 2")
        imgui.BeginTable("table2", 3)
        for row = 0, 4, 1 do
          imgui.TableNextRow()
          imgui.TableNextColumn()
          imgui.TextUnformatted("Row " .. row)
          imgui.TableNextColumn()
          imgui.TextUnformatted("Some contents")
          imgui.TableNextColumn()
          imgui.TextUnformatted("123.456");  
        end
        imgui.EndTable()
        
        -- imgui.TextUnformatted("")
        
        -- [方法 3] 各セルの_前_に TableNextColumn() を呼び出します。 
        -- TableNextColumn() は自動的にラップアラウンドし、必要に応じて新しい roes を作成するため、TableNextRow() を呼び出すことはありません。
        -- これは通常、すべてのセルに同じ種類のデータが含まれている場合により便利です。
        -- imgui.TextUnformatted("Table 3")
        -- imgui.BeginTable("table2", 3)
        -- for item = 0, 14, 1
        -- do
        --     imgui.TableNextColumn()
        --     imgui.TextUnformatted("Item " .. item)
        -- end
        -- imgui.EndTable()
end

function closed_demo(wnd)
    -- Tこの関数は、ユーザーがウィンドウを閉じるときに呼び出されます。 
    -- ウィンドウが既に破棄されているため、この関数では imgui 関数の描画または呼び出しは許可されない。
end