I've discovered a critical issue: inserting or deleting columns in the list view corrupts existing subitem styles. 
See the demo script below - after clicking 'Insert Column', the new column succeeds and columns shift right, but background styles don't migrate with their original columns.
Script
var xdlg, xcrt, xcmd, xutil;
function OnClick(clickData) {
xutil = DOpus.FSUtil;
xcrt = DOpus.Create;
xcmd = xcrt.Command;
xdlg = DOpus.Dlg;
xdlg.window = DOpus.Listers(0);
xdlg.title = "ListViewExample";
xdlg.template = "LV";
xdlg.detach = true;
xdlg.Show();
loadListView();
while(true){
var Msg = xdlg.GetMsg();
if (!Msg.result) break;
var focus = Msg.focus;
var event = Msg.event;
var mctrl = Msg.control;
var value = String(Msg.value);
var index = String(Msg.index);
var data = String(Msg.data);
if(mctrl === "insertBtn"){
xinsertColumn();
}
}
}
// Test: insert new column
function xinsertColumn(){
var listView = xdlg.Control("listview1");
var columns = listView.columns;
// Bug: New column insertion overwrites existing subitem background styles
columns.InsertColumn("Rank1", 3);
columns.InsertColumn("Rank2", 5);
}
// Template data
function loadListView(){
var listView = xdlg.Control("listview1");
var dataList = getDataList();
try{
for(var i = 0; i < dataList.length; i++){
var rdata = dataList[i];
var rid = listView.AddItem(rdata[0]);
var items = listView.GetItemAt(rid);
var subitems = items.subitems;
var oee = i % 2 != 0;
for(var d = 1; d < rdata.length; d++){
subitems(d-1) = rdata[d];
if(oee) subitems(d-1).bg("#303030");
subitems(d-1).bg("#1E5128");
}
var cell3 = subitems(2);
if(String(cell3).search("/08/") > 0){
cell3.fg("#3099ff");
}
var cell5 = subitems(4);
if(Number(cell5) > 2000){
cell5.fg("#FFFFFF");
cell5.bg("#F00FFF");
}
}
listView.columns.AutoSize();
}catch(err){
xlog("error message: " + err.message);
}
}
// Template data
function getDataList(){
var datas = [
[1, "MAX-SHA", "US-F20-10", "2005/07/01", "45.2", "1500", "N", "200", "v1.3.13"],
[2, "MAX-SHA", "US-F20-11", "2006/06/12", "40.23", "2343", "Y", "343", "v2.5.1"],
[3, "MAX-SHA", "US-F20-12", "2006/08/20", "53.39", "1120", "Y", "90", "v1.4.22"],
[4, "MAX-SHB", "US-K45-S4", "2007/05/23", "58.9", "300", "N", "10", "v2.8.0"]
];
return datas;
}
// Print log
function xlog(str){
DOpus.Output(String(str));
}
Resources
<resources>
<resource name="LV" type="dialog">
<dialog height="183" lang="chs" maximize="yes" minimize="yes" opacity="230" resize="yes" title="DService" width="374">
<control height="175" name="tab1" type="tab" width="366" x="5" y="4">
<tabs>
<tab dialog="P1" />
</tabs>
</control>
</dialog>
</resource>
<resource name="P1" type="dialog">
<dialog height="158" lang="chs" title="DataList" width="360">
<control halign="left" height="12" name="xid" tip=" " type="edit" width="64" x="34" y="7" />
<control halign="left" height="8" name="static1" title="Id:" type="static" valign="top" width="12" x="18" y="10" />
<control fullrow="yes" height="132" name="listview1" type="listview" viewmode="details" width="360" x="0" y="26">
<columns>
<item text="Id" />
<item text="Project" />
<item text="Name" />
<item text="Date" />
<item text="Price" />
<item text="Sales" />
<item text="Status" />
<item text="Likes" />
<item text="Version" />
<item text="Download" />
<item text="Remark" />
</columns>
</control>
<control halign="left" height="8" name="static2" title="Name:" type="static" valign="top" width="27" x="120" y="9" />
<control halign="left" height="12" name="xname" tip=" " type="edit" width="73" x="148" y="7" />
<control height="14" name="insertBtn" title="Insert Column" type="button" width="57" x="249" y="6" />
</dialog>
</resource>
</resources>