VB中LIST控件的问题
在VB中搜索,把搜索出来的结果显示在LIST控件,再次搜索的时候把LIST用LIST1.CLEAR清除后,发现数据是清除了,但是还留有一条空白的信息,再次搜索结果就在空白...
在VB中搜索,把搜索出来的结果显示在LIST控件,再次搜索的时候把LIST用LIST1.CLEAR清除后,发现数据是清除了,但是还留有一条空白的信息,再次搜索结果就在空白ITEM下面添加,搜索次数多了的话,搜索的结果需要下拉才能见到。并不能说显示在控件的第一条。。
如果才能实现新搜索的结果在第一条显示?
另外,我在用FileCopy命令的时候,如果拷贝的数据多或者大的话,在拷贝过程未完成时,应用程序会导致假死,而且拷贝过程没有WINDOWS的那个文件复制进程条,应用程序不能操作,直到拷贝完成后才正常,不知道为什么会这样,有没有什么办法可以让拷贝时不会假死,或者拷贝时在后台进行,软件还能操作。
请大家帮帮我~~~谢谢!!
LIST控件的第一排列问题已经解决了~~~只要在ADDITEM时加上列数就可以了
现在剩下2个问题。1、就是上面说的FILECOPY的问题。
2、就是在用FILELISTBOX控件显示文件的时候如何实现双击时删除选定的文件?
谢谢~~~
栽培者你那个API进度函数不能调用啊。。我按你说的加了模块,但是在调用uCopyFile时提示BYREF参数类型不符合,去掉prgState后运行提示uCopyFile 参数不可选。。。不知道什么问题。。帮帮我~~谢谢 展开
如果才能实现新搜索的结果在第一条显示?
另外,我在用FileCopy命令的时候,如果拷贝的数据多或者大的话,在拷贝过程未完成时,应用程序会导致假死,而且拷贝过程没有WINDOWS的那个文件复制进程条,应用程序不能操作,直到拷贝完成后才正常,不知道为什么会这样,有没有什么办法可以让拷贝时不会假死,或者拷贝时在后台进行,软件还能操作。
请大家帮帮我~~~谢谢!!
LIST控件的第一排列问题已经解决了~~~只要在ADDITEM时加上列数就可以了
现在剩下2个问题。1、就是上面说的FILECOPY的问题。
2、就是在用FILELISTBOX控件显示文件的时候如何实现双击时删除选定的文件?
谢谢~~~
栽培者你那个API进度函数不能调用啊。。我按你说的加了模块,但是在调用uCopyFile时提示BYREF参数类型不符合,去掉prgState后运行提示uCopyFile 参数不可选。。。不知道什么问题。。帮帮我~~谢谢 展开
4个回答
展开全部
这个问题可以这样的解决:在vb6中调试通过。
1:首先在公共模块中:
Option Explicit
Public Const FO_MOVE = &H1
Public Const FO_COPY = &H2
Public Const FO_DELETE = &H3
Public Const FO_RENAME = &H4
Public Const FOF_NOCONFIRMATION = &H10
Public Const FOF_NOCONFIRMMKDIR = &H200
Public Const FOF_ALLOWUNDO = &H40
Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
其次:在frm模块之中:
Private Sub Command1_Click()
Dim SHFileOp As SHFILEOPSTRUCT
SHFileOp.wFunc = FO_COPY
SHFileOp.fAborted = True
SHFileOp.pFrom = "F:\MEM\*.*"
SHFileOp.pTo = "f:\aa"
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
SHFileOperation SHFileOp
MsgBox "复制完成"
End Sub
注意:这是后台的一个拷贝,复制的过程当中软件还能操作,但是你要理解vb
的api函数的一些声明和用法,特别是SHFileOperation的用法。
2:FILELISTBOX控件显示文件的时候如何实现双击时删除选定的文件的解决:
在frm之中:一个listbox控件
Option Explicit
Private Const LB_ITEMFROMPOINT = &H1A9
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal
wParam As Long, lParam As Any) As Long
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim pos As Long
dim idx As Long
pos = X / Screen.TwipsPerPixelX + Y / Screen.TwipsPerPixelY * 65536
idx = SendMessage(List1.hwnd, LB_ITEMFROMPOINT, 0, ByVal pos)
Kill List1.List(idx)
List1.Refresh
End Sub
注意:Kill List1.List(idx)‘这个地方有可能不会达到你的要求,如果要删
除文件,则你要写全文件的路径,即是:
kill "c:\aaa\" & List1.List(idx)
如果是只是不显示在list中,则只需:List1.RemoveItem (idx) 就可以了!
你可以试一试!!!
1:首先在公共模块中:
Option Explicit
Public Const FO_MOVE = &H1
Public Const FO_COPY = &H2
Public Const FO_DELETE = &H3
Public Const FO_RENAME = &H4
Public Const FOF_NOCONFIRMATION = &H10
Public Const FOF_NOCONFIRMMKDIR = &H200
Public Const FOF_ALLOWUNDO = &H40
Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
其次:在frm模块之中:
Private Sub Command1_Click()
Dim SHFileOp As SHFILEOPSTRUCT
SHFileOp.wFunc = FO_COPY
SHFileOp.fAborted = True
SHFileOp.pFrom = "F:\MEM\*.*"
SHFileOp.pTo = "f:\aa"
SHFileOp.fFlags = FOF_ALLOWUNDO + FOF_NOCONFIRMATION
SHFileOperation SHFileOp
MsgBox "复制完成"
End Sub
注意:这是后台的一个拷贝,复制的过程当中软件还能操作,但是你要理解vb
的api函数的一些声明和用法,特别是SHFileOperation的用法。
2:FILELISTBOX控件显示文件的时候如何实现双击时删除选定的文件的解决:
在frm之中:一个listbox控件
Option Explicit
Private Const LB_ITEMFROMPOINT = &H1A9
Private Declare Function SendMessage Lib "user32"
Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal
wParam As Long, lParam As Any) As Long
Private Sub List1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim pos As Long
dim idx As Long
pos = X / Screen.TwipsPerPixelX + Y / Screen.TwipsPerPixelY * 65536
idx = SendMessage(List1.hwnd, LB_ITEMFROMPOINT, 0, ByVal pos)
Kill List1.List(idx)
List1.Refresh
End Sub
注意:Kill List1.List(idx)‘这个地方有可能不会达到你的要求,如果要删
除文件,则你要写全文件的路径,即是:
kill "c:\aaa\" & List1.List(idx)
如果是只是不显示在list中,则只需:List1.RemoveItem (idx) 就可以了!
你可以试一试!!!
展开全部
1.可以借用API来实现进度,下面是我原来写的一个例子。
http://ronggang.spaces.live.com/blog/cns!A3A7B24004DD9126!127.entry
2.如果你的FILELISTBOX为 File1的话,直接在它的双击事件中编写代码:
Private Sub File1_DblClick()
If Right$(File1.Path, 1) = "\" Then
Kill File1.Path & File1.List(File1.ListIndex)
Else
Kill File1.Path & "\" & File1.List(File1.ListIndex)
End If
End Sub
Kill 时如果文件在使用则会产生一个错误,你需要去处理它。
http://ronggang.spaces.live.com/blog/cns!A3A7B24004DD9126!127.entry
2.如果你的FILELISTBOX为 File1的话,直接在它的双击事件中编写代码:
Private Sub File1_DblClick()
If Right$(File1.Path, 1) = "\" Then
Kill File1.Path & File1.List(File1.ListIndex)
Else
Kill File1.Path & "\" & File1.List(File1.ListIndex)
End If
End Sub
Kill 时如果文件在使用则会产生一个错误,你需要去处理它。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
要实现进度,你可以用open 打开文件对文件进行拷贝复制,这样你就能具体的控制复制进度。实际上filecopy也是同样的操作。
至于你说的删除文件,你可以用kill函数 + 文件名 就可以做到,比较简单。
至于你说的删除文件,你可以用kill函数 + 文件名 就可以做到,比较简单。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2006-09-02
展开全部
kill`````就可以了啊
双击事件‘‘‘
双击事件‘‘‘
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询