listview常用操作与全局常量

//窗体中添加 listbox 控件

msel = true/false 是否允许多选

允许多选
winform.add( 
listbox={ bgcolor=16777215;bottom=296;right=222;left=71;
items={"列表内容"  };msel=1;z=1;top=95;edge=1;cls="listbox" }
)

不允许多选
winform.add( 
listbox={ bgcolor=16777215;bottom=296;right=222;left=71;top=95;
items={  "列表内容"};z=1;edge=1;cls="listbox" }
)


//刷新listview
Refresh_main=function(){

        winform.listview.clear();
        var db=sqlConnection.getTable("SELECT * FROM file");//db为每行数据组成的数组,db[1].kg表示第一行的kg列数据
     //lisetview输出结果最常用的方式      
                 for(i=1;#db;1){        //#db表示对象的数量
                 winform.listview.addItem(); //只用来创建,设置用下面的set
                 winform.listview.setItemText(tostring(db[i].id),i,1)
                 winform.listview.setItemText(tostring(db[i].name),i,2)  //第一个参数为字符串
                 winform.listview.setItemText(tostring(db[i].age),i,3)
                 winform.listview.setItemText(tostring(db[i].kg),i,4)
                 winform.listview.setItemText(tostring(db[i].love),i,5)
        }
}

//删除所选数据
delete_db = function(){
        
for(i=1;winform.listview.count;1){           //注意count属性 
         //通过for循环判断是否选中,选中则删除
                if(winform.listview.getChecked(i)){
                
                        var id=winform.listview.getItemText(i,1)  //行,列
                        sqlConnection.exec("DELETE FROM file WHERE id="+id+"")
                }
}
 win.msgbox("删除成功","系统提示")  //弹窗标题为 系统提示
 Refresh_main()        
}

//listview原地编辑并更新到数据库
winform.listview.onnotify = function(id,code,ptr){

    if(code=0xFFFFFFFE/*_NM_CLICK*/ ){ //单击视图控件
        var notifyMessage = winform.listview.getNotifyMessage(code,ptr); //code为通知码,指向listview则返回响应点击的对象,iItem为行号,iSubItem 为列号
        if( ! notifyMessage.iItem && notifyMessage.iSubItem ) return ;
        
        var edit = winform.listview.editlable  //检测有没有editlable这个控件
        if( !edit ){
            winform.listview.addCtrl(
                editlable = {
                    cls="edit";font = LOGFONT( h = 11 );left = 0;top = 0;
                    right = 50;bottom = 50;autoResize = false ;hide = 1;edge = 1;  
                    wndproc = function( hwnd, message, wParam, lParam ){ //后两个参数是对第二个参数的补充,wndproc为窗口进程
                        if( ( message ==0x8/*_WM_KILLFOCUS*/)
                            || message == 0x101/*_WM_KEYUP*/ && wParam == 0xD/*_VK_RETURN*/){ //回车信息用wParam传送
                            // 按下了回车键或失去焦点,更新listview数据
                            owner.parent.setItemText( owner.text, owner.listViewNotifyMessage.iItem  //注意owner的用法
                                , owner.listViewNotifyMessage.iSubItem );
                                
                   //以上为界面部分完成,下面为数据库更新
                                
                                
                                    //获取选中的焦点
                                   var focus=winform.listview.getFocused() //将函数赋给变量focus,获得行号,没有则返回0,即false
                                                                        if(focus!=0){
                                                                        
                                                            var id=winform.listview.getItemText(focus,1);//第x行第一列
                                                            var name=winform.listview.getItemText(focus,2);
                                                            var age=winform.listview.getItemText(focus,3);
                                                            var kg=winform.listview.getItemText(focus,4);
                                                            var love=winform.listview.getItemText(focus,5);
                                                          //  console.log(id,name,age,kg,love)
                                                            //更新语句update
                                                            update_db(id,name,age,kg,love);
                                                            //调用刷新
                                                            Refresh_main();
                                                                        }
                                      
                            owner.show(false); 
                        }
                    }  
                }
            )
            edit = winform.listview.editlable;
        }
        edit.listViewNotifyMessage = notifyMessage;
        edit.text=winform.listview.getItemText(notifyMessage.iItem,notifyMessage.iSubItem); //响应的行号和列号
        var rc=winform.listview.getItemRect( notifyMessage.iItem,notifyMessage.iSubItem,,2/*_LVIR_LABEL*/ )   //rect结构体对象,有四个属性right,left等
        rc.right += 5; rc.bottom += 5;  //用;可以连写
        edit.setRect(rc);
        edit.show();
        edit.setFocus();// 获取焦点
    }
}



//listview原地编辑并更新到数据库

winform.listview.onnotify = function(id,code,ptr){
    if(code==0xFFFFFF4B){// 滚动条 
        if(!winform.listview.editlable) return ; 
        edit = winform.listview.editlable;
        rc=winform.listview.getItemRect(edit.listViewNotifyMessage.iItem,edit.listViewNotifyMessage.iSubItem,,2/*_LVIR_LABEL*/);
        if(rc.top<rc.bottom-rc.top){//选中行向上滚动到了列标题及其以上的位置,不处理的话编辑框会覆盖掉列标题。
            rc.top-=math.abs(rc.bottom);rc.bottom=rc.top;
        }else {
            rc.right += 5; rc.bottom += 5;
        }
        edit.setRect(rc);
        winform.listview.redraw();//经测试,这行会引起滚动条位置变化时listview控件闪烁,如果在意这个问题,请主动给listview控件增加_WS_CLIPCHILDREN样式,可以省略掉这行。
    }
    if(code=0xFFFFFFFD/*_NM_DBLCLK*/ ){ //code=0xFFFFFFFE/*_NM_CLICK鼠标单击*/
        var notifyMessage = winform.listview.getNotifyMessage(code,ptr);
        if( ! notifyMessage.iItem && notifyMessage.iSubItem ) return ; 
        
        var edit = winform.listview.editlable
        if( ! edit ){
            winform.listview.addCtrl(
                editlable = { 
                    cls="edit";font = LOGFONT( h = 11 );left = 0;top = 0;
                    right = 50;bottom = 50;autoResize = false ;hide = 1;edge = 1;                    
                    wndproc = function( hwnd, message, wParam, lParam ){
                        if( ( message = 0x8/*_WM_KILLFOCUS*/) 
                            || message == 0x101/*_WM_KEYUP*/ && wParam == 0xD/*_VK_RETURN*/){
                            // 按下了回车键或失去焦点,更新listview数据
                            owner.parent.setItemText( owner.text, //格子内容
                                                      owner.listViewNotifyMessage.iItem, //行号
                                                      owner.listViewNotifyMessage.iSubItem );//列号
                            //console.log(owner.text, owner.listViewNotifyMessage.iItem, owner.listViewNotifyMessage.iSubItem) //测试显示数据
                            var focus=owner.listViewNotifyMessage.iItem
                            var id=winform.listview.getItemText(focus,1);//focus=第i行,第1列
                            var name=winform.listview.getItemText(focus,2);
                            var age=winform.listview.getItemText(focus,3);
                            var kg=winform.listview.getItemText(focus,4);
                            var love=winform.listview.getItemText(focus,5);
                          //  console.log(id,name,age,kg,love)
                            //更新语句update
                            update_db(id,name,age,kg,love);
                            //调用刷新
                            Refresh_main();
                            owner.show(false);
                        }
                    }  
                }
            )  
            edit = winform.listview.editlable;
        }
        edit.listViewNotifyMessage = notifyMessage; 
        edit.text=winform.listview.getItemText(notifyMessage.iItem,notifyMessage.iSubItem);
       
        var rc=winform.listview.getItemRect( notifyMessage.iItem,notifyMessage.iSubItem,,2/*_LVIR_LABEL*/ ) //最后参数是控制选取范围
         winform.msgbox(rc.right)
        rc.right += 55; rc.bottom += 55;
        edit.setRect(rc);
        edit.show();
        edit.setFocus();// 获取焦点
    } 
}



//检查重复项
winform.btn_adddb.oncommand = function(){
        
        var name=winform.ed_name.text;
        var age =winform.ed_age.text;
        var kg  =winform.ed_kg.text;
        var love=winform.ed_love.text;
        var name_01;
        var num=select_db(name);
        for(i=1;#num;1){
                
                name_01=num[ i ].name;

            }
    if(name_01!=null){
    
       win.msgbox("该名称数据库已经存在","系统提示")
               
    }else {
            
                 if(name!="" ? age!=null ? kg!=null ? love!=""){
                        add_db(name,age,kg,love)
                }        
    }
}

 

/*
_LVN_BEGINDRAG 鼠标左键正在被触发以便进行拖放操作(当鼠标左键开始拖拽列表视图控件中的项目时产生)
_LVN_BEGINRDRAG 鼠标右键正在被触发以便进行拖放操作(当鼠标右键开始拖拽列表视图控件中的项目时产生)
_LVN_BEGINLABELEDIT 开始编辑项的文本
_LVN_COLUMNCLICK 单击列(当鼠标单击列表视图控件列标题时产生)
_NM_CLICK 当鼠标单击列表视图控件时产生
_LVN_COLUMNCLICK 单击列
_LVN_DELETEALLITEMS 删除所有项
_LVN_DELETEITEM 删除某个项
_NM_DBLCLK 当鼠标双击列表视图控件时产生
_LVN_ENDLABELEDIT 结束对项文本的编辑
_LVN_GETDISPINFO 请求需要显示的信息
_LVN_GETINFOTIP 请求显示在工具提示窗口内的附加的文本信息
_LVN_HOTTRACK 鼠标滑过某个项
_LVN_INSERTITEM 当向列表视图控件插入项目时产生
_LVN_ITEMACTIVATE 激活某个项
_LVN_ITEMCHANGED 某个项已经发生变化
_LVN_ITEMCHANGING 某个项目正在发生变化
_NM_KILLFOCUS 当视表列图控件失去焦点时产生
_LVN_KEYDOWN 某个键被按下
_LVN_MARQUEEBEGIN 开始某个边框选择
_NM_OUTOFMEMORY 当内存溢出时产生
_LVN_ODCACHEHINT 虚拟列表控件的显示区域的内容发生了变化
_LVN_ODSTATECHANGED 虚拟列表的控件的某个项或某个范围内的项已经发生变化
_LVN_ODFINDITEM 需要拥有者查找一个特定的回调项
_NM_RCLICK 当鼠标右键单击列表视图控件时产生
_NM_RDBLCLK 当鼠标右键双击列表视图控件时产生
_NM_SETFOCUS 当列表视图控件获得焦点时产生
_LVN_SETDISPINFO 父窗口必须更新控件为项所维护的信
*/



智能命令提示:


属性列表


1.动态添加内容及删除内容函数


listbox.add(__/*请输入文本*/,1) = 添加列表项到头部, 函数第二个
listbox.add(__/*请输入文本*/) = 添加列表项到尾部
listbox.add(__/*请输入文本*/,-1) = 添加列表项到尾部
listbox.add("添加项",位置) = 添加列表项到指定位置,第二个参数为位置数值


listbox.delete() = 删除当前选中项或第一项,删除后列表内容自动向上
listbox.delete(__) = 删除指定项,参数为位置数值
listbox.clear() = 清除列表框所有内容




2.选择类函数
listbox.items = 列表项集合table对象
listbox.count = 列表项数目


listbox.getItemText(__/*项索引*/) = 获取指定项文本,参数为位置数值
listbox.getItemRect(__/*项索引*/) = 获取指定项区块位置返回::RECT() 结构体


listbox.selIndex = 获取或设置列表框当前选中项(仅在单选模式下有效)
                         多选模式下请使用 getSelected() setSelected() 函数
listbox.selText = 获取当前选项的文本或根据指定的文本查找并改变选项


listbox.getAt(x,y) = 返回指定客户区坐标所在的项索引.
listbox.hitTest(.(x坐标,y坐标,是否屏幕坐标) = 该函数返回指定坐标的句柄,参数三可省略,默认为false.如果不指定任何参数,则自动获取当前消息坐标


3.控制类函数
listbox.hwnd = 控件句柄
listbox.id = 控件ID
listbox._parentForm = 控件所在的父窗口(指win.form对象)winform.
listbox.getParent() = 返回父窗口static.
listbox.setParent(__/*控件对象*/) = 改变父窗口 


listbox.addCtrl = @.addCtrl(    edit ={ cls="edit";left=0;top=0;right=50;bottom=50;autoResize=false ;hide=1;edge=1;  })


位置属性
listbox.left = 左侧坐标
listbox.right = 右侧坐标
listbox.top = 顶部坐标
listbox.bottom = 底部坐标
listbox.width = 宽度
listbox.height = 高度
listbox.getFont() = 控件字体(::LOGFONT结构体)logfont.
listbox.setFont(__/*指定字体*/) = 指定LOGFONT字体对象,或逻辑字体句柄 
listbox.setFont(混入字体属性) = @.setFont(point=10;name="宋体");
listbox.clientRect =  获取控件客户区块位置(::RECT结构体)
listbox.theme = 外观主题,例如winform.button.theme = "Explorer"winform.button.theme = false
listbox.redraw() = 刷新
listbox.disabled = 是否禁用
listbox.show(true__) = 显示控件
listbox.close() = 关闭控件窗


listbox.selectRange(1,__) = 选中指定范围如果不指定任何参数,取消选区
listbox.setSelected(1__/*项索引*/) = 选中指定项,索引为0则选定全部该函数仅在开启控件多选模式下有效单选模式下请使用selIndex属性替代
listbox.setSelected(1__/*项索引*/,false) = 取消选中指定项,索引为0则取消全选
listbox.getSelected(1__/*项索引*/) = 是否选中 


listbox.findEx(__/*请输入文本*/) = 精确查找指定的项找不到返回0
listbox.find(__/*请输入文本*/) = 在列表框里查找指定的项找不到返回0
listbox.addfile(__/*请输入路径*/) = 向列表框里增加一个文件(包括目录)




listbox.getRect() = 控件区块位置(::RECT结构体)
listbox.getRect(true) = 控件屏幕区块位置(::RECT结构体)  
listbox.setRect(rc) = 设置控件区块位置(::RECT结构体)  
listbox.setRect(rc,true) = 设置控件屏幕区块位置(::RECT结构体)
listbox.getClientRect() =  控件客户区块位置(::RECT结构体)rect.






listbox.modifyStyle(.(remove,add) = 如果指定第三个参数,则使用此参数调用::SetWidnowPos 
listbox.modifyStyleEx(.(remove,add) = 如果指定第三个参数,则使用此参数调用::SetWidnowPos
listbox.capture = 是否捕获全局鼠标消息




listbox.invalidate(__/*可选使用::RECT()对象指定客户区*/) = 使窗口绘图区无效
listbox.invalidate(__/*可选使用::RECT()对象指定客户区*/,0) = 使窗口绘图区无效不刷新背景
listbox.update() = 重绘invalidate函数指定的区块 


listbox.setFocus() = 设置焦点 
listbox.setPos(.(x坐标,y坐标,宽,高,插入位置,参数) = 调整窗口位置或排序,所有参数可选同时指定x,y坐标则移动位置同时指定宽高则改变大小指定插入位置(句柄或_HWND前缀常量)则调整Z序
listbox.getPos() = 返回相对坐标,宽,高x,y,cx,cy=win.getPos(hwnd) 
listbox.onMeasureItem(measureItem) = @.onMeasureItem = function(measureItem){measureItem.itemHeight = 51;  } 
listbox.onDrawItem(drawItem) = @.onDrawItem = function(drawItem){


} 

 

转载于:https://www.cnblogs.com/yaoyue68/p/10486199.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值