for文で連続作成したアイテムを縦横並べる – FlyWithLua

2023年4月30日

for文で作成したものは基本縦一列に並ぶ、それを列にして並べる簡単な方法が無い。

色々やった方法は、まず10行目の「imgui.SameLine()」で横一列に並べる。それをifで希望の「i」の数値で改行することにより2段目が出来る。それを繰り返して改行していく。
この方法以外にやり方がネットを探しても見つからなかったので、これが自分が考えた最良の方法になる。

------------------------------------------------------------------------
-- ウインドウの作成
wnd = float_wnd_create(600, 300, 1, true)
float_wnd_set_title(wnd, "Buttons2")            --wnd変数をセット
float_wnd_set_imgui_builder(wnd, "im_on_build") --関数を読み込みセットする
-----------------------------------------------------------------------
function im_on_build(wnd, x, y)
  for i = 1, 25 do
    imgui.Button("Button", 60, 30)
    imgui.SameLine()
    -- 改行専用
    if i == 7 then             
      imgui.TextUnformatted("\n") --本来テキストが入るところに改行を入れるとボタンを改行できるようになる。	
      imgui.SetCursorPosY(48)   --2段目のボタン位置 
    elseif i == 14 then   
      imgui.TextUnformatted("\n") 
      imgui.SetCursorPosY(88)   -- 3段目のボタン位置 
    elseif i == 21 then       
      imgui.TextUnformatted("\n") 
      imgui.SetCursorPosY(128)   -- 3段目のボタン位置
    end
  end
end
-- window close
function polo_onclose(polo_wnd)
  float_wnd_destroy(polo_wnd) --消し去る
end