در گام بعدی امکانات انتخاب فیلدها از بین فیلدهای data source و ترتیب ستون بندی (نه ترتیب سورت!) رو اضافه میکنیم:
Private Sub BTN_None_Click()
Me.LB_SelectedFields.RowSource = ""
End Sub
Private Sub BTN_All_Click()
Me.LB_SelectedFields.RowSource = ""
Dim index As Integer
index = Me.LB_Sources.ListIndex
Dim i As Integer
Dim FieldsCount As Integer
With DataSources.Item(index + 1).Fields
FieldsCount = .count
For i = 1 To FieldsCount
If Not (.Item(i).FieldType Like "*Binary*" Or .Item(i).FieldType = "Attachment") Then
Me.LB_SelectedFields.AddItem .Item(i).FieldName
End If
Next
End With
End Sub
Private Sub BTN_Add_Click()
Dim SelectedField As String
Dim FieldType As String
Dim i As Integer
With Me.LB_Fields
If .ListIndex < 0 Then
.Value = .ItemData(0)
End If
SelectedField = .Value
FieldType = .Column(1)
If (FieldType Like "*Binary*" Or FieldType = "Attachment") Then
MsgBox "Attachment and Binary fields not allowed!", vbExclamation, "Invalid field type"
Exit Sub
End If
For i = 0 To .ListCount - 1
If Me.LB_SelectedFields.ItemData(i) = SelectedField Then Exit Sub
Next
Me.LB_SelectedFields.AddItem SelectedField
Me.LB_SelectedFields.Value = SelectedField
If .ListIndex < .ListCount - 1 Then
.Value = .ItemData(.ListIndex + 1)
End If
End With
End Sub
Private Sub BTN_Remove_Click()
Dim index As Integer
With Me.LB_SelectedFields
If .ListIndex < 0 Then
.Value = .ItemData(0)
End If
index = .ListIndex
.RemoveItem (index)
If index > .ListCount - 1 Then
index = .ListCount - 1
End If
.Value = .ItemData(index)
End With
End Sub
Private Sub BTN_Up_Click()
Dim index As Integer
With Me.LB_SelectedFields
index = .ListIndex
If index <= 0 Or .ListCount = 1 Then Exit Sub
Dim vlu As String
vlu = .Value
.RemoveItem (index)
.AddItem vlu, index - 1
.Value = vlu
End With
End Sub
Private Sub BTN_Down_Click()
Dim index As Integer
With Me.LB_SelectedFields
index = .ListIndex
If index = .ListCount - 1 Then Exit Sub
Dim vlu As String
vlu = .Value
.RemoveItem (index)
.AddItem vlu, index + 1
.Value = vlu
End With
End Sub
Screenshot 2024-01-06 194951.jpg