$PBExportHeader$n_svc_lv.sru $PBExportComments$Listview Service forward global type n_svc_lv from n_svc_base end type type struc_coldef from structure within n_svc_lv end type end forward type struc_coldef from structure string columnname string datatype string headertext integer width integer x integer alignment end type global type n_svc_lv from n_svc_base end type global n_svc_lv n_svc_lv type prototypes FUNCTION long Header_GetSetItem(long hWnd, long uMsg, long wParam, ref hditem lpst) Library "user32" Alias For "SendMessageW" end prototypes type variables Protected: CONSTANT string VIEW_LARGE_ICON = "listviewlargeicon!" CONSTANT string VIEW_SMALL_ICON = "listviewsmallicon!" CONSTANT string VIEW_LIST = "listviewlist!" CONSTANT string VIEW_DETAIL = "listviewreport!" CONSTANT long LVM_FIRST = 4096 CONSTANT long LVN_FIRST = -100 CONSTANT long SORT_ASCENDING = 133 CONSTANT long SORT_DESCENDING = 134 CONSTANT long GWL_STYLE = -16 Constant long HDM_FIRST = 4608 //&H1200 Constant long HDM_GETITEMA = (HDM_FIRST + 3) Constant long HDM_SETITEMA = (HDM_FIRST + 4) Constant long HDM_GETITEMW = (HDM_FIRST + 11) Constant long HDM_SETITEMW = (HDM_FIRST + 12) Constant long HDM_GETITEM = HDM_GETITEMW Constant long HDM_SETITEM = HDM_SETITEMW Constant long HDM_SETIMAGELIST = (HDM_FIRST + 8) Constant long HDM_GETITEMCOUNT = (HDM_FIRST + 0) Constant long HDM_ORDERTOINDEX = (HDM_FIRST + 15) CONSTANT long HDS_HOTTRACK = 4 //0x0004 Constant long HDI_FORMAT = 4 Constant long HDI_IMAGE = 32 Constant long HDF_LEFT = 0 Constant long HDF_RIGHT = 1 Constant long HDF_IMAGE = 2048 //&H800 Constant long HDF_BITMAP_ON_RIGHT = 4096 //&H1000 Constant long HDF_STRING = 16384 //&H4000 Constant long HDF_SORTDOWN = //&H200 Constant long HDF_SORTUP = //&H400 Constant long HDF_NOSORT = 61951 Constant long HDF_SORTED = 1536 Constant long HDI_WIDTH = 1 Constant long HDI_HEIGHT = HDI_WIDTH Constant long HDI_TEXT = 2 Constant long HDI_LPARAM = 8 Constant long HDI_BITMAP = 16 CONSTANT long LVS_ICON = 0 // 0x0000 CONSTANT long LVS_REPORT = 1 // 0x0001 CONSTANT long LVS_SMALLICON = 2 // 0x0002 CONSTANT long LVS_LIST = 3 // 0x0003 CONSTANT long LVS_TYPEMASK = 3 // 0x0003 CONSTANT long LVS_SINGLESEL = 4 // 0x0004 CONSTANT long LVS_SHOWSELALWAYS = 8 // 0x0008 CONSTANT long LVS_SORTASCENDING = 16 // 0x0010 CONSTANT long LVS_SORTDESCENDING = 32 // 0x0020 CONSTANT long LVS_SHAREIMAGELISTS = 64 // 0x0040 CONSTANT long LVS_NOLABELWRAP = 128 // 0x0080 CONSTANT long LVS_AUTOARRANGE = 256 // 0x0100 CONSTANT long LVS_EDITLABELS = 512 // 0x0200 CONSTANT long LVS_OWNERDATA = 4096 // 0x1000 CONSTANT long LVS_NOSCROLL = 8192 // 0x2000 CONSTANT long LVS_TYPESTYLEMASK = 64512 // 0xfc00 CONSTANT long LVS_ALIGNTOP = 0 // 0x0000 CONSTANT long LVS_ALIGNLEFT = 2048 // 0x0800 CONSTANT long LVS_ALIGNMASK = 3072 // 0x0c00 CONSTANT long LVS_OWNERDRAWFIXED = 1024 // 0x0400 CONSTANT long LVS_NOCOLUMNHEADER = 16384 // 0x4000 CONSTANT long LVS_NOSORTHEADER = 32768 // 0x8000 CONSTANT long LVM_GETBKCOLOR = (LVM_FIRST + 0) CONSTANT long LVM_SETBKCOLOR = (LVM_FIRST + 1) CONSTANT long LVM_GETIMAGELIST = (LVM_FIRST + 2) CONSTANT long LVM_SETIMAGELIST = (LVM_FIRST + 3) CONSTANT long LVM_GETITEMCOUNT = (LVM_FIRST + 4) CONSTANT long LVSIL_NORMAL = 0 CONSTANT long LVSIL_SMALL = 1 CONSTANT long LVSIL_STATE = 2 CONSTANT long LVIF_TEXT = 1 // 0x0001 CONSTANT long LVIF_IMAGE = 2 // 0x0002 CONSTANT long LVIF_PARAM = 4 // 0x0004 CONSTANT long LVIF_STATE = 8 // 0x0008 CONSTANT long LVIF_INDENT = 16 // 0x0010 CONSTANT long LVIF_NORECOMPUTE = 2048 // 0x0800 CONSTANT long LVIS_FOCUSED = 1 // 0x0001 CONSTANT long LVIS_SELECTED = 2 // 0x0002 CONSTANT long LVIS_CUT = 4 // 0x0004 CONSTANT long LVIS_DROPHILITED = 8 // 0x0008 CONSTANT long LVIS_ACTIVATING = 32 // 0x0020 CONSTANT long LVIS_OVERLAYMASK = 3840 // 0x0F00 CONSTANT long LVIS_STATEIMAGEMASK = 61440 // 0xF000 CONSTANT long LVM_GETITEMA = (LVM_FIRST + 5) CONSTANT long LVM_GETITEMW = (LVM_FIRST + 75) CONSTANT long LVM_GETITEM = LVM_GETITEMA CONSTANT long LVM_SETITEMA = (LVM_FIRST + 6) CONSTANT long LVM_SETITEMW = (LVM_FIRST + 76) CONSTANT long LVM_SETITEM = LVM_SETITEMA CONSTANT long LVM_INSERTITEMA = (LVM_FIRST + 7) CONSTANT long LVM_INSERTITEMW = (LVM_FIRST + 77) CONSTANT long LVM_INSERTITEM = LVM_INSERTITEMA CONSTANT long LVM_DELETEITEM = (LVM_FIRST + 8) CONSTANT long LVM_DELETEALLITEMS = (LVM_FIRST + 9) CONSTANT long LVM_GETCALLBACKMASK = (LVM_FIRST + 10) CONSTANT long LVM_SETCALLBACKMASK = (LVM_FIRST + 11) CONSTANT long LVM_GETNEXTITEM = (LVM_FIRST + 12) CONSTANT long LVM_FINDITEMA = (LVM_FIRST + 13) CONSTANT long LVM_FINDITEMW = (LVM_FIRST + 83) CONSTANT long LVM_FINDITEM = LVM_FINDITEMA CONSTANT long LVM_GETITEMRECT = (LVM_FIRST + 14) CONSTANT long LVM_SETITEMPOSITION = (LVM_FIRST + 15) CONSTANT long LVM_GETITEMPOSITION = (LVM_FIRST + 16) CONSTANT long LVM_GETSTRINGWIDTHA = (LVM_FIRST + 17) CONSTANT long LVM_GETSTRINGWIDTHW = (LVM_FIRST + 87) CONSTANT long LVM_GETSTRINGWIDTH = LVM_GETSTRINGWIDTHA CONSTANT long LVM_HITTEST = (LVM_FIRST + 18) CONSTANT long LVM_ENSUREVISIBLE = (LVM_FIRST + 19) CONSTANT long LVM_SCROLL = (LVM_FIRST + 20) CONSTANT long LVM_REDRAWITEMS = (LVM_FIRST + 21) CONSTANT long LVM_ARRANGE = (LVM_FIRST + 22) CONSTANT long LVM_EDITLABELA = (LVM_FIRST + 23) CONSTANT long LVM_EDITLABELW = (LVM_FIRST + 118) CONSTANT long LVM_EDITLABEL = LVM_EDITLABELA CONSTANT long LVM_GETEDITCONTROL = (LVM_FIRST + 24) CONSTANT long LVM_GETCOLUMNA = (LVM_FIRST + 25) CONSTANT long LVM_GETCOLUMNW = (LVM_FIRST + 95) CONSTANT long LVM_GETCOLUMN = LVM_GETCOLUMNA CONSTANT long LVM_SETCOLUMNA = (LVM_FIRST + 26) CONSTANT long LVM_SETCOLUMNW = (LVM_FIRST + 96) CONSTANT long LVM_SETCOLUMN = LVM_SETCOLUMNA CONSTANT long LVM_INSERTCOLUMNA = (LVM_FIRST + 27) CONSTANT long LVM_INSERTCOLUMNW = (LVM_FIRST + 97) CONSTANT long LVM_INSERTCOLUMN = LVM_INSERTCOLUMNA CONSTANT long LVM_DELETECOLUMN = (LVM_FIRST + 28) CONSTANT long LVM_GETCOLUMNWIDTH = (LVM_FIRST + 29) CONSTANT long LVM_CREATEDRAGIMAGE = (LVM_FIRST + 33) CONSTANT long LVM_GETVIEWRECT = (LVM_FIRST + 34) CONSTANT long LVM_GETTEXTCOLOR = (LVM_FIRST + 35) CONSTANT long LVM_SETTEXTCOLOR = (LVM_FIRST + 36) CONSTANT long LVM_GETTEXTBKCOLOR = (LVM_FIRST + 37) CONSTANT long LVM_SETTEXTBKCOLOR = (LVM_FIRST + 38) CONSTANT long LVM_GETTOPINDEX = (LVM_FIRST + 39) CONSTANT long LVM_GETCOUNTPERPAGE = (LVM_FIRST + 40) CONSTANT long LVM_GETORIGIN = (LVM_FIRST + 41) CONSTANT long LVM_UPDATE = (LVM_FIRST + 42) CONSTANT long LVM_SETITEMSTATE = (LVM_FIRST + 43) CONSTANT long LVM_GETITEMSTATE = (LVM_FIRST + 44) CONSTANT long LVM_GETITEMTEXTA = (LVM_FIRST + 45) CONSTANT long LVM_GETITEMTEXTW = (LVM_FIRST + 115) CONSTANT long LVM_GETITEMTEXT = LVM_GETITEMTEXTA CONSTANT long LVM_SETITEMTEXTA = (LVM_FIRST + 46) CONSTANT long LVM_SETITEMTEXTW = (LVM_FIRST + 116) CONSTANT long LVM_SETITEMTEXT = LVM_SETITEMTEXTA CONSTANT long LVN_GETINFOTIPA = (LVN_FIRST - 57) CONSTANT long LVN_GETINFOTIPW = (LVN_FIRST - 58) CONSTANT long LVN_GETINFOTIP = LVN_GETINFOTIPA CONSTANT long LVNI_ALL = 0 // 0x0000 CONSTANT long LVNI_FOCUSED = 1 // 0x0001 CONSTANT long LVNI_SELECTED = 2 // 0x0002 CONSTANT long LVNI_CUT = 4 // 0x0004 CONSTANT long LVNI_DROPHILITED = 16 // 0x0008 CONSTANT long LVNI_ABOVE = 256 // 0x0100 CONSTANT long LVNI_BELOW = 512 // 0x0200 CONSTANT long LVNI_TOLEFT = 1024 // 0x0400 CONSTANT long LVNI_TORIGHT = 2048 // 0x0800 CONSTANT long LVFI_PARAM = 1 // 0x0001 CONSTANT long LVFI_STRING = 2 // 0x0002 CONSTANT long LVFI_PARTIAL = 8 // 0x0008 CONSTANT long LVFI_WRAP = 32 // 0x0020 CONSTANT long LVFI_NEARESTXY = 64 // 0x0040 CONSTANT long LVIR_BOUNDS = 0 CONSTANT long LVIR_ICON = 1 CONSTANT long LVIR_LABEL = 2 CONSTANT long LVIR_SELECTBOUNDS = 3 CONSTANT long LVHT_NOWHERE = 1 // 0x0001 CONSTANT long LVHT_ONITEMICON = 2 // 0x0002 CONSTANT long LVHT_ONITEMLABEL = 4 // 0x0004 CONSTANT long LVHT_ONITEMSTATEICON = 8 // 0x0008 CONSTANT long LVHT_ONITEM = (LVHT_ONITEMICON + LVHT_ONITEMLABEL + LVHT_ONITEMSTATEICON) CONSTANT long LVHT_ABOVE = 8 // 0x0008 CONSTANT long LVHT_BELOW = 16 // 0x0010 CONSTANT long LVHT_TORIGHT = 32 // 0x0020 CONSTANT long LVHT_TOLEFT = 64 // 0x0040 CONSTANT long LVA_DEFAULT = 0 // 0x0000 CONSTANT long LVA_ALIGNLEFT = 1 // 0x0001 CONSTANT long LVA_ALIGNTOP = 2 // 0x0002 CONSTANT long LVA_SNAPTOGRID = 5 // 0x0005 CONSTANT long LVCF_FMT = 1 // 0x0001 CONSTANT long LVCF_WIDTH = 2 // 0x0002 CONSTANT long LVCF_TEXT = 4 // 0x0004 CONSTANT long LVCF_SUBITEM = 8 // 0x0008 CONSTANT long LVCF_IMAGE = 16 // 0x0010 CONSTANT long LVCF_ORDER = 32 // 0x0020 CONSTANT long LVCFMT_LEFT = 0 // 0x0000 CONSTANT long LVCFMT_RIGHT = 1 // 0x0001 CONSTANT long LVCFMT_CENTER = 2 // 0x0002 CONSTANT long LVCFMT_JUSTIFYMASK = 3 // 0x0003 CONSTANT long LVCFMT_IMAGE = 2048 // 0x0800 CONSTANT long LVCFMT_BITMAP_ON_RIGHT = 4096 // 0x1000 CONSTANT long LVCFMT_COL_HAS_IMAGES = 32768 // 0x8000 CONSTANT long LVSCW_AUTOSIZE = -1 CONSTANT long LVSCW_AUTOSIZE_USEHEADER = -2 CONSTANT long LVM_SETCOLUMNWIDTH = (LVM_FIRST + 30) CONSTANT long LVM_GETHEADER = (LVM_FIRST + 31) CONSTANT long LVSICF_NOINVALIDATEALL = 1 // 0x00000001 CONSTANT long LVSICF_NOSCROLL = 2 // 0x00000002 CONSTANT long LVM_SETITEMCOUNT = (LVM_FIRST + 47) CONSTANT long LVM_SORTITEMS = (LVM_FIRST + 48) CONSTANT long LVM_SETITEMPOSITION32 = (LVM_FIRST + 49) CONSTANT long LVM_GETSELECTEDCOUNT = (LVM_FIRST + 50) CONSTANT long LVM_GETITEMSPACING = (LVM_FIRST + 51) CONSTANT long LVM_GETISEARCHSTRINGA = (LVM_FIRST + 52) CONSTANT long LVM_GETISEARCHSTRINGW = (LVM_FIRST + 117) CONSTANT long LVM_GETISEARCHSTRING = LVM_GETISEARCHSTRINGW CONSTANT long LVM_SETICONSPACING = (LVM_FIRST + 53) CONSTANT long LVM_SETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 54) // optional wParam == mask CONSTANT long LVM_GETEXTENDEDLISTVIEWSTYLE = (LVM_FIRST + 55) CONSTANT long LVS_EX_GRIDLINES = 1 // 0x00000001 CONSTANT long LVS_EX_SUBITEMIMAGES = 2 // 0x00000002 CONSTANT long LVS_EX_CHECKBOXES = 4 // 0x00000004 CONSTANT long LVS_EX_TRACKSELECT = 8 // 0x00000008 CONSTANT long LVS_EX_HEADERDRAGDROP = 16 // 0x00000010 CONSTANT long LVS_EX_FULLROWSELECT = 32 // 0x00000020 // applies to report mode only CONSTANT long LVS_EX_ONECLICKACTIVATE = 64 // 0x00000040 CONSTANT long LVS_EX_TWOCLICKACTIVATE = 128 // 0x00000080 CONSTANT long LVS_EX_FLATSB = 256 // 0x00000100 CONSTANT long LVS_EX_REGIONAL = 512 // 0x00000200 CONSTANT long LVS_EX_INFOTIP = 1024 // 0x00000400 // u_lv does InfoTips for you CONSTANT long LVS_EX_UNDERLINEHOT = 2048 // 0x00000800 CONSTANT long LVS_EX_UNDERLINECOLD = 4096 // 0x00001000 CONSTANT long LVS_EX_MULTIWORKAREAS = 8192 // 0x00002000 CONSTANT long LVM_GETSUBITEMRECT = (LVM_FIRST + 56) CONSTANT long LVM_SUBITEMHITTEST = (LVM_FIRST + 57) CONSTANT long LVM_SETCOLUMNORDERARRAY = (LVM_FIRST + 58) CONSTANT long LVM_GETCOLUMNORDERARRAY = (LVM_FIRST + 59) CONSTANT long LVM_SETHOTITEM = (LVM_FIRST + 60) CONSTANT long LVM_GETHOTITEM = (LVM_FIRST + 61) CONSTANT long LVM_SETHOTCURSOR = (LVM_FIRST + 62) CONSTANT long LVM_GETHOTCURSOR = (LVM_FIRST + 63) CONSTANT long LVM_APPROXIMATEVIEWRECT = (LVM_FIRST + 64) CONSTANT long LV_MAX_WORKAREAS = 16 CONSTANT long LVM_SETWORKAREAS = (LVM_FIRST + 65) CONSTANT long LVM_GETWORKAREAS = (LVM_FIRST + 70) CONSTANT long LVM_GETNUMBEROFWORKAREAS = (LVM_FIRST + 73) CONSTANT long LVM_GETSELECTIONMARK = (LVM_FIRST + 66) CONSTANT long LVM_SETSELECTIONMARK = (LVM_FIRST + 67) CONSTANT long LVM_SETHOVERTIME = (LVM_FIRST + 71) CONSTANT long LVM_GETHOVERTIME = (LVM_FIRST + 72) CONSTANT long LVM_SETTOOLTIPS = (LVM_FIRST + 74) CONSTANT long LVM_GETTOOLTIPS = (LVM_FIRST + 78) CONSTANT long LVBKIF_SOURCE_NONE = 0 // 0x00000000 CONSTANT long LVBKIF_SOURCE_HBITMAP = 1 // 0x00000001 CONSTANT long LVBKIF_SOURCE_URL = 2 // 0x00000002 CONSTANT long LVBKIF_SOURCE_MASK = 3 // 0x00000003 CONSTANT long LVBKIF_STYLE_NORMAL = 0 // 0x00000000 CONSTANT long LVBKIF_STYLE_TILE = 16 // 0x00000010 CONSTANT long LVBKIF_STYLE_MASK = 16 // 0x00000010 CONSTANT long LVM_SETBKIMAGEA = (LVM_FIRST + 68) CONSTANT long LVM_SETBKIMAGEW = (LVM_FIRST + 138) CONSTANT long LVM_GETBKIMAGEA = (LVM_FIRST + 69) CONSTANT long LVM_GETBKIMAGEW = (LVM_FIRST + 139) CONSTANT long LVM_SETBKIMAGE = LVM_SETBKIMAGEA CONSTANT long LVM_GETBKIMAGE = LVM_GETBKIMAGEA CONSTANT long LVKF_ALT = 1 // 0x0001 CONSTANT long LVKF_CONTROL = 2 // 0x0002 CONSTANT long LVKF_SHIFT = 4 // 0x0004 CONSTANT long LVN_ITEMCHANGING = (LVN_FIRST - 0) CONSTANT long LVN_ITEMCHANGED = (LVN_FIRST - 1) CONSTANT long LVN_INSERTITEM = (LVN_FIRST - 2) CONSTANT long LVN_DELETEITEM = (LVN_FIRST - 3) CONSTANT long LVN_DELETEALLITEMS = (LVN_FIRST - 4) CONSTANT long LVN_BEGINLABELEDITA = (LVN_FIRST - 5) CONSTANT long LVN_BEGINLABELEDITW = (LVN_FIRST - 75) CONSTANT long LVN_ENDLABELEDITA = (LVN_FIRST - 6) CONSTANT long LVN_ENDLABELEDITW = (LVN_FIRST - 76) CONSTANT long LVN_COLUMNCLICK = (LVN_FIRST - 8) CONSTANT long LVN_BEGINDRAG = (LVN_FIRST - 9) CONSTANT long LVN_BEGINRDRAG = (LVN_FIRST - 11) CONSTANT long LVN_ODCACHEHINT = (LVN_FIRST - 13) CONSTANT long LVN_ODFINDITEMA = (LVN_FIRST - 52) CONSTANT long LVN_ODFINDITEMW = (LVN_FIRST - 79) CONSTANT long LVN_ITEMACTIVATE = (LVN_FIRST - 14) CONSTANT long LVN_ODSTATECHANGED = (LVN_FIRST - 15) CONSTANT long LVN_ODFINDITEM = LVN_ODFINDITEMA CONSTANT long LVN_HOTTRACK = (LVN_FIRST - 21) CONSTANT long LVN_GETDISPINFOA = (LVN_FIRST - 50) CONSTANT long LVN_GETDISPINFOW = (LVN_FIRST - 77) CONSTANT long LVN_SETDISPINFOA = (LVN_FIRST - 51) CONSTANT long LVN_SETDISPINFOW = (LVN_FIRST - 78) CONSTANT long LVN_BEGINLABELEDIT = LVN_BEGINLABELEDITW CONSTANT long LVN_ENDLABELEDIT = LVN_ENDLABELEDITW CONSTANT long LVN_GETDISPINFO = LVN_GETDISPINFOW CONSTANT long LVN_SETDISPINFO = LVN_SETDISPINFOW CONSTANT long LVIF_DI_SETITEM = 4096 // 0x1000 CONSTANT long LVN_KEYDOWN = (LVN_FIRST - 55) CONSTANT long LVN_MARQUEEBEGIN = (LVN_FIRST - 56) CONSTANT long LVGIT_UNFOLDED = 1 // 0x0001 end variables forward prototypes protected function integer of_getcolumndefs (ref n_svc_mgr anv_svc, readonly datastore ads_source, ref struc_coldef astr[]) public function integer of_deleteselected (listview alv) protected subroutine of_toggleselect (ref n_svc_mgr anv_svc, readonly listview alv, readonly integer ai_on) public subroutine of_deselectall (ref n_svc_mgr anv_svc, readonly listview alv) public function long of_selectall (ref n_svc_mgr anv_svc, readonly listview alv) public subroutine of_ensurevisible (ref n_svc_mgr anv_svc, readonly listview alv, readonly long al_index) public function integer of_finditem (ref n_svc_mgr anv_svc, readonly listview alv, ref listviewitem alvi_ret, readonly string as_searchstring, readonly boolean ab_scrolltoitem, readonly boolean ab_selectitem) public function string of_getcolumnwidths (readonly listview alv) public function long of_getfocuseditem (readonly listview alv) public function long of_getselecteditem (readonly listview alv) public function long of_insertrow (ref n_svc_mgr anv_svc, readonly listview alv, readonly datastore ads, readonly long alrow, readonly listviewitem alvi, readonly string as_datacolumn, readonly string as_iconcolumn) public function long of_insertrow (ref n_svc_mgr anv_svc, readonly listview alv, readonly datastore ads, readonly long al_row) public function long of_insertrow (ref n_svc_mgr anv_svc, readonly listview alv, readonly datastore ads, readonly long al_row, readonly listviewitem alvi) public function long of_selectinverse (readonly listview alv) public subroutine of_setbackgroundimage (ref n_svc_mgr anv_svc, readonly listview alv, readonly string as_fullpath) public subroutine of_setcolumnwidths (ref n_svc_mgr anv_svc, readonly listview alv, string as_widths) public function string of_viewtostring (readonly listviewview alvv) public function listviewview of_stringtoview (readonly string as_view) public function string of_tostring (ref n_svc_mgr anv_svc, readonly listview alv) public function integer of_userdefinedsort (readonly listview alv, readonly integer ai_col, readonly string as_datatype, readonly boolean ab_ascending, readonly integer ai_index1, readonly integer ai_index2) public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template, readonly string as_datacolumn, readonly string as_iconcolumn, readonly powerobject apo_callback, readonly string as_callbackeventname) public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly powerobject apo_callback, readonly string as_callbackeventname) public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template, readonly powerobject apo_callback, readonly string as_callbackeventname) public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination) public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template) public subroutine of_sortcolumn (ref n_svc_mgr anv_svc, readonly u_lv alv, readonly integer ai_column, readonly boolean ab_ascending) protected subroutine of_sortcolumnicon (ref n_svc_mgr anv_svc, readonly listview alv, readonly integer ai_column, readonly boolean ab_ascending) protected subroutine of_sortcolumnxp (ref n_svc_mgr anv_svc, readonly listview alv, readonly integer ai_column, readonly boolean ab_ascending) public function long of_getlargeimagelist (readonly listview alv) public function long of_getsmallimagelist (readonly listview alv) public subroutine of_setlargeimagelist (readonly u_lv alv, readonly long al_himl) public subroutine of_setsmallimagelist (readonly u_lv alv, readonly long al_himl) public subroutine of_loadstandardimages (ref n_svc_mgr anv_svc, readonly u_lv alv) public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template, readonly string as_iconcolumn) end prototypes protected function integer of_getcolumndefs (ref n_svc_mgr anv_svc, readonly datastore ads_source, ref struc_coldef astr[]);n_svc_dw lnv_dw string ls_colnames[] long ll_count, n CONSTANT string DOUBLE_QUOTE = '"' anv_svc.of_LoadSvc(lnv_dw, CSvc.DW) //get column defs from datastore including computed fields //make sure it's sorted by x location ll_count = lnv_dw.of_GetVisibleColumns(anv_svc, ads_source, ls_colnames, TRUE, TRUE) FOR n = 1 to ll_count astr[n].columnname = ls_colnames[n] astr[n].headertext = TRIM(ads_source.Describe(ls_colnames[n] + "_t" + ".text")) IF LEFT(astr[n].headertext, 1) = DOUBLE_QUOTE AND & RIGHT(astr[n].headertext, 1) = DOUBLE_QUOTE THEN astr[n].headertext = & MID(astr[n].headertext, 2, LEN(astr[n].headertext) - 2) END IF astr[n].x = INTEGER(ads_source.Describe(ls_colnames[n] + ".X")) astr[n].width = INTEGER(ads_source.Describe(ls_colnames[n] + ".Width")) astr[n].datatype = lnv_dw.of_GetColumnDatatype(ads_source, ls_colnames[n]) astr[n].alignment = INTEGER(ads_source.Describe(ls_colnames[n] + ".Alignment")) NEXT RETURN ll_count end function public function integer of_deleteselected (listview alv);long lc, n, ctr listviewitem llvi lc = alv.TotalItems() FOR n = 1 to lc alv.GetItem(n, llvi) IF llvi.Selected THEN alv.DeleteItem(n) n -- lc -- ctr ++ END IF NEXT RETURN ctr end function protected subroutine of_toggleselect (ref n_svc_mgr anv_svc, readonly listview alv, readonly integer ai_on);n_svc_win32 lnv_win32 lvitem lv CONSTANT INTEGER ALL_ITEMS = -1 anv_svc.of_LoadSvc(lnv_win32, CSvc.WIN32) lv.mask = LVIF_STATE lv.statemask = LVIS_SELECTED lv.state = ai_on lnv_win32.Sendlv(Handle(alv), LVM_SETITEMSTATE, ALL_ITEMS, lv) end subroutine public subroutine of_deselectall (ref n_svc_mgr anv_svc, readonly listview alv);of_ToggleSelect(anv_svc, alv, 0) end subroutine public function long of_selectall (ref n_svc_mgr anv_svc, readonly listview alv);of_ToggleSelect(anv_svc, alv, 1) RETURN alv.TotalSelected() end function public subroutine of_ensurevisible (ref n_svc_mgr anv_svc, readonly listview alv, readonly long al_index);n_svc_win32 lnv_win32 anv_svc.of_LoadSvc(lnv_win32, CSvc.WIN32) //Win32 uses zero-based array lnv_win32.SendBoolean(Handle(alv), LVM_ENSUREVISIBLE, al_index - 1, FALSE) end subroutine public function integer of_finditem (ref n_svc_mgr anv_svc, readonly listview alv, ref listviewitem alvi_ret, readonly string as_searchstring, readonly boolean ab_scrolltoitem, readonly boolean ab_selectitem);long ll_bytes, ll_index n_svc_win32 lnv_win32 lvfindinfo lstr_info anv_svc.of_loadsvc(lnv_win32, CSvc.WIN32) ll_bytes = LEN(TRIM(as_searchstring)) + //add byte //set flags and string lstr_info.flags = LVFI_PARTIAL lstr_info.psz = lnv_win32.LocalAlloc(0 , ll_bytes) lnv_win32.lstrcpy(lstr_info.psz, LEFT(as_searchstring, ll_bytes)) ll_index = lnv_win32.SendlvFindInfo(Handle(alv), LVM_FINDITEM, -1, lstr_info) lnv_win32.LocalFree(lstr_info.psz) //free memory IF ll_index = CRet.FAILURE THEN RETURN CRet.FAILURE //win32 uses zero-based index ll_index += 1 //scroll the item IF ab_scrolltoitem THEN of_EnsureVisible(anv_svc, alv, ll_index) END IF //select the item IF ab_selectitem THEN alv.GetItem(ll_index, alvi_ret) alvi_ret.Selected = TRUE alv.SetItem(ll_index, alvi_ret) END IF RETURN ll_index end function public function string of_getcolumnwidths (readonly listview alv);string ls_ret, ls_label alignment la long ll_totcols, n integer li_width ll_totcols = alv.TotalColumns() IF ll_totcols > 0 THEN FOR n = 1 to ll_totcols alv.GetColumn(n, ls_label, la, li_width) ls_ret += STRING(li_width) IF n < ll_totcols THEN ls_ret += CString.TAB NEXT END IF RETURN ls_ret end function public function long of_getfocuseditem (readonly listview alv);long lc, n listviewitem llvi Boolean lb lc = alv.TotalItems() FOR n = 1 to lc alv.GetItem(n, llvi) IF llvi.HasFocus THEN lb = TRUE EXIT END IF NEXT IF lb THEN RETURN n ELSE RETURN CRet.FAILURE END IF end function public function long of_getselecteditem (readonly listview alv);long lc, n listviewitem llvi Boolean lb lc = alv.TotalItems() FOR n = 1 to lc alv.GetItem(n, llvi) IF llvi.Selected THEN lb = TRUE EXIT END IF NEXT IF lb THEN RETURN n ELSE RETURN CRet.FAILURE END IF end function public function long of_insertrow (ref n_svc_mgr anv_svc, readonly listview alv, readonly datastore ads, readonly long alrow, readonly listviewitem alvi, readonly string as_datacolumn, readonly string as_iconcolumn);struc_coldef lstr[] long lc, n alignment la string ls_label, ls_tmp n_svc_dw lnv_dw lc = this.of_getcolumndefs(anv_svc, ads, lstr) anv_svc.of_loadsvc(lnv_dw, CSvc.DW) //populate listview ls_label = "" FOR n = 1 to lc //checkbox style IF ads.Describe(lstr[n].columnname + ".Edit.style") = CDwedit.CHKBOX THEN IF lower(STRING(lnv_dw.of_getitemany(ads, alrow, lstr[n].columnname))) = lower(ads.Describe(lstr[n].columnname + ".Checkbox.On")) THEN ls_tmp = "Yes" ELSE ls_tmp = "No" END IF ELSE //get the display text ls_tmp = ads.Describe("evaluate('lookupdisplay(" + lstr[n].columnname + ")'," + STRING(alrow) + ")") END IF IF ls_tmp = "!" THEN TRY ls_tmp = TRIM(lnv_dw.of_getitemany(ads, alrow, lstr[n].columnname)) CATCH (Exception ex) ls_tmp = "!Error!" END TRY END IF IF ISNULL(ls_tmp) THEN ls_tmp = CString.EMPTY ls_label += ls_tmp + CString.TAB NEXT alvi.Label = ls_label IF as_datacolumn <> "" THEN alvi.Data = ads.Describe("evaluate('lookupdisplay(" + as_datacolumn + ")'," + STRING(alrow) + ")") ELSE //store row ID alvi.Data = ads.GetRowIDFromRow(alrow) END IF IF as_iconcolumn <> "" THEN alvi.PictureIndex = INTEGER(ads.Describe("evaluate('lookupdisplay(" + as_datacolumn + ")'," + STRING(alrow) + ")")) RETURN alv.AddItem(alvi) end function public function long of_insertrow (ref n_svc_mgr anv_svc, readonly listview alv, readonly datastore ads, readonly long al_row);listviewitem llvi RETURN of_InsertRow(anv_svc, alv, ads, al_row, llvi, CString.EMPTY, CString.EMPTY) end function public function long of_insertrow (ref n_svc_mgr anv_svc, readonly listview alv, readonly datastore ads, readonly long al_row, readonly listviewitem alvi);RETURN of_InsertRow(anv_svc, alv, ads, al_row, alvi, CString.EMPTY, CString.EMPTY) end function public function long of_selectinverse (readonly listview alv);long ll_tot, n listviewitem llvi ll_tot = alv.TotalItems() alv.SetRedraw(FALSE) FOR n = 1 to ll_tot alv.GetItem(n, llvi) llvi.Selected = NOT llvi.Selected alv.SetItem(n, llvi) NEXT alv.SetRedraw(TRUE) RETURN alv.TotalSelected() end function public subroutine of_setbackgroundimage (ref n_svc_mgr anv_svc, readonly listview alv, readonly string as_fullpath);lvbkimage lstr n_svc_bit lnb n_svc_win32 lnw long hwnd hwnd = Handle(alv) anv_svc.of_loadsvc(lnb, CSvc.BIT) anv_svc.of_loadsvc(lnw, CSvc.WIN32) TRY lstr.ulflags = lnb.of_BitwiseOR({LVBKIF_SOURCE_URL, LVBKIF_STYLE_TILE}) lstr.pszimage = as_fullpath lstr.cchimagemax = LEN(as_fullpath) lnw.SendMessageimage(hwnd, LVM_SETBKIMAGE, 0, lstr) Send(hwnd, LVM_SETTEXTBKCOLOR, 0, CWin32.CLR_NONE) CATCH (Exception ex) END TRY end subroutine public subroutine of_setcolumnwidths (ref n_svc_mgr anv_svc, readonly listview alv, string as_widths);string ls_label, ls_ret alignment la long ll_totcols, n integer li_width n_svc_string lnv_str anv_svc.of_loadsvc(lnv_str, CSvc.STRING) ls_ret = lnv_str.of_gettoken(as_widths, CString.TAB) DO WHILE ls_ret <> "" n ++ alv.GetColumn(n, ls_label, la, li_width) li_width = INTEGER(ls_ret) alv.SetColumn(n, ls_label, la, li_width) ls_ret = lnv_str.of_gettoken(as_widths, CString.TAB) LOOP end subroutine public function string of_viewtostring (readonly listviewview alvv);string ls CHOOSE CASE alvv CASE listviewlargeicon! ls = VIEW_LARGE_ICON CASE listviewsmallicon! ls = VIEW_SMALL_ICON CASE listviewlist! ls = VIEW_LIST CASE listviewreport! ls = VIEW_DETAIL END CHOOSE RETURN ls end function public function listviewview of_stringtoview (readonly string as_view);listviewview lv CHOOSE CASE as_view CASE VIEW_LARGE_ICON lv = listviewlargeicon! CASE VIEW_SMALL_ICON lv = listviewsmallicon! CASE VIEW_LIST lv = listviewlist! CASE VIEW_DETAIL lv = listviewreport! CASE ELSE lv = listviewlargeicon! END CHOOSE RETURN lv end function public function string of_tostring (ref n_svc_mgr anv_svc, readonly listview alv);string ls_ret, ls_tmp long ll_totrows, ll_totcols, r, c n_svc_isempty lnv_check ll_totcols = alv.TotalColumns() ll_totrows = alv.TotalItems() IF ll_totcols > 0 THEN anv_svc.of_LoadSvc(lnv_check, CSvc.ISEMPTY) FOR r = 1 to ll_totrows FOR c = 1 to ll_totcols alv.GetItem(r, c, ls_tmp) IF lnv_check.of_IsEmpty(ls_tmp) THEN ls_tmp = CString.EMPTY ls_ret += ls_tmp IF c < ll_totcols THEN ls_ret += CString.TAB NEXT IF r < ll_totrows THEN ls_ret += CString.CR_NEWLINE NEXT END IF RETURN ls_ret end function public function integer of_userdefinedsort (readonly listview alv, readonly integer ai_col, readonly string as_datatype, readonly boolean ab_ascending, readonly integer ai_index1, readonly integer ai_index2);string lsval1, lsval2 long ll_ret, ll_pos //get string values alv.GetItem(ai_index1, ai_col, lsval1) alv.GetItem(ai_index2, ai_col, lsval2) CHOOSE CASE as_datatype CASE CDWDataType.CHAR IF lsval1 < lsval2 THEN ll_ret = CRet.FAILURE ELSEIF lsval1 > lsval2 THEN ll_ret = CRet.SUCCESS ELSE ll_ret = CRet.NO_ACTION END IF CASE CDWDataType.DECIMAL decimal ld1, ld2 ld1 = DEC(lsval1) ld2 = DEC(lsval2) IF ld1 < ld2 THEN ll_ret = CRet.FAILURE ELSEIF ld1 > ld2 THEN ll_ret = CRet.SUCCESS ELSE ll_ret = CRet.NO_ACTION END IF CASE CDWDataType.INT, CDWDataType.LONG, CDWDataType.NUMBER, CDWDataType.REAL, CDWDataType.ULONG long ll1, ll2 ll1 = LONG(lsval1) ll2 = LONG(lsval2) IF ll1 < ll2 THEN ll_ret = CRet.FAILURE ELSEIF ll1 > ll2 THEN ll_ret = CRet.SUCCESS ELSE ll_ret = CRet.NO_ACTION END IF CASE CDWDataType.DATE date ldt1, ldt2 ldt1 = DATE(lsval1) ldt2 = DATE(lsval2) IF ldt1 < ldt2 THEN ll_ret = CRet.FAILURE ELSEIF ldt1 > ldt2 THEN ll_ret = CRet.SUCCESS ELSE ll_ret = CRet.NO_ACTION END IF CASE CDWDataType.DATETIME, CDWDataType.TIMESTAMP datetime ldtm1, ldtm2 ll_pos = POS(lsval1, CString.SPACE) ldtm1 = DATETIME(DATE(MID(lsval1, 1, ll_pos - 1)), TIME(MID(lsval1, ll_pos + 2))) ll_pos = POS(lsval2, CString.SPACE) ldtm2 = DATETIME(DATE(MID(lsval2, 1, ll_pos - 1)), TIME(MID(lsval2, ll_pos + 2))) IF ldtm1 < ldtm2 THEN ll_ret = CRet.FAILURE ELSEIF ldtm1 > ldtm2 THEN ll_ret = CRet.SUCCESS ELSE ll_ret = CRet.NO_ACTION END IF CASE CDWDataType.TIME time lt1, lt2 lt1 = TIME(lsval1) lt2 = TIME(lsval2) IF lt1 < lt2 THEN ll_ret = CRet.FAILURE ELSEIF lt1 > lt2 THEN ll_ret = CRet.SUCCESS ELSE ll_ret = CRet.NO_ACTION END IF CASE ELSE //sort as is IF lsval1 < lsval2 THEN ll_ret = CRet.FAILURE ELSEIF lsval1 > lsval2 THEN ll_ret = CRet.SUCCESS ELSE ll_ret = CRet.NO_ACTION END IF END CHOOSE IF NOT ab_ascending THEN CHOOSE CASE ll_ret CASE CRet.SUCCESS ll_ret = CRet.FAILURE CASE CRet.FAILURE ll_ret = CRet.SUCCESS END CHOOSE END IF RETURN ll_ret end function public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template, readonly string as_datacolumn, readonly string as_iconcolumn, readonly powerobject apo_callback, readonly string as_callbackeventname);n_svc_dw lnv_dw n_svc_isempty lnv_check n_svc_resource lnv_res string ls_colnames[], ls_type, ls_label, ls_tmp long ll_count, ll_colcount, n, m, ll_percent, ll_lastpercent boolean lb_callback alignment la struc_coldef lstr_coldef[] CONSTANT string DOUBLE_QUOTE = '"' CONSTANT string YES = "Yes" CONSTANT string NO = "No" //get column defs from datastore including computed fields //make sure it's sorted by x location ll_colcount = of_GetColumnDefs(anv_svc, ads_source, lstr_coldef) //load service anv_svc.of_LoadSvc(lnv_dw, CSvc.DW) anv_svc.of_LoadSvc(lnv_res, CSvc.RESOURCE) //create columns IF alv_destination.TotalColumns() <> ll_colcount THEN alv_destination.DeleteColumns() FOR n = 1 to ll_colcount CHOOSE CASE lstr_coldef[n].alignment CASE 0 la = Left! CASE 1 la = Right! CASE 2 la = Center! CASE 3 la = Justify! CASE ELSE la = Left! END CHOOSE alv_destination.AddColumn(lstr_coldef[n].headertext, la, lstr_coldef[n].width) //add user defined sort for non-string datatypes ls_type = lnv_dw.of_GetColumnDatatype(ads_source, lstr_coldef[n].columnname) IF ls_type <> CDWDataType.CHAR THEN alv_destination.of_adduserdefinedsort(n, ls_type) END IF NEXT END IF alv_destination.DeleteItems() ll_count = ads_source.RowCount() lb_callback = ISVALID(apo_callback) //load service anv_svc.of_LoadSvc(lnv_check, CSvc.ISEMPTY) FOR n = 1 to ll_count IF lb_callback THEN ll_percent = (n / ll_count) * 100 IF ll_percent <> ll_lastpercent THEN ll_lastpercent = ll_percent apo_callback.TriggerEvent(as_callbackeventname, 0, ll_percent) END IF END IF ls_label = CString.EMPTY FOR m = 1 to ll_colcount //checkbox style IF lnv_dw.of_GetColumnEditStyle(ads_source, lstr_coldef[m].columnname) = CDWEdit.CHKBOX THEN IF lower(STRING(lnv_dw.of_GetItemAny(ads_source, n, lstr_coldef[m].columnname))) = lower(ads_source.Describe(lstr_coldef[m].columnname + ".Checkbox.On")) THEN ls_tmp = YES ELSE ls_tmp = NO END IF ELSE //for any other style, just get the display text ls_tmp = ads_source.Describe("evaluate('lookupdisplay(" + lstr_coldef[m].columnname + ")'," + STRING(n) + ")") END IF //just in case evaluate fails, get the actual value IF lnv_dw.of_IsErrorString(ls_tmp) THEN ls_tmp = TRIM(STRING(lnv_dw.of_GetItemAny(ads_source, n, lstr_coldef[m].columnname))) END IF IF lnv_check.of_IsEmpty(ls_tmp) THEN ls_tmp = CString.EMPTY ls_label += ls_tmp + "~t" NEXT //use the passed listviewitem as template alvi_template.Label = ls_label IF NOT lnv_check.of_IsEmpty(as_datacolumn) THEN alvi_template.Data = ads_source.Describe("evaluate('lookupdisplay(" + as_datacolumn + ")'," + STRING(n) + ")") ELSE //store row ID alvi_template.Data = ads_source.GetRowIDFromRow(n) END IF //icon column IF NOT lnv_check.of_IsEmpty(as_iconcolumn) THEN ls_tmp = lnv_dw.of_GetItemAny(ads_source, n, as_iconcolumn) IF ISNUMBER(ls_tmp) THEN alvi_template.PictureIndex = INTEGER(ls_tmp) ELSE alvi_template.PictureIndex = lnv_res.of_standardimageindexfromstring(ls_tmp) END IF END IF //add the listviewitem alv_destination.AddItem(alvi_template) NEXT end subroutine public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly powerobject apo_callback, readonly string as_callbackeventname);listviewitem llvi of_ConvertDatastore(anv_svc, ads_source, alv_destination, llvi, CString.EMPTY, CString.EMPTY, apo_callback, as_callbackeventname) end subroutine public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template, readonly powerobject apo_callback, readonly string as_callbackeventname);of_ConvertDatastore(anv_svc, ads_source, alv_destination, alvi_template, CString.EMPTY, CString.EMPTY, apo_callback, as_callbackeventname) end subroutine public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination);powerobject lpo listviewitem llvi of_ConvertDatastore(anv_svc, ads_source, alv_destination, llvi, CString.EMPTY, CString.EMPTY, lpo, CString.EMPTY) end subroutine public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template);powerobject lpo of_ConvertDatastore(anv_svc, ads_source, alv_destination, alvi_template, CString.EMPTY, CString.EMPTY, lpo, CString.EMPTY) end subroutine public subroutine of_sortcolumn (ref n_svc_mgr anv_svc, readonly u_lv alv, readonly integer ai_column, readonly boolean ab_ascending);n_svc_system lnv_sys anv_svc.of_LoadSvc(lnv_sys, CSvc.SYS) IF lnv_sys.of_IsXP() AND lnv_sys.of_IsSysThemed() THEN of_SortColumnXP(anv_svc, alv, ai_column, ab_ascending) ELSE of_SortColumnIcon(anv_svc, alv, ai_column, ab_ascending) END IF end subroutine protected subroutine of_sortcolumnicon (ref n_svc_mgr anv_svc, readonly listview alv, readonly integer ai_column, readonly boolean ab_ascending);long ll_hwnd, ll_fmt, lc, n, ll_and, ll_img hditem lstr, lstre //n_svc_sysimages lni n_svc_bit lnv_bit boolean AlignRight //anv_svc.of_loadsvc(lni, CSvc.SYSIMAGES) anv_svc.of_loadsvc(lnv_bit, CSvc.BIT) ll_hwnd = Send(Handle(alv), LVM_GETHEADER, 0, 0) //ll_img = lni.of_getsorticons() /////////////////////////////////////////////////// //bug fix, must call twice to get //correct imagelist placement //might be pooling problem - ang labo nito!!! :p //ll_img = lni.of_getsorticons() /////////////////////////////////////////////////// //set header imagelist Send(ll_hwnd, HDM_SETIMAGELIST, 0, ll_img) //remove all sort arrows lc = alv.TotalColumns() - 1 FOR n = 0 to lc lstr.mask = lnv_bit.of_BitwiseOR({HDI_FORMAT, HDI_IMAGE}) //get header column Header_GetSetItem(ll_hwnd, HDM_GETITEM, n, lstr) ll_and = lnv_bit.of_BitwiseAND({lstr.fmt, HDF_RIGHT}) AlignRight = lstr.fmt = ll_and lstr.fmt = lnv_bit.of_BITWISEOR({HDF_STRING, ll_and}) IF (ai_column - 1) = n THEN IF NOT AlignRight THEN ll_and = HDF_BITMAP_ON_RIGHT ELSE ll_and = 0 END IF lstr.fmt = lnv_bit.of_BitwiseOR({lstr.fmt, HDF_IMAGE, ll_and}) IF ab_ascending THEN lstr.iImage = 0 ELSE lstr.iImage = 1 END IF END IF Header_GetSetItem(ll_hwnd, HDM_SETITEM, n, lstr) lstr = lstre NEXT end subroutine protected subroutine of_sortcolumnxp (ref n_svc_mgr anv_svc, readonly listview alv, readonly integer ai_column, readonly boolean ab_ascending);long ll_hwnd, ll_fmt, lc, n hditem lstr, lstre ll_hwnd = Send(Handle(alv), LVM_GETHEADER, 0, 0) IF ab_ascending THEN ll_fmt = HDF_SORTUP ELSE ll_fmt = HDF_SORTDOWN END IF //remove all sort arrows lc = alv.TotalColumns() - 1 FOR n = 0 to lc Header_GetSetItem(ll_hwnd, HDM_GETITEM, n, lstr) lstr.mask = HDI_FORMAT lstr.fmt += // + HDF_STRING Header_GetSetItem(ll_hwnd, HDM_SETITEM, n, lstr) lstr = lstre Header_GetSetItem(ll_hwnd, HDM_GETITEM, n, lstr) lstr.mask = HDI_FORMAT lstr.fmt += HDF_STRING Header_GetSetItem(ll_hwnd, HDM_SETITEM, n, lstr) lstr = lstre NEXT //set sort arrow Header_GetSetItem(ll_hwnd, HDM_GETITEM, ai_column, lstr) lstr.mask = HDI_FORMAT lstr.fmt += ll_fmt + HDF_STRING Header_GetSetItem(ll_hwnd, HDM_SETITEM, ai_column - 1, lstr) end subroutine public function long of_getlargeimagelist (readonly listview alv);RETURN Send(Handle(alv), LVM_GETIMAGELIST, LVSIL_NORMAL, 0) end function public function long of_getsmallimagelist (readonly listview alv);RETURN Send(Handle(alv), LVM_GETIMAGELIST, LVSIL_SMALL, 0) end function public subroutine of_setlargeimagelist (readonly u_lv alv, readonly long al_himl);Send(Handle(alv), LVM_SETIMAGELIST, LVSIL_NORMAL, al_himl) //tell the listview to swap dummy on destruct alv.of_imagelistassigned() end subroutine public subroutine of_setsmallimagelist (readonly u_lv alv, readonly long al_himl);Send(Handle(alv), LVM_SETIMAGELIST, LVSIL_SMALL, al_himl) //tell the listview to swap dummy on destruct alv.of_imagelistassigned() end subroutine public subroutine of_loadstandardimages (ref n_svc_mgr anv_svc, readonly u_lv alv);n_svc_resource lnv_res long ll_himl anv_svc.of_LoadSvc(lnv_res, CSvc.RESOURCE) //large ll_himl = lnv_res.of_GetStandardImageList24(anv_svc) of_SetLargeImagelist(alv, ll_himl) //small ll_himl = lnv_res.of_GetStandardImageList16(anv_svc) of_SetSmallImagelist(alv, ll_himl) end subroutine public subroutine of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template, readonly string as_iconcolumn);powerobject lpo of_ConvertDatastore(anv_svc, ads_source, alv_destination, alvi_template, CString.EMPTY, as_iconcolumn, lpo, CString.EMPTY) end subroutine on n_svc_lv.create call super::create end on on n_svc_lv.destroy call super::destroy end on
- Sources
- Kodigo
- OpenExplorer
- n_svc_lv.sru
File: n_svc_lv.sru
Size: 41623
Date: Mon, 07 Apr 2008 21:31:15 +0200
Size: 41623
Date: Mon, 07 Apr 2008 21:31:15 +0200
- n_svc_base n_svc_lv(sru)
- of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination)
- of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template)
- of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template, readonly powerobject apo_callback, readonly string as_callbackeventname)
- of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template, readonly string as_datacolumn, readonly string as_iconcolumn, readonly powerobject apo_callback, readonly string as_callbackeventname)
- of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly listviewitem alvi_template, readonly string as_iconcolumn)
- of_convertdatastore (ref n_svc_mgr anv_svc, readonly datastore ads_source, readonly u_lv alv_destination, readonly powerobject apo_callback, readonly string as_callbackeventname)
- of_deleteselected (listview alv) returns integer
- of_deselectall (ref n_svc_mgr anv_svc, readonly listview alv)
- of_ensurevisible (ref n_svc_mgr anv_svc, readonly listview alv, readonly long al_index)
- of_finditem (ref n_svc_mgr anv_svc, readonly listview alv, ref listviewitem alvi_ret, readonly string as_searchstring, readonly boolean ab_scrolltoitem, readonly boolean ab_selectitem) returns integer
- of_getcolumndefs (ref n_svc_mgr anv_svc, readonly datastore ads_source, ref struc_coldef astr[]) returns integer
- of_getcolumnwidths (readonly listview alv) returns string
- of_getfocuseditem (readonly listview alv) returns long
- of_getlargeimagelist (readonly listview alv) returns long
- of_getselecteditem (readonly listview alv) returns long
- of_getsmallimagelist (readonly listview alv) returns long
- of_insertrow (ref n_svc_mgr anv_svc, readonly listview alv, readonly datastore ads, readonly long al_row) returns long
- of_insertrow (ref n_svc_mgr anv_svc, readonly listview alv, readonly datastore ads, readonly long al_row, readonly listviewitem alvi) returns long
- of_insertrow (ref n_svc_mgr anv_svc, readonly listview alv, readonly datastore ads, readonly long alrow, readonly listviewitem alvi, readonly string as_datacolumn, readonly string as_iconcolumn) returns long
- of_loadstandardimages (ref n_svc_mgr anv_svc, readonly u_lv alv)
- of_selectall (ref n_svc_mgr anv_svc, readonly listview alv) returns long
- of_selectinverse (readonly listview alv) returns long
- of_setbackgroundimage (ref n_svc_mgr anv_svc, readonly listview alv, readonly string as_fullpath)
- of_setcolumnwidths (ref n_svc_mgr anv_svc, readonly listview alv, string as_widths)
- of_setlargeimagelist (readonly u_lv alv, readonly long al_himl)
- of_setsmallimagelist (readonly u_lv alv, readonly long al_himl)
- of_sortcolumn (ref n_svc_mgr anv_svc, readonly u_lv alv, readonly integer ai_column, readonly boolean ab_ascending)
- of_sortcolumnicon (ref n_svc_mgr anv_svc, readonly listview alv, readonly integer ai_column, readonly boolean ab_ascending)
- of_sortcolumnxp (ref n_svc_mgr anv_svc, readonly listview alv, readonly integer ai_column, readonly boolean ab_ascending)
- of_stringtoview (readonly string as_view) returns listviewview
- of_toggleselect (ref n_svc_mgr anv_svc, readonly listview alv, readonly integer ai_on)
- of_tostring (ref n_svc_mgr anv_svc, readonly listview alv) returns string
- of_userdefinedsort (readonly listview alv, readonly integer ai_col, readonly string as_datatype, readonly boolean ab_ascending, readonly integer ai_index1, readonly integer ai_index2) returns integer
- of_viewtostring (readonly listviewview alvv) returns string