標準のlistboxが使えないのでしたら、同等の機能を持つものを
自作すればいいのではないでしょうか。
例えば、「スクロールして」「カーソルが移動し」「キーを押して決定する」
というシンプルなものでしたら次のように作れます(注:普通のWindowsアプリとして制作)。
/* 自作のリストボックス */
// 初期設定
window_size_x = 400 :window_size_y = 400
listbox_size_font = 32
listbox_size_x = 10 :listbox_size_y = 10
listbox_psize_x = listbox_size_x * listbox_size_font :listbox_psize_y = listbox_size_y * listbox_size_font
listbox_pos_x = (window_size_x - listbox_psize_x) / 2 :listbox_pos_y = (window_size_y - listbox_psize_y) / 2
sdim listbox_data, 1024
listbox_data = {"H 水素
He ヘリウム
Li リチウム
Be ベリリウム
B ホウ素
C 炭素
N 窒素
O 酸素
F フッ素
Ne ネオン
Na ナトリウム
Mg マグネシウム
Al アルミニウム
Si ケイ素
P リン
S 硫黄
Cl 塩素
Ar アルゴン
K カリウム
Ca カルシウム"}
notesel listbox_data
listbox_data_max = notemax
listbox_select = 3
listbox_first = 0
// 画面初期化
screen 0, window_size_x, window_size_y
color 0, 0, 0 :boxf ;背景色で塗りつぶし
font msgothic, listbox_size_font, 1
// 描画・操作
change_flg = 1
repeat
// 描画
if(change_flg == 1){
redraw 0
// リストボックス描画
color 128, 128, 128 :boxf listbox_pos_x, listbox_pos_y, listbox_pos_x + listbox_psize_x, listbox_pos_y + listbox_psize_y
// リストボックス内の文字描画
color 255, 255, 255
for k, listbox_first, listbox_first + listbox_size_y
noteget listbox_string, k
pos listbox_pos_x, listbox_pos_y + (k - listbox_first) * listbox_size_font
mes listbox_string
next
// リストボックスの選択部分のみ別に描画
color 0, 0, 255 :boxf listbox_pos_x, listbox_pos_y + (listbox_select - listbox_first) * listbox_size_font, listbox_pos_x + listbox_psize_x, listbox_pos_y + ((listbox_select - listbox_first) + 1) * listbox_size_font
color 255, 0, 0
noteget listbox_select_string, listbox_select
pos listbox_pos_x, listbox_pos_y + (listbox_select - listbox_first) * listbox_size_font
mes listbox_select_string
change_flg = 0
redraw 1
}
// 操作
stick ky, 2 + 8
if(ky & 2){ ;↑
if(listbox_select != 0){
listbox_select--
if(listbox_first > listbox_select) :listbox_first--
change_flg = 1
}
}
if(ky & 8){ ;↓
if(listbox_select != listbox_data_max - 1){
listbox_select++
if(listbox_first + listbox_size_y - 1 < listbox_select) :listbox_first++
change_flg = 1
}
}
if(ky & 32){ ;Enter
noteget listbox_select_string, listbox_select
dialog listbox_select_string
}
await 100
loop