vb6(SP6) 通用控件5.0的listview中的checkbox listview中添加控件 自定义通用对话框
请回答下面问题:1、为了用xp样式,我使用了通用控件5.0里面的listview,视图设置成report样式。它默认是没有checkbox的,我自己发消息给它加上去了。现...
请回答下面问题:
1、为了用xp样式,我使用了通用控件5.0里面的listview,视图设置成report样式。它默认是没有checkbox的,我自己发消息给它加上去了。现在的问题是,我怎么知道checkbox有没有打钩呢?
我知道这个用6.0版的通用控件很好实现,因为每个项目有checked属性,不过要放弃xp样式。那 5.0 版listview的怎么实现呢?
2、listview里每个项目后面是否可以添加控件?比如我想让每个item后面都有一个按钮或者复选框(类似Access数据库表中的是否选项),按下可以执行我指定的操作,那又应该怎么实现?
3、如何在通用对话框中增加自定义的控件?如Photoshop CS2的【打开】对话框中就有预览图片功能和【使用Adobe对话框】的按钮,如何做到这些功能?
请给出完整的示例代码或程序段或解决思路。 展开
1、为了用xp样式,我使用了通用控件5.0里面的listview,视图设置成report样式。它默认是没有checkbox的,我自己发消息给它加上去了。现在的问题是,我怎么知道checkbox有没有打钩呢?
我知道这个用6.0版的通用控件很好实现,因为每个项目有checked属性,不过要放弃xp样式。那 5.0 版listview的怎么实现呢?
2、listview里每个项目后面是否可以添加控件?比如我想让每个item后面都有一个按钮或者复选框(类似Access数据库表中的是否选项),按下可以执行我指定的操作,那又应该怎么实现?
3、如何在通用对话框中增加自定义的控件?如Photoshop CS2的【打开】对话框中就有预览图片功能和【使用Adobe对话框】的按钮,如何做到这些功能?
请给出完整的示例代码或程序段或解决思路。 展开
1个回答
展开全部
1、这个问题我给你解答:添加一个按钮和一个listview,然后粘贴以下代码就可以检查checkbox是否打勾
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 Const LVM_FIRST = &H1000
Private Const LVM_GETITEMSTATE = LVM_FIRST + 44
Private Const LVIS_SELECTED = &H2000
Private Sub Command1_Click()
Dim i As Integer
Dim l As Long
Dim s As String
For i = 0 To ListView1.ListItems.Count - 1
l = SendMessage(ListView1.hwnd, LVM_GETITEMSTATE, i, 0)
If (l And LVIS_SELECTED) > 0 Then
s = s & ListView1.ListItems.Item(i + 1).Text & "选中" & vbCrLf
Else
s = s & ListView1.ListItems.Item(i + 1).Text & "未选中" & vbCrLf
End If
Next i
MsgBox s
End Sub
Private Sub Form_Load()
Dim X As ListItem
Dim i As Integer
ListView1.ColumnHeaders.Add , "A", "AAA"
ListView1.ColumnHeaders.Add , "B", "BBB"
ListView1.ColumnHeaders.Add , "C", "CCC"
For i = 1 To 10
Set X = ListView1.ListItems.Add
X.Text = "L" & i
X.SubItems(1) = "LA" & 10 - i
X.SubItems(2) = "LB" & i
Next i
Dim l As Long
l = SendMessage(ListView1.hwnd, LVM_FIRST + 55, 0, 0)
l = l Or &H75
l = SendMessage(ListView1.hwnd, LVM_FIRST + 54, 0, l)
End Sub
2、每个项目后面都添加一个按钮或者checkbox是不可以的,windows系统层面上没有提供这个功能,并且你加上了也没有相关的API能获得其状态。
3、VC可以,VB做不到,VC的思路是,创建一个对话框资源,然后把自定义的功能加入到对话框里,然后再把打开对话框嵌入到这个窗口里(或者把自定义的功能嵌入到打开对话框里),并且你必须用API方式来启动通用对话框而不是控件(网上有流传API显示打开窗口的方法,不过超级麻烦),这种嵌入对话框的方法在VB里目前还没有看到有效的简单的方法可以实现,但是VC可以
欢迎你加我百度HI或者QQ(在我的百度空间里有)来讨论第三个问题,第三个问题不是完全没有可能,第二个是完全没可能实现的
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 Const LVM_FIRST = &H1000
Private Const LVM_GETITEMSTATE = LVM_FIRST + 44
Private Const LVIS_SELECTED = &H2000
Private Sub Command1_Click()
Dim i As Integer
Dim l As Long
Dim s As String
For i = 0 To ListView1.ListItems.Count - 1
l = SendMessage(ListView1.hwnd, LVM_GETITEMSTATE, i, 0)
If (l And LVIS_SELECTED) > 0 Then
s = s & ListView1.ListItems.Item(i + 1).Text & "选中" & vbCrLf
Else
s = s & ListView1.ListItems.Item(i + 1).Text & "未选中" & vbCrLf
End If
Next i
MsgBox s
End Sub
Private Sub Form_Load()
Dim X As ListItem
Dim i As Integer
ListView1.ColumnHeaders.Add , "A", "AAA"
ListView1.ColumnHeaders.Add , "B", "BBB"
ListView1.ColumnHeaders.Add , "C", "CCC"
For i = 1 To 10
Set X = ListView1.ListItems.Add
X.Text = "L" & i
X.SubItems(1) = "LA" & 10 - i
X.SubItems(2) = "LB" & i
Next i
Dim l As Long
l = SendMessage(ListView1.hwnd, LVM_FIRST + 55, 0, 0)
l = l Or &H75
l = SendMessage(ListView1.hwnd, LVM_FIRST + 54, 0, l)
End Sub
2、每个项目后面都添加一个按钮或者checkbox是不可以的,windows系统层面上没有提供这个功能,并且你加上了也没有相关的API能获得其状态。
3、VC可以,VB做不到,VC的思路是,创建一个对话框资源,然后把自定义的功能加入到对话框里,然后再把打开对话框嵌入到这个窗口里(或者把自定义的功能嵌入到打开对话框里),并且你必须用API方式来启动通用对话框而不是控件(网上有流传API显示打开窗口的方法,不过超级麻烦),这种嵌入对话框的方法在VB里目前还没有看到有效的简单的方法可以实现,但是VC可以
欢迎你加我百度HI或者QQ(在我的百度空间里有)来讨论第三个问题,第三个问题不是完全没有可能,第二个是完全没可能实现的
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询