如何在LISTVIEW控件中上下移动项目(VFP)

如何在LISTVIEW控件中上下移动项目(VFP)

001: FUNCTION MoveListItem
002: *-- 功能:如何在LISTVIEW控件中上下移动项目(VFP)

003: *-- 作者:红虎

004: *-- 参数:针对的LISTVIEW控件,以及方向( 1=向下,-1=向上,其他参数则返回)

005: *-- 返回:无

006:
LPARAMETERS toListView as MSComctlLib.ListView, tnArrow as Integer
007:

008:
LOCAL loList as MSComctlLib.ListView
009:
loList = toListView
010:

011:
LOCAL loItem as MSComctlLib.ListItem
012:
LOCAL loNewItem as MSComctlLib.ListItem
013:

014: *-- 当前LISTVIEW选择的项目

015:
loItem = loList.SelectedItem
016:

017: *-- 判断选择的项目

018:
IF ISNULL(loItem)
019:
   RETURN
020:
ENDIF
021:

022: *-- 判断参数是否为1或者-1

023:
IF TYPE("tnArrow") # "N"
024:
   tnArrow   = 0
025:
ENDIF
026:
DO CASE
027:
   CASE tnArrow = 1   && 向下
028:
      IF loItem.Index = loList.ListItems.Count
029:
         ??CHR(7)
030:
         RETURN
031:
      ENDIF
032:
   CASE tnArrow = -1 && 向上
033:
      IF loItem.Index = 1
034:
         ??CHR(7)
035:
         RETURN
036:
      ENDIF
037:
   OTHERWISE
038:
      ??CHR(7)
039:
      RETURN
040:
ENDCASE
041:

042: *-- 定义项目所需变量

043:
LOCAL laSubListItemText(1) As String
044:
LOCAL lnTotalSubItems As Integer
045:
LOCAL n As Integer
046:
LOCAL lnItemIndex As Integer, ;
047:
      lcItemKey As String, ;
048:
      lcItemText As String, ;
049:
      lcItemTag As String, ;
050:
      luSmallIcon As Variant,;
051:
      llChecked as Boolean
052:

053: *-- 获取所选择的项目的数据

054:
With loItem
055:
    lnItemIndex = .Index + tnArrow
056:
    lcItemKey = .Key
057:
    lcItemText = .Text
058:
    lcItemTag = .Tag
059:
    luSmallIcon = .SmallIcon
060:
    lnTotalSubItems = .ListSubItems.Count
061:
    llChecked = .Checked
062:
    
063:
    LOCAL laSubListItemText(lnTotalSubItems) As String
064:
    For n = 1 To lnTotalSubItems
065:
        laSubListItemText(n) = .ListSubItems(n)
066:
    Next
067:
ENDWITH
068:

069: *-- 获取后将该项目删除

070:
loList.ListItems.Remove(loItem.Index)
071:

072: *-- 添加新的项目,并指定其索引值

073:
loNewItem = loList.ListItems.Add(lnItemIndex, lcItemKey, lcItemText, , luSmallIcon)
074:

075: *-- 根据原先所选取的项目大数据对新的项目赋值

076:
With loNewItem
077:
    .Tag = lcItemTag
078:
    For n = 1 To lnTotalSubItems
079:
        .ListSubItems.Add (, , laSubListItemText(n))
080:
    Next
081:
    .Selected = .T.
082:
    .Checked = llChecked
083:
    .EnsureVisible()
084:
EndWith
085:

086:
loList.SetFocus()
087:

088: ENDFUNC
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值