| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4225 人关注过本帖
标题:请教如何在下拉组合框内实现数据过滤?
只看楼主 加入收藏
ntxscwk
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:118
专家分:352
注 册:2012-6-23
结帖率:80%
收藏
已结贴  问题点数:20 回复次数:11 
请教如何在下拉组合框内实现数据过滤?
将rowsource字段中符合录入特征的记录显示出来。如录入"sy",则下拉时显示“圣阳家居”及“森雅超市”。
搜索更多相关主题的帖子: 森雅 如何 记录 
2016-04-22 11:30
ntxscwk
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:118
专家分:352
注 册:2012-6-23
收藏
得分:0 
2016-04-22 11:33
tlliqi
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:204
帖 子:15453
专家分:65956
注 册:2006-4-27
收藏
得分:0 
模糊查询?
2016-04-22 12:22
ntxscwk
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:118
专家分:352
注 册:2012-6-23
收藏
得分:0 
是的。同时用代码或单位名称实现模糊查询,请赐教!
2016-04-22 13:51
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册:2014-5-20
收藏
得分:5 
全局变量名写错了
将那个hkgl改为khgl
2016-04-22 13:57
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:10 
SET FILTER TO 命令使用不方便

客户.rar (2.8 KB)

坚守VFP最后的阵地
2016-04-22 14:15
sdta
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:江苏省连云港市
等 级:版主
威 望:335
帖 子:9848
专家分:27241
注 册:2012-2-5
收藏
得分:0 
建议不要使用SET FILTER TO 命令,当你过滤后,再想显示全部数据,就不容易了。

坚守VFP最后的阵地
2016-04-22 14:17
ntxscwk
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:118
专家分:352
注 册:2012-6-23
收藏
得分:0 
正发愁呢!谢谢各位大侠!我测试一下。
2016-04-22 15:11
mywisdom88
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:191
帖 子:3147
专家分:8408
注 册:2015-3-25
收藏
得分:5 
转发:13豆的
Public oform1

oform1=Newobject("form1")
oform1.Show
Return

Define Class form1 As Form

    DoCreate = .T.
    Caption = "Form1"
    KeyPreview = .T.
    Name = "Form1"

    Add Object combo1 As ComboBox With ;
        Height = 24, ;
        Left = 48, ;
        Style = 0, ;
        Top = 24, ;
        Width = 144, ;
        Name = "Combo1"

    Add Object list1 As ListBox With ;
        Height = 97, ;
        Left = 192, ;
        Top = 84, ;
        Visible = .F., ;
        Width = 108, ;
        Name = "List1"

    Procedure Init
        Create Cursor t1 (fl1 C(20))
        For lnI=0 To 23
            Insert Into t1 Values (Chr(65+lnI)+Chr(97+lnI)+'-'+Chr(66+lnI)+Chr(98+lnI)+'-'+Chr(67+lnI)+Chr(99+lnI)+Transform(lnI))
        Endfor
        Locate
        Scan
            (fl1)
        Endscan
    Endproc

    Procedure KeyPress
        Lparameters nKeyCode, nShiftAltCtrl
        If (nKeyCode=5 Or nKeyCode=24 Or nKeyCode=13) And This.List1.Visible And This.List1.ListItemId>0 And '1'
            If nKeyCode=13
                (Thisform.List1.ListItemId,1)                && 此种方式不会触发Text1的InteractiveChange事件
                This.List1.Visible=.F.
            Else
                lnListID=Iif(nKeyCode=5,Max(This.List1.ListItemId-1,1),Min(This.List1.ListItemId+1,This.List1.ListCount))
                This.List1.ListItemId=lnListID
                (Thisform.List1.ListItemId,1)
                Nodefault
            Endif
        Endif
    Endproc

    Procedure combo1.LostFocus
        This.Tag=''
    Endproc

    Procedure combo1.KeyPress
        Lparameters nKeyCode, nShiftAltCtrl
        If Between(nKeyCode,48,57) ;            && 0-9
            Or Between(nKeyCode,97,122) ;        && a-z
            Or Between(nKeyCode,65,90) ;        && A-Z
            Or nKeyCode=7 ;                        && DEL
            Or nKeyCode=127 ;                     && BACKSPACE
            Or (nKeyCode>127 And nKeyCode<>160) && 汉字
            Thisform.List1.Tag='1'        && 自动筛选
        Else
            Thisform.List1.Tag=''            && 不筛选
        Endif
    Endproc

    Procedure combo1.InteractiveChange
        If Thisform.List1.Tag='1'
            Thisform.List1.Tag=''
            lcCombo1Val=Upper(Alltrim(This.DisplayValue))
            If !Empty(lcCombo1Val)
                Thisform.List1.RowSource=Null
                Select fl1 Into Cursor ct2 From t1 Where (Upper(fl1) Like "%&lcCombo1Val.%")
                Thisform.List1.RowSourceType=6
                Thisform.List1.RowSource="ct2.fl1"
                If Reccount('ct2')>0
                    Thisform.List1.ListItemId=1
                    Thisform.List1.Visible=.T.
                Else
                    Thisform.List1.Visible=.F.
                Endif
            Else
                Thisform.List1.Visible=.F.
            Endif
        Endif
    Endproc

    Procedure combo1.DropDown
        Thisform.List1.Visible=.F.
        Thisform.List1.Tag=''
    Endproc

    Procedure combo1.GotFocus
        This.Tag='1'
    Endproc

    Procedure list1.MouseEnter
        Lparameters nButton, nShift, nXCoord, nYCoord
        This.Refresh        && 解决鼠标移到其他控件(部分遮挡本控件)后,又移回本控件的显示问题
    Endproc

    Procedure list1.Init
        This.Move(,,,100)        && 目的是显示在 Combo1 的正下方,让人看起来像是 Combo1 的下拉框
    Endproc

    Procedure list1.Click
        (Thisform.List1.ListItemId,1)
        This.Visible=.F.
    Endproc

Enddefine
2016-04-22 15:47
ntxscwk
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:118
专家分:352
注 册:2012-6-23
收藏
得分:0 
解决了,谢谢各位!
2016-04-23 21:22
快速回复:请教如何在下拉组合框内实现数据过滤?
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024109 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved