再问!关于listview图标排列问题!
上一个问题 “ 怎样用listview实现图标位置的保存和载入? ”问题已经解决并结帖。
完成后的程序如下:
-----------------------------------
Private Sub Command1_Click() '按学号顺序排列
Dim num As Long
Dim i As Long
Dim str
Dim itmx
Adodc1.RecordSource = "select * from 学生 order by 学号"
Adodc1.Refresh
num = Adodc1.Recordset.RecordCount
ListView1.ListItems.Clear
ListView1.ColumnHeaders.Clear
str = ListView1.ColumnHeaders.Add(1, , "姓名", 2000)
str = ListView1.ColumnHeaders.Add(2, , "学号", 2000)
str = ListView1.ColumnHeaders.Add(3, , "Sex", 500)
str = ListView1.ColumnHeaders.Add(4, , "Phone", 1400)
For i = 1 To num
Set itmx = ListView1.ListItems.Add
itmx.Text = Adodc1.Recordset.Fields(2)
itmx.SubItems(1) = Adodc1.Recordset.Fields(1)
itmx.SubItems(2) = Adodc1.Recordset.Fields(3)
itmx.SubItems(3) = Adodc1.Recordset.Fields(8)
itmx.Icon = 1
Adodc1.Recordset.MoveNext
Next i
End Sub
Private Sub Command2_Click() '从数据库中加载
Dim num As Long
Dim i As Long
Dim str
Dim itmx
Adodc1.RecordSource = "select * from 学生 order by 学号"
Adodc1.Refresh
num = Adodc1.Recordset.RecordCount
ListView1.ListItems.Clear
ListView1.ColumnHeaders.Clear
str = ListView1.ColumnHeaders.Add(1, , "姓名", 2000)
str = ListView1.ColumnHeaders.Add(2, , "学号", 2000)
str = ListView1.ColumnHeaders.Add(3, , "Sex", 500)
str = ListView1.ColumnHeaders.Add(4, , "Phone", 1400)
For i = 1 To num
Set itmx = ListView1.ListItems.Add
itmx.Text = Adodc1.Recordset.Fields(2)
itmx.SubItems(1) = Adodc1.Recordset.Fields(1)
itmx.SubItems(2) = Adodc1.Recordset.Fields(3)
itmx.SubItems(3) = Adodc1.Recordset.Fields(8)
itmx.Icon = 1
itmx.Left = Adodc1.Recordset.Fields(15)
itmx.Top = Adodc1.Recordset.Fields(16)
Adodc1.Recordset.MoveNext
Next i
End Sub
Private Sub Command3_Click() '保存到数据库
Dim i As Long
Dim lc As Long
Dim cnn1 As New ADODB.Connection
Dim rs As New ADODB.Recordset
Dim strSQL As String
cnn1.Open SN
lc = ListView1.ListItems.Count
For i = 1 To lc
strSQL = "update 学生 set 座位X='" & ListView1.ListItems(i).Left & "'," _
& "座位Y='" & ListView1.ListItems(i).Top & "'" _
& "where 学号='" & ListView1.ListItems(i).SubItems(1) & "'"
cnn1.Execute (strSQL)
Next i
cnn1.Close
Set cnn1 = Nothing
Set rs = Nothing
MsgBox "ok!"
End Sub
Private Sub Form_Load()
Adodc1.ConnectionString = SN
Me.WindowState = vbMaximized
End Sub
Private Sub Form_Resize()
If Me.Height - 1500 > 0 Then
ListView1.Height = Me.Height - 1000
End If
End Sub
---------------------------------------------------
现在又有新问题了:
1、象桌面图标那样“对齐图标”的功能如何实现?
2、象桌面图标那样按类型、按名称、等不同的条件排列图标如何实现?
(反映在我的程序中就是按高矮、按学生成绩排座位)
3、每行显示图标个数可按参数设置?如果显示不下出现横向滚动条?
有代码更好,没有代码有思路也行。集思广益,谢谢。