以下のページを参考に簡易的なモジュールを作ってみました。
http://chokuto.ifdef.jp/urawaza/listview1.html
このような形でどうでしょうか?
//簡易的なリストビューコントロール
//使い方:
//
//・listview p1,p2,p3,p4
//リストビューコントロールを配置する。
//p1は横幅(省略時300)、p2は縦幅(省略時200)、p3はウィンドウスタイル(通常は省略して可)
//p4は拡張ウィンドウスタイル(通常は省略して可)
//
//・lv_addcol p1,p2,p3,p4,p5,p6
//リストビューの横列を作成する
//p1はリストビューのハンドル、p2は項目名、p3は挿入する横位置、
//p4は横方向のインデックス(省略時はp3と同じ値になる)、
//p5は横幅(省略時は100)、p6は文字の表示位置(0で左、1で右、2で中央。省略時は0)
//
//・lv_additem p1,p2,p3,p4
//リストビューにアイテムを追加する
//p1はリストビューのハンドル、p2は追加する文字列、p3は挿入する縦位置、
//p4は文字列を配置する横方向のインデックス
//
//・lv_setitem p1,p2,p3,p4
//リストビューに文字列を書き加える
//p1はリストビューのハンドル、p2は文字列、p3は縦位置、
//p4は横方向のインデックス
#module
#define global listview(%1=300,%2=200,%3=0x50000001,%4=0) winobj "SysListView32","",%4,%3,%1,%2
#define global lv_addcol(%1,%2="",%3=0,%4=-1,%5=100,%6=0) _lv_addcol %1,%2,%3,%4,%5,%6
#deffunc _lv_addcol int c_h,str _c_s,int c_p,int _c_i,int c_w,int c_f
c_s=_c_s : dim lvc,8
if _c_i<0 : c_i=c_p : else : c_i=_c_i
lvc=0xF,c_f,c_w,varptr(c_s),0,c_i
sendmsg c_h,0x101B,c_p,varptr(lvc) //LVM_INSERTCOLUMN=0x101B
return
#define global lv_additem(%1,%2="",%3=0,%4=0) _lv_additem %1,%2,%3,%4,1
#define global lv_setitem(%1,%2="",%3=0,%4=0) _lv_additem %1,%2,%3,%4,0
#deffunc _lv_additem int i_h,str _i_s,int i_p,int i_c,int i_flg
i_s=_i_s : dim lvi,13
lvi=1,i_p,i_c,0,0,varptr(i_s)
sendmsg i_h,0x1006+(i_flg!=0),0,varptr(lvi) //LVM_SETITEM=0x1006 LVM_INSERTITEM=0x1007
return
#global
listview 600,300 : lv_id=stat
lv_h=objinfo(lv_id,2) //リストビューのハンドル
//項目の設定
lv_addcol lv_h,"日付",0
lv_addcol lv_h,"時間",1
lv_addcol lv_h,"内容",2,,300
lv_addcol lv_h,"値",3
note="" : notesel note
//noteload "syslog.log"
//↑今回は仮にログの内容をnoteaddで入力することにする。実際の使用では以下の2行は削除してください。
noteadd "2021-07-10 15:24 System Started. 正常"
noteadd "2021-07-10 15:25 Can't Create Query. 0x0012"
repeat notemax
noteget buf,cnt
split buf," ",res : items=stat //スペースで文字列を分割
if items<1 : continue
lv_additem lv_h,res(0),cnt,0 //日付
if items<2 : continue
lv_setitem lv_h,res(1),cnt,1 //時間
if items<3 : continue
if items<4 {
lv_setitem lv_h,res(2),cnt,2 //文字列を3分割しかできなかったのなら、3つめの要素を「内容」に書き込む
} else {
//最初の2要素と最後の1要素以外の要素を繋ぎ合わせる。
buf2=""
repeat items-3,2
if cnt>2 : buf2+=" "
buf2+=res(cnt)
loop
lv_setitem lv_h,buf2,cnt,2 //繋ぎ合わせたものを「内容」に書き込む
lv_setitem lv_h,res(items-1),cnt,3 //最後の要素を「値」に書き込む
}
loop