كود :
Imports System.Data.OleDb
Public Class Form1
Dim con As New OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=|DataDirectory|\DB_FLP.mdb;Jet OLEDB:Database Password=")
Dim dp As New OleDbDataAdapter("Select * From Tbl order by Nam", con)
Dim ds As New DataSet
Dim dt As DataTable
Dim num2 As Integer ' عدد السجلات ضمن الجدول
Dim i As Integer = 0 ' مكان المؤشر الحالي في الجدول
Dim R1 As Integer = 20 ' معدل التغير -- وهو ثابت تحدده من بداية عمل البرنامج أو من الكود
Dim j As Integer = R1 ' المدى : مدى حركة المؤشر ضمن الحلقة
Dim str1 As String = "" ' شغلة للتبسيط
Dim FirstChar As String = " " ' أول حرف من الشغلة الحالية
Dim Fi1 As String = " " ' أول حرف من شغلة منتهية
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Button2.Text = "التالي"
Button2.Enabled = False
Button3.Text = "السابق"
Button3.Enabled = False
End Sub
Private Sub FlowLayoutPanel1_Scroll(sender As Object, e As ScrollEventArgs) Handles FlowLayoutPanel1.Scroll
' Button2_Click(Nothing, Nothing)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
dp.Fill(ds)
dt = ds.Tables.Item(0)
num2 = (dt.Rows.Count - 1)
Me.FlowLayoutPanel1.Controls.Clear()
Do While (i <= num2)
TA_FillData()
i += 1
If i = j Then Exit Do
Loop
Button2.Enabled = True
Button1.Enabled = False
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
j = j - R1 : If j < 0 Then j = R1
i = i - 2 * R1 : If i < 0 Then i = 0
If i = 0 Then Button3.Enabled = False
If j < num2 Then Button2.Enabled = True
Try
Me.FlowLayoutPanel1.Controls.Clear()
Do While (i <= num2)
TA_FillData()
i += 1
If i = j Then Exit Do
Loop
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
j = j + R1
Try
Me.FlowLayoutPanel1.Controls.Clear()
Do While (i <= num2)
TA_FillData()
i += 1
If i = j Then Exit Do
Loop
Catch ex As Exception
MsgBox(ex.Message)
Exit Sub
End Try
If i = num2 + 1 Then Button2.Enabled = False
If i > 0 Then Button3.Enabled = True
End Sub
Sub TA_FillData()
str1 = dt.Rows.Item(i).Item("nam").ToString
FirstChar = Mid(str1, 1, 1)
FirstChar = UCase(FirstChar.Replace("إ", "أ").Replace("آ", "أ"))
If (i = 0) Or (FirstChar <> Fi1) Then
Dim uc1 As New UserControl1
uc1.Label1.Text = FirstChar
If (Asc(FirstChar) >= 65 And Asc(FirstChar) <= 90) Or (Asc(FirstChar) >= 97 And Asc(FirstChar) <= 122) Then
uc1.Label1.Left = uc1.Left + 10
Else
uc1.Label1.Left = uc1.Width - uc1.Label1.Width - 10
End If
Me.FlowLayoutPanel1.Controls.Add(uc1)
uc1.Label1.Font = New Font(uc1.Label1.Font.Name, uc1.Label1.Font.Size - 2, FontStyle.Bold)
uc1.Label1.ForeColor = Color.WhiteSmoke
uc1.BackColor = Color.LightGray
uc1.Height = uc1.Height * 2 / 3
uc1.Label1.Top = (uc1.Height - uc1.Label1.Height) / 2
Fi1 = FirstChar
End If
Dim uc As New UserControl1
uc.Label1.Text = dt.Rows.Item(i).Item("nam").ToString
If (Asc(FirstChar) >= 65 And Asc(FirstChar) <= 90) Or (Asc(FirstChar) >= 97 And Asc(FirstChar) <= 122) Then
uc.Label1.Left = uc.Left + 20
Else
uc.Label1.Left = uc.Width - uc.Label1.Width - 20
End If
Me.FlowLayoutPanel1.Controls.Add(uc)
End Sub
Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
Me.Text = Asc(TextBox1.Text)
End Sub
End Class
وفي المرفقات المثال بعد التعديل