以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  筛选后用颜色表示  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=7476)

--  作者:blackzhu
--  发布时间:2010/6/28 13:52:00
--  筛选后用颜色表示

   我想做一个窗口上面绑定一张表,有一个文本框和按钮用于筛选,但筛选后筛选出来的数据只要符合文本框中的数据时用yellow颜色标出,应该怎么做?以前有DATALIST时我用DRAWCELL做过,但是现在datalist这个取消了,我不知道怎么弄,按照帮助我只能做到整列标出.我的筛选代码为:

 

   CurrentTable.Filter = ""
Dim Filter As String
With e.Form.Controls("TextBox1")
    If .Value IsNot Nothing Then
        Filter = "\'*" & .Value & "*\'"
    End If
End With
If Filter > "" Then
    Tables("订单").Filter = "产品 Like " & Filter & " Or 客户 Like "  & Filter  & " Or 雇员 Like "  & Filter
End If

 

  样式为:标出信息


--  作者:狐狸爸爸
--  发布时间:2010/6/28 14:40:00
--  

table也有drawcell,原来怎么做,现在也怎么做


--  作者:blackzhu
--  发布时间:2010/6/28 14:56:00
--  筛选后用颜色表示

 我就是忘了怎么做了,那么示例找不到了.

 

    If  e.Col.Name = "产品" Then
    If e.Row.IsNull(e.Col.Name) = False 

         If e.Row(e.Col.Name) = ?  (如何等于窗口的文本框的数据) Then 
        e.Style = "标出信息" \'那么用"优秀"样式绘制单元格
    End If
End If


--  作者:狐狸爸爸
--  发布时间:2010/6/28 15:03:00
--  
参考drawcell事件的说明
--  作者:mr725
--  发布时间:2010/6/28 15:19:00
--  
以下是引用blackzhu在2010-6-28 14:56:00的发言:

 我就是忘了怎么做了,那么示例找不到了.

 

    If  e.Col.Name = "产品" Then
    If e.Row.IsNull(e.Col.Name) = False 

         If e.Row(e.Col.Name) = ?  (如何等于窗口的文本框的数据) Then 
        e.Style = "标出信息" \'那么用"优秀"样式绘制单元格
    End If
End If

你不应该吧?:

If e.Row(e.Col.Name) = e.form.Controls("TextBox1").text


--  作者:blackzhu
--  发布时间:2010/6/28 15:42:00
--  筛选后用颜色表示

事件的说明我看了,还是做不出来,狐爸你帮忙写一个.

 

    If e.Row(e.Col.Name) = ?  (如何等于窗口的文本框的数据) Then 
       


--  作者:blackzhu
--  发布时间:2010/6/28 15:57:00
--  筛选后用颜色表示
以下是引用mr725在2010-6-28 15:19:00的发言:

你不应该吧?:

If e.Row(e.Col.Name) = e.form.Controls("TextBox1").text

  怎么写?这个不对的


--  作者:狐狸爸爸
--  发布时间:2010/6/28 16:00:00
--  

窗口的事件才可以用e.form,表示控件所在窗口,也就是本窗口,表事件应该是forms("窗口名"),理由你要好好想想

 
If forms("xxx").Opened Then

    If e.Row(e.Col.Name) = forms("xxx").Controls("TextBox1").Value

    End If

End If

其实应该将这个文本框绑定到var变量,直接和var变量比较,效率高一些的

[此贴子已经被作者于2010-6-28 16:04:47编辑过]

--  作者:mr725
--  发布时间:2010/6/28 16:10:00
--  

drawcell事件:

If  e.Col.Name = "第一列" Then
    If e.Row.IsNull(e.Col.Name) = False
        if Forms("窗口7").opened           
            If e.Row(e.Col.Name) = Forms("窗口7").Controls("TextBox1").text Then
                e.Style = "样式1" \'那么用"优秀"样式绘制单元格
            end if
        End If
    End If
End If

 

窗口textbox控件的 textchanged事件:

With CurrentTable
    .StopRedraw
    .ResumeRedraw
End With

[此贴子已经被作者于2010-6-28 16:11:19编辑过]

--  作者:blackzhu
--  发布时间:2010/6/28 16:18:00
--  

我知道怎么回事?其实我第一次就对了,少了一句 If forms("xxx").Opened Then,没有判断窗口是不是打开?

明白了,谢谢!已经OK了