#set_tags(GetTimetagLyricsスクリプト) #pre{{ ; ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ; exlistview'.hsp (HSP-NEXT さくら様作) [ちょっと改造] ; ; リストビューモジュール ;_______________________________________ ;******************************************************************************* ; (exlistview.as) for HSP3.0 リストビューコントロール関連モジュール ; ; #include する必要なプラグインやマクロファイル ; #include "sysval.as" ; #include "gblconst.as" ; #include "winapi32.as" ; ; ※下記のlibraryは、winapi32.asにまとめてあります。 ; ; #include "user32.as" ; #include "comctl32.as" ; ; ※モジュール番号の左側に'*'が付いているものは、ユーザー定義関数です。 ; それ以外のものは、モジュール命令となっています。 ; ;------------------------------------------------------------------------------- ; ;* 1. リストビューコントロールを作成 (Createlstview) ; 2. リストビューコントロール拡張スタイルの設定 (lsvexset) ; 3. リストビューコントロールにカラムを追加 (lsvcladd) ; 4. リストビューコントロールにアイテム追加 (lsvimadd) ; 5. リストビューコントロールにイメージ設定 (lsvimgset) ; 6. リストビューコントロールにサブアイテム追加 (lsvsubadd) ; 7. リストビューコントロール表示スタイル変更 (lsvchengeview) ; 8. リストビューコントロールの背景色を設定 (lsvsetbkcol) ; 9. リストビューの項目のテキスト色・背景色を設定 (lsvsettxcol) ;*10. リストビューコントロールのチエック項目状態を取得 (lsvgetcheck) ; 11. リストビューコントロールのチエック項目を設定 (lsvsetcheck) ; 12. リストビューコントロールのカラムを消去 (lsvcldel) ;*13. リストビューコントロールのアイテムの数を取得 (lsvcount) ;*14. リストビューコントロールの選択アイテム取得 (lsvfound) ; 15. リストビューコントロールの項目を消去 (lsvimdel) ; 16. リストビューコントロールの項目の文字列を取得 (lsvgetstr) ; 17. リストビューコントロールの項目の文字列を設定 (lsvsetstr) ; 18. リストビューコントロールの項目を選択 (lsvimsel) ; 19. リストビューコントロールのカラムの順を設定 (lsvcolumorder) ; 20. リストビューコントロールのカラムの幅を取得 (lsvgetclmwidth) ; 21. リストビューコントロールのカラムの幅を設定 (lsvsetclmwidth) ; ; 最終更新日 2005.09.25 sakura ;******************************************************************************* #ifdef __hsp30__ #ifndef __EXLISTVIEW__ #define __EXLISTVIEW__ #module #defcfunc Createlstview int prm1,int prm2,int prm3,int prm4,int prm5 ;******************************************************************************* ; リストビューコントロールを作成 (Createlstview) ; ; 戻り値 : 成功 lvshwnd=リストビューハンドル, 失敗 lvshwnd<=0 ; ; ・書式 lvshwnd=Createlstview(nMode,nPosx,nPosy,nWidth,nHeight) ; ・引数 nMode (int) : 0〜1(0) ソートヘッダ付加 ; nPosx (int) : 0〜winx(pos x) 位置 x ; nPosy (int) : 0〜winy(pos y) 位置 y ; nWidth (int) : 0〜winx(objsize x) 幅 ; nHeight (int) : 0〜winy(objsize y) 高さ ; ; nMode ; --------------------------------------- ; 0 : LVS_NOSORTHEADERを付加する ; 1 : LVS_NOSORTHEADERを付加しない ; ; ・タイプ ユーザー定義関数 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lvshwnd=Createlstview(0,0,0,600,400) ;******************************************************************************* mref bmscr,67 nMode = prm1 ;: if (nMode<=0)|(nMode>1) : nMode =0 nPosx = prm2 ;: if (nPosx<=0)|(nPosx>winx) : nPosx =bmscr(27) nPosy = prm3 ;: if (nPosy<=0)|(nPosy>winy) : nPosy =bmscr(28) nWidth = prm4 ;: if (nWidth<=0)|(nWidth>winx) : nWidth =bmscr(29) nHeight= prm5 ;: if (nHeight<=0)|(nHeight>winy) : nHeight=bmscr(30) ;CommonControl初期化 ; #undef ICC_LISTVIEW_CLASSES ; #define ICC_LISTVIEW_CLASSES $00000001 ; icx(0) = 8 : icx(1) = ICC_LISTVIEW_CLASSES ; InitCommonControlsEx varptr(icx) ;LVS_NOSORTHEADERを付加 if nMode==1 : nStyle=LVS_NOSORTHEADER : else : nStyle=0 dwStyle =WS_CHILD|WS_VISIBLE|LVS_REPORT|nStyle class ="SysListView32" : pClass=varptr(class) CreateWindowEx 0,pClass,0,dwStyle,nPosx,nPosy,nWidth,nHeight,hwnd,0,hinstance,0 lvshwnd=stat : if lvshwnd==0 : return -1 return lvshwnd #deffunc lsvexset int prm1,int prm2 ;******************************************************************************* ; リストビューコントロール拡張スタイルの設定 (lsvexset) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvexset lvshwnd,nStyle ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nStyle (int) : 0〜(0) 拡張スタイル (const値で指定) ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvexset lvshwnd,$0005 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nStyle = prm2 : if nStyle<=0 : nStyle=0 ; nStyle : 拡張スタイル (組合せて指定可) ; <<<nStyleに値を直接指定すること>>> ;--------------------------------------- ; LVS_EX_GRIDLINES $0001 ; LVS_EX_SUBITEMIMAGES $0002 ; LVS_EX_CHECKBOXES $0004 ; LVS_EX_TRACKSELECT $0008 ; LVS_EX_HEADERDRAGDROP $0010 ; LVS_EX_FULLROWSELECT $0020 ; LVS_EX_ONECLICKACTIVATE $0040 ; LVS_EX_TWOCLICKACTIVATE $0080 ; LVS_EX_FLATSB $0100 ; LVS_EX_REGIONAL $0200 ; LVS_EX_INFOTIP $0400 ; LVS_EX_UNDERLINEHOT $0800 ; LVS_EX_UNDERLINECOLD $1000 ; LVS_EX_MULTIWORKAREAS $2000 ;拡張スタイルを取得 (ListView_GetExtendedListViewStyle) SendMessage lvshwnd,LVM_GETEXTENDEDLISTVIEWSTYLE,0,0 dwExstyle=stat : dwExstyle+=nStyle ;拡張スタイルを設定 (ListView_SetExtendedListViewStyle) SendMessage lvshwnd,LVM_SETEXTENDEDLISTVIEWSTYLE,0,dwExstyle return 0 #deffunc lsvcladd int prm1,str prm2,int prm3,int prm4,int prm5,int prm6,int prm7 ;******************************************************************************* ; リストビューコントロールにカラムを追加 (lsvcladd) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvcladd lvshwnd,String,nIndex,Image,cwidth,cfmt,Imadd ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; String (str) : カラムヘッダー文字列 or 文字列変数 ; nIndex (int) : 0〜(0) 項目のインデックス番号(左から0,1,2,3,...) ; Image (int) : 0〜(0) 追加するイメージリストの番号(通常は0) ; cwidth (int) : 0〜(100) カラムの幅 (const値を直接指定も可) ; cfmt (int) : 0〜2(0) 配置フォーマット ; Imadd (int) : 0〜(0) イメージフラグ(通常は0) ; ; cfmt ; --------------------- ; 0 : 左に配置 ; 1 : 右に配置 ; 2 : 中央に配置 ; ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvcladd lvshwnd,"サイト名",0,0,200,0,0 ; lsvcladd lvshwnd,"作者",1,0,100,0,0 ; lsvcladd lvshwnd,"アドレス",2,0,300,0,0 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 ls=strlen(prm2) : if ls==0 : return -1 : else : sdim String,ls+1 String = prm2 nIndex = prm3 : if nIndex<=0 : nIndex=0 Image = prm4 : if Image<=0 : Image=0 cwidth = prm5 : if cwidth<=0 : cwidth=100 cfmt = prm6 : if (cfmt<=0)|(cfmt>2) : cfmt=0 Imadd = prm7 : if Imadd<=0 : Imadd=0 ; cwidth ; 数値で直接指定 : 0〜 ; $FFFFFFFF : アイテムのサイズに応じて調整 ; $FFFFFFFE : ヘッダの文字列サイズに合わせる ;LVCOLUMN構造体 dim tcl,7 ; $000F = LVCF_FMT|LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM tcl(0) = $000F|Imadd ;mask tcl(1) = cfmt|Imadd ;fmt tcl(2) = cwidth ;cx tcl(3) = varptr(String) ;pszText tcl(4) = strlen(String) ;cchTextMax tcl(5) = nIndex ;iSubItem tcl(6) = Image ;iImage SendMessage lvshwnd,LVM_INSERTCOLUMN,nIndex,varptr(tcl) sdim String,0 : dim tcl,0 return 0 #deffunc lsvimadd int prm1,str prm2,int prm3,int prm4 ;******************************************************************************* ; リストビューコントロールにアイテム追加 (lsvimadd) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvimadd lvshwnd,String,nIndex,Image ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; String (str) : カラムヘッダー文字列 or 文字列変数 ; nIndex (int) : 0〜(0) 項目のインデックス番号(左から0,1,2,3,...) ; Image (int) : 0〜(0) 追加するイメージリストの番号(通常は0) ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvimadd lvshwnd,"HSP-NEXT",0,0 ; lsvimadd lvshwnd,"ONION software HOMEPAGE",1,0 ; lsvimadd lvshwnd,"HSP CENTER",2,0 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 ls=strlen(prm2) : if ls==0 : return -1 : else : sdim String,ls+1 String = prm2 nIndex = prm3 : if nIndex<=0 : nIndex=0 Image = prm4 : if Image<=0 : Image=0 ;LVITEM構造体 dim tim,9 ; $0003 = LVIF_TEXT|LVIF_IMAGE tim(0) = $0003 ;mask tim(1) = nIndex ;iItem tim(2) = 0 ;iSubItem tim(5) = varptr(String) ;pszText tim(6) = strlen(String) ;cchTextMax tim(7) = Image ;iImage ;tim(3) state ;tim(4) stateMask ;tim(8) lParam SendMessage lvshwnd,LVM_INSERTITEM,0,varptr(tim) sdim String,0 : dim tim,0 return 0 #deffunc lsvimgset int prm1,int prm2,int prm3 ;******************************************************************************* ; リストビューコントロールにイメージ設定 (lsvimgset) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvimgset lvshwnd,Imghwnd,Imgmode ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; Imghwnd (int) : Createimglistで作成したハンドル ; Imgmode (int) : アイコンモード ; ; Imgmode ; -------------------------- ; -1 : 非表示 ; 0 : 大きいアイコン ; 1 : 小さいアイコン ; ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvimgset lvshwnd,himgwnd1,0 ; lsvimgset lvshwnd,himgwnd2,1 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 Imghwnd = prm2 : if Imghwnd==0 : return -1 Imgmode = prm3 : if (Imgmode<-1)|(Imgmode>1) : return -1 ;リストビューにイメージリストを設定 SendMessage lvshwnd,LVM_SETIMAGELIST,Imgmode,Imghwnd return 0 #deffunc lsvsubadd int prm1,str prm2,int prm3,int prm4 ;******************************************************************************* ; リストビューコントロールにサブアイテム追加 (lsvsubadd) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvsubadd lvshwnd,String,nIndex,SubIndex ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; String (str) : サブ項目の文字列 or 文字列変数 ; nIndex (int) : 0〜(0) 項目のインデックス番号(左から0,1,2,3,...) ; SubIndex (int) : 1〜(1) サブ項目のインデックス番号 ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvsubadd lvshwnd,"さくら",0,1 ; lsvsubadd lvshwnd,"おにたま",1,1 ; lsvsubadd lvshwnd,"うすあじ",2,1 ; ; lsvsubadd lvshwnd,"http://www.silkroad.ne.jp/sakura",0,2 ; lsvsubadd lvshwnd,"http://www.onionsoft.net/",1,2 ; lsvsubadd lvshwnd,"http://hspcenter.com/",2,2 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 ls=strlen(prm2) : if ls==0 : return -1 : else : sdim String,ls+1 String = prm2 nIndex = prm3 : if nIndex<=0 : nIndex=0 SubIndex = prm4 : if SubIndex<=0 : SubIndex=1 ;LVITEM構造体 dim tim,9 ; $0001 = LVIF_TEXT tim(0) = $0001 ;mask tim(1) = nIndex ;iItem tim(2) = SubIndex ;iSubItem tim(5) = varptr(String) ;pszText SendMessage lvshwnd,LVM_SETITEM,0,varptr(tim) sdim String,0 : dim tim,0 return 0 #deffunc lsvchengeview int prm1,int prm2 ;******************************************************************************* ; リストビューコントロール表示スタイル変更 (lsvchengeview) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvchengeview lvshwnd,nType ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nType (int) : 0〜3(0) 表示スタイル番号 ; ; nType ; ------------------------------------------------------------ ; 0 : 大きいアイコン (Image Listに大きいアイコン設定必要) ; 1 : 詳細表示 ; 2 : 小さいアイコン ; 3 : 一覧表示 ; ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvchengeview lvshwnd,0 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nType = prm2 : if (nType<=0)|(nType>3) : nType=0 GetWindowLong lvshwnd,GWL_STYLE : dwstyle=stat dwstyle=dwstyle&$FFFFFFFC|nType SetWindowLong lvshwnd,GWL_STYLE,dwstyle InvalidateRect lvshwnd,0,TRUE return 0 #deffunc lsvsetbkcol int prm1,int prm2 ;******************************************************************************* ; リストビューコントロールの背景色を設定 (lsvsetbkcol) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvsetbkcol lvshwnd,RGB(r,g,b) ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; col (int) : 背景色 RGB(r,g,b)形式で指定 ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvsetbkcol lvshwnd,RGB(0,0,255) ;******************************************************************************* mref bmscr,67 lvshwnd = prm1 : if lvshwnd==0 : return -1 col = prm2 : if col<0 : col=bmscr(40) SendMessage lvshwnd,LVM_SETBKCOLOR,0,col InvalidateRect lvshwnd,0,TRUE return 0 #deffunc lsvsettxcol int prm1,int prm2,int prm3 ;******************************************************************************* ; リストビューの項目のテキスト色・背景色を設定 (lsvsettxcol) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvsettxcol lvshwnd,RGB(r,g,b),RGB(r,g,b) ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; coltext (int) : 項目のテキスト色 RGB(r,g,b)形式で指定 ; colback (int) : 項目の背景色 RGB(r,g,b)形式で指定 ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvsettxcol lvshwnd,RGB(255,255,255),RGB(0,0,255) ;******************************************************************************* mref bmscr,67 lvshwnd = prm1 : if lvshwnd==0 : return -1 coltext = prm2 : if coltext<0 : col=bmscr(40) colback = prm3 : if colback<0 : col=bmscr(40) SendMessage lvshwnd,LVM_SETTEXTCOLOR,0,coltext SendMessage lvshwnd,LVM_SETTEXTBKCOLOR,0,colback InvalidateRect lvshwnd,0,TRUE return 0 #defcfunc lsvgetcheck int prm1,int prm2 ;******************************************************************************* ; リストビューコントロールのチエック項目状態を取得 (lsvgetcheck) ; ; 戻り値 : チエック ON ret=1, チエックOFF ret=0, 失敗 ret=-1 ; ; ※この関数は、拡張スタイルで LVS_EX_CHECKBOXES が設定されている時のみ有効 ; ; ・書式 ret=lsvgetcheck(lvshwnd,nIndex) ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nIndex (int) : 0〜(0) 項目のインデックス番号 ; ・タイプ ユーザー定義関数 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; ret=lsvgetcheck(lvshwnd,2) ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nIndex = prm2 : if nIndex<=0 : nIndex=0 ;ListView_GetCheckState #undef LVIS_STATEIMAGEMASK #define LVIS_STATEIMAGEMASK $0000F000 SendMessage lvshwnd,LVM_GETITEMSTATE,nIndex,LVIS_STATEIMAGEMASK ret=(stat>>12)-1 return ret #deffunc lsvsetcheck int prm1,int prm2,int prm3 ;******************************************************************************* ; リストビューコントロールのチエック項目を設定 (lsvsetcheck) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ※この命令は、拡張スタイルで LVS_EX_CHECKBOXES が設定されている時のみ有効 ; ; ・書式 lsvsetcheck lvshwnd,nIndex,fCheck ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; Index (int) : 0〜(0) 項目のインデックス番号 ; fCheck (int) : 0〜1(0) チエックフラグ ; ; fCheck ; ------------------------- ; 1 : チェック設定 ; 0 : チェック解除 ; ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvsetcheck lvshwnd,2,1 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nIndex = prm2 : if nIndex<=0 : nIndex=0 fCheck = prm3 : if (fCheck<=0)|(fCheck>1) : fCheck=0 ;ListView_SetCheckState #undef LVIS_STATEIMAGEMASK #define LVIS_STATEIMAGEMASK $0000F000 ;LVITEM構造体 dim tim,9 tim(3) = (fCheck+1)<<12 tim(4) = LVIS_STATEIMAGEMASK SendMessage lvshwnd,LVM_SETITEMSTATE,nIndex,varptr(tim) dim tim,0 return 0 #deffunc lsvcldel int prm1,int prm2 ;******************************************************************************* ; リストビューコントロールのカラムを消去 (lsvcldel) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvcldel lvshwnd,nIndex ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nIndex (int) : 0〜(0) カラムのインデックス番号 ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvcldel lvshwnd,1 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nIndex = prm2 : if nIndex<=0 : nIndex=0 SendMessage lvshwnd,LVM_DELETECOLUMN,nIndex,0 return 0 #defcfunc lsvcount int prm1,int prm2 ;******************************************************************************* ; リストビューコントロールのアイテムの数を取得 (lsvcount) ; ; 戻り値 : 項目数 ret=count, 失敗 ret=-1 ; ; ・書式 ret=lsvcount(lvshwnd,nflag) ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nflag (int) : 0〜1(0) 取得フラグ ; ; nflag ; ------------------------------------------ ; 0 : LVM_GETITEMCOUNT ; 1 : LVM_GETCOUNTPERPAGE ; ; ・タイプ ユーザー定義関数 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; mes "アイテムの数 : "+lsvcount(lvshwnd,0) ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nflag = prm2 : if (nflag<=0)|(nflag>1) : nflag=0 if nflag==0 : nMsg=LVM_GETITEMCOUNT if nflag==1 : nMsg=LVM_GETCOUNTPERPAGE SendMessage lvshwnd,nMsg,0,0 return stat #defcfunc lsvfound int prm1,int prm2 ;******************************************************************************* ; リストビューコントロールの選択アイテム取得 (lsvfound) ; ; 戻り値 : 選択項目 ret=選択項目Index, 失敗 ret=-1 ; ; ・書式 ret=lsvfound(lvshwnd,nIndex) ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nIndex (int) : -1〜(-1) 項目インデックス番号 ; ・タイプ ユーザー定義関数 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; SelItem=lsvfound(lvshwnd,2) ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nIndex = prm2 : if nIndex<=-1 : nIndex=-1 SendMessage lvshwnd,LVM_GETNEXTITEM,nIndex,$2 return stat #deffunc lsvimdel int prm1,int prm2 ;******************************************************************************* ; リストビューコントロールの項目を消去 (lsvimdel) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvimdel lvshwnd,nIndex ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nIndex (int) : -1 or -1以外 操作モード ; ; nIndex ; --------------------------- ; -1 : 全項目の消去 ; -1以外 : 指定Index項目 ; ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvimdel lvshwnd,1 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nIndex = prm2 if nIndex==-1 { SendMessage lvshwnd,LVM_DELETEALLITEMS,-1,0 }else{ SendMessage lvshwnd,LVM_DELETEITEM,nIndex,0 } return 0 #deffunc lsvgetstr var prm1,int prm2,int prm3,int prm4 ;******************************************************************************* ; リストビューコントロールの項目の文字列を取得 (lsvgetstr) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1, Value=取得文字列 ; ; ・書式 lsvgetstr Value,lvshwnd,nIndex,SubIndex ; ・引数 Value (var) : 文字列型変数 ; lvshwnd (int) : Createlstviewで作成したハンドル ; nIndex (int) : 0〜(0) 項目のインデックス番号(左から0,1,2,3,...) ; SubIndex (int) : 0〜(0) サブ項目のインデックス番号 ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvgetstr s,lvshwnd,0,1 ;******************************************************************************* if vartype(prm1)!2 : prm1 = "" lvshwnd = prm2 : if lvshwnd==0 : return -1 nIndex = prm3 : if nIndex<=0 : nIndex=0 suIndex = prm4 : if suIndex<=0 : suIndex=0 sdim String,512 #undef LVIF_TEXT #define LVIF_TEXT $00000001 ;LVITEM構造体 dim tim,9 tim(0) = LVIF_TEXT ;mask tim(1) = nIndex ;iItem tim(2) = suIndex ;iSubItem tim(5) = varptr(String) ;pszText tim(6) = 512 ;cchTextMax SendMessage lvshwnd,LVM_GETITEM,0,varptr(tim) prm1=String : sdim String,0 return 0 #deffunc lsvsetstr int prm1,str prm2,int prm3,int prm4 ;******************************************************************************* ; リストビューコントロールの項目の文字列を設定 (lsvsetstr) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvsetstr lvshwnd,String,nIndex,SubIndex ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; String (str) : 文字列 or 文字列型変数 ; nIndex (int) : 0〜(0) 項目のインデックス番号(左から0,1,2,3,...) ; SubIndex (int) : 0〜(0) サブ項目のインデックス番号 ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvsetstr lvshwnd,"sample",2,1 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 ls=strlen(prm2): if ls==-1 : return -1 : else : sdim String,ls+1 String = prm2 nIndex = prm3 : if nIndex<=0 : nIndex=0 suIndex = prm4 : if suIndex<=0 : suIndex=1 #undef LVIF_TEXT #define LVIF_TEXT $00000001 ;LVITEM構造体 dim tim,9 tim(0) = LVIF_TEXT ;mask tim(1) = nIndex ;iItem tim(2) = suIndex ;iSubItem tim(5) = varptr(String) ;pszText tim(6) = ls ;cchTextMax SendMessage lvshwnd,LVM_SETITEM,0,varptr(tim) sdim String,0 return 0 #deffunc lsvimsel int prm1,int prm2,int prm3 ;******************************************************************************* ; リストビューコントロールの項目を選択 (lsvimsel) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvimsel lvshwnd,nIndex,nflag ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nIndex (int) : 0〜(0) 項目のインデックス番号(左から0,1,2,3,...) ; nflag (int) : -1〜(3)61440 (通常は3を指定する) ; ; nflag ; --------------------------------------------------------- ; -1 0 ; 0 LVIS_FOCUSED|LVIS_SELECTED ; LVIS_FOCUSED 1 ; LVIS_SELECTED 2 ; LVIS_CUT 4 ; LVIS_DROPHILITED 8 ; LVIS_OVERLAYMASK 3840 ; LVIS_STATEIMAGEMASK 61440 ; ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvimsel lvshwnd,2,3 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nIndex = prm2 : if nIndex<=0 : nIndex=0 nflag = prm3 : if nflag<0 : nflag=3 if nflag=-1 : nflag=0 if nflag==0 : nflag=3 #undef LVIF_STATE #define LVIF_STATE $00000008 ;LVITEM構造体 dim tim,9 tim(0) = LVIF_STATE ;mask tim(1) = nIndex ;iItem tim(2) = 0 ;iSubItem tim(3) = nflag ;state tim(4) = $ffffffff ;stateMask SendMessage lvshwnd,LVM_SETITEMA,0,varptr(tim) SetFocus lvshwnd return 0 #deffunc lsvcolumorder int prm1,array prm2,int prm3 ;******************************************************************************* ; リストビューコントロールのカラムの並び順を設定 (lsvcolumorder) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ※この命令は、拡張スタイルで LVS_EX_HEADERDRAGDROP が設定されている時のみ有効 ; ; ・書式 lsvcolumorder lvshwnd,Columarray,Columnum ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; Columarray (array) : 設定するカラム順序を配列の形式で指定 ; 例 : Columarray=3,2,0,1 ; Columnum (int) : カラムの数 ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; Columarray=3,2,0,1 ; lsvcolumorder lvshwnd,Columarray,4 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 Columnum = prm3 : if Columnum<=0 : Columnum=0 OrderArray = prm2 SendMessage lvshwnd,LVM_SETCOLUMNORDERARRAY,Columnum,varptr(OrderArray) return 0 #deffunc lsvgetclmwidth int prm1,int prm2 ;******************************************************************************* ; リストビューコントロールのカラムの幅を取得 (lsvgetclmwidth) ; ; 戻り値 : カラム幅 stat=ColomuWidth, 失敗 stat=-1 ; ; ・書式 lsvgetclmwidth lvshwnd,nColomu ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nColomu (int) : 0〜(0) カラム幅を取得するカラム番号 ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvgetclmwidth lvshwnd,2 : ColomuWidth=stat : mes ColomuWidth ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nColomu = prm2 : if nColomu<=0 : nColomu=0 SendMessage lvshwnd,LVM_GETCOLUMNWIDTH,nColomu,0 return stat #deffunc lsvsetclmwidth int prm1,int prm2,int prm3 ;******************************************************************************* ; リストビューコントロールのカラムの幅を設定 (lsvsetclmwidth) ; ; 戻り値 : 成功 stat=0, 失敗 stat=-1 ; ; ・書式 lsvsetclmwidth lvshwnd,nColomu,nColwid ; ・引数 lvshwnd (int) : Createlstviewで作成したハンドル ; nColomu (int) : 0〜(0) カラム幅を設定するカラム番号 ; nColwid (int) : 0〜(100) カラムの幅(const値を直接指定も可) ; ・タイプ モジュール命令 ; ;-- (NOTE) --------------------------------------------------------------------- ; ; (使用例) ; lsvsetclmwidth lvshwnd,2,70 ;******************************************************************************* lvshwnd = prm1 : if lvshwnd==0 : return -1 nColomu = prm2 : if nColomu<=0 : nColomu=0 lvAUTOSIZE=0 nColwid = prm3 : if nColwid<0 : nColwid=-nColwid :lvAUTOSIZE=1 ;nColwidに直接、下記の値を設定することもできる。 ;#define LVSCW_AUTOSIZE $FFFFFFFF アイテムのサイズに応じて調整 ;#define LVSCW_AUTOSIZE_USEHEADER $FFFFFFFE ヘッダの文字列サイズに合わせる if lvAUTOSIZE=1 { SendMessage lvshwnd,LVM_SETCOLUMNWIDTH,nColomu,$FFFFFFFF SendMessage lvshwnd,LVM_GETCOLUMNWIDTH,nColomu,0 if nColwid < stat :return 0 } SendMessage lvshwnd,LVM_SETCOLUMNWIDTH,nColomu,nColwid return 0 #undef ICC_LISTVIEW_CLASSES #undef LVIS_STATEIMAGEMASK #undef LVIF_STATE #undef LVIF_TEXT #global #endif #endif ;--------------------------------------------------------------- (EOF) --------- }} #comment