04-08-17, 05:44 AM
04-08-17, 07:42 PM
شكرا لك كثيرا أخي سعود
04-08-17, 11:21 PM
مارايك بالمثال الأخير
استخدمت الكود لزرع الازرار وانشاء احداثها
كود :
Public Class otherForm
Dim i As Integer = 0
Dim i2 As Integer = 0
Dim str As String = "provider=microsoft.ace.oledb.12.0;data source='" & Application.StartupPath & "\db.accdb'"
Dim buttons As Integer '= Panel1.Controls.Count
Dim rows As New List(Of String)
Dim sts As New List(Of Boolean)
Private Sub otherForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For r = 0 To 400
Dim btn As New Button
btn.Text = "button-" & r
btn.Left = i
btn.Top = i2
If btn.Right >= (Panel2.Width - btn.Width) Then
i = 0
i2 += btn.Height
Panel2.Controls.Add(btn)
Else
Panel2.Controls.Add(btn)
i += btn.Width
End If
AddHandler btn.Click, AddressOf btn_click
Next
buttons = Panel2.Controls.Count
End Sub
Private Function replace(ByVal bc As String) As Boolean
If bc = "Color [YellowGreen]" Then
Return True
Else
Return False
End If
End Function
Private Sub btn_click(sender As Object, e As EventArgs)
' MsgBox(sender.text)
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("update tb set st=@st where korsi=@korsi", con)
cm.Parameters.AddWithValue("@st", Replace(sender.backcolor.ToString))
cm.Parameters.AddWithValue("@korsi", sender.text)
cm.ExecuteNonQuery()
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
End Sub
Private Function setbc(ByVal st As Boolean) As Color
If st = True Then
Return Color.Red
Else
Return Color.YellowGreen
End If
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
rows.Clear()
sts.Clear()
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("select top " & Panel2.Controls.Count & " * from tb", con)
Using dr As OleDb.OleDbDataReader = cm.ExecuteReader
While dr.Read
rows.Add(dr(1))
sts.Add(dr(2))
End While
For i = 0 To Panel2.Controls.Count - 1
Panel2.Controls(i).Text = rows(i)
Panel2.Controls(i).BackColor = setbc(sts(i))
Next
End Using
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
rows.Clear()
sts.Clear()
' buttons += Panel1.Controls.Count
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("select top " & Panel2.Controls.Count & " * from tb where tid not in (select top " & buttons & " tid from tb)", con)
Using dr As OleDb.OleDbDataReader = cm.ExecuteReader
While dr.Read
rows.Add(dr(1))
sts.Add(dr(2))
End While
For i = 0 To Panel2.Controls.Count - 1
Panel2.Controls(i).Text = rows(i)
Panel2.Controls(i).BackColor = setbc(sts(i))
Next
End Using
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
buttons += Panel2.Controls.Count
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
rows.Clear()
sts.Clear()
If buttons <= Panel2.Controls.Count Then Button1.PerformClick() : Exit Sub
buttons -= Panel2.Controls.Count
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("select top " & Panel2.Controls.Count & " * from tb where tid not in (select top " & buttons & " tid from tb)", con)
Using dr As OleDb.OleDbDataReader = cm.ExecuteReader
While dr.Read
rows.Add(dr(1))
sts.Add(dr(2))
End While
For ii = 0 To Panel2.Controls.Count - 1
Panel2.Controls(ii).Text = rows(ii)
Panel2.Controls(ii).BackColor = setbc(sts(ii))
Next
End Using
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
rows.Clear()
sts.Clear()
buttons += Panel2.Controls.Count
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("select top " & Panel2.Controls.Count & " * from tb where tid not in (select top " & (1000 - Panel2.Controls.Count) & " tid from tb)", con)
Using dr As OleDb.OleDbDataReader = cm.ExecuteReader
While dr.Read
rows.Add(dr(1))
sts.Add(dr(2))
End While
For ii = 0 To Panel2.Controls.Count - 1
Panel2.Controls(ii).Text = rows(ii)
Panel2.Controls(ii).BackColor = setbc(sts(ii))
Next
End Using
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
End Sub
End Classالمثال المعدل مرفق
انظر للفورم الاخر وليس الأول
آخر تعديل
كود :
Public Class otherForm
Dim i As Integer = 0
Dim i2 As Integer = 0
Dim str As String = "provider=microsoft.ace.oledb.12.0;data source='" & Application.StartupPath & "\db.accdb'"
Dim buttons As Integer '= Panel1.Controls.Count
Dim rows As New List(Of String)
Dim sts As New List(Of Boolean)
Private Sub otherForm_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For r = 0 To 400
Dim btn As New Button
btn.Text = "button-" & r
btn.Left = i
btn.Top = i2
If btn.Right >= (Panel2.Width - btn.Width) Then
i = 0
i2 += btn.Height
Panel2.Controls.Add(btn)
Else
Panel2.Controls.Add(btn)
i += btn.Width
End If
AddHandler btn.Click, AddressOf btn_click
Next
buttons = Panel2.Controls.Count
End Sub
Private Function replace(ByVal bc As String) As Boolean
If bc = "Color [YellowGreen]" Then
Return True
Else
Return False
End If
End Function
Private Sub btn_click(sender As Object, e As EventArgs)
' MsgBox(sender.text)
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("update tb set st=@st where korsi=@korsi", con)
cm.Parameters.AddWithValue("@st", Replace(sender.backcolor.ToString))
cm.Parameters.AddWithValue("@korsi", sender.text)
cm.ExecuteNonQuery()
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
Me.Refresh()
End Sub
Private Function setbc(ByVal st As Boolean) As Color
If st = True Then
Return Color.Red
Else
Return Color.YellowGreen
End If
End Function
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
rows.Clear()
sts.Clear()
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("select top " & Panel2.Controls.Count & " * from tb", con)
Using dr As OleDb.OleDbDataReader = cm.ExecuteReader
While dr.Read
rows.Add(dr(1))
sts.Add(dr(2))
End While
For i = 0 To Panel2.Controls.Count - 1
Panel2.Controls(i).Text = rows(i)
Panel2.Controls(i).BackColor = setbc(sts(i))
Next
End Using
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
rows.Clear()
sts.Clear()
For r = 0 To Panel2.Controls.Count - 1
Panel2.Controls(r).Text = String.Empty
Next
' buttons += Panel2.Controls.Count
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("select top " & Panel2.Controls.Count & " * from tb where tid not in (select top " & buttons & " tid from tb)", con)
Using dr As OleDb.OleDbDataReader = cm.ExecuteReader
While dr.Read
rows.Add(dr(1))
sts.Add(dr(2))
End While
'For n = 0 To Panel2.Controls.Count - 1
' Panel2.Controls(n).Text = rows(n)
' Panel2.Controls(n).BackColor = setbc(sts(n))
'Next
For n = 0 To rows.Count - 1
Panel2.Controls(n).Text = rows(n)
Panel2.Controls(n).BackColor = setbc(sts(n))
Next
End Using
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
buttons += Panel2.Controls.Count
End Sub
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
rows.Clear()
sts.Clear()
For r = 0 To Panel2.Controls.Count - 1
Panel2.Controls(r).Text = String.Empty
Next
If buttons <= Panel2.Controls.Count Then Button1.PerformClick() : Exit Sub
buttons -= Panel2.Controls.Count
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("select top " & Panel2.Controls.Count & " * from tb where tid not in (select top " & buttons & " tid from tb)", con)
Using dr As OleDb.OleDbDataReader = cm.ExecuteReader
While dr.Read
rows.Add(dr(1))
sts.Add(dr(2))
End While
For ii = 0 To rows.Count - 1
Panel2.Controls(ii).Text = rows(ii)
Panel2.Controls(ii).BackColor = setbc(sts(ii))
Next
End Using
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
End Sub
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
rows.Clear()
sts.Clear()
buttons += Panel2.Controls.Count
Using con As New OleDb.OleDbConnection(str)
If con.State = ConnectionState.Closed Then con.Open()
Using cm As New OleDb.OleDbCommand("select top " & Panel2.Controls.Count & " * from tb where tid not in (select top " & (1000 - Panel2.Controls.Count) & " tid from tb)", con)
Using dr As OleDb.OleDbDataReader = cm.ExecuteReader
While dr.Read
rows.Add(dr(1))
sts.Add(dr(2))
End While
For ii = 0 To Panel2.Controls.Count - 1
Panel2.Controls(ii).Text = rows(ii)
Panel2.Controls(ii).BackColor = setbc(sts(ii))
Next
End Using
End Using
If con.State = ConnectionState.Open Then con.Close()
End Using
End Sub
End Class05-08-17, 05:37 PM
الله يجازيك كل خير على تتبعك لموضوعي أخي سعود
جعله الله في ميزان حسناتك
جعله الله في ميزان حسناتك
07-08-17, 12:09 PM
السلام عليكم و رحمة الله و بركاته
خطر ببالي اجرب الــ PictureBox
المقاعد الاولى محجوزة للاخوة الاعضاء المشاركين بالموضوع
اللي معهم عائلات يروحوا للمقاعد الاخيرة
خطر ببالي اجرب الــ PictureBox
المقاعد الاولى محجوزة للاخوة الاعضاء المشاركين بالموضوع
اللي معهم عائلات يروحوا للمقاعد الاخيرة
07-08-17, 04:17 PM
اخي يتبغي ان يكون البرنامج عملي و ليس ورقة وورد او المفكرة
1-رتب و قسم المجموعة الى صفوف وفي كل صف عدد من المقاعد
2- اجعل عدد الصفوف في (صندوق قائمة ListBox ) و كل عنصر يعرض قائمة تضم عدد المقاعدة
3- اضف عداد و زر حذف او اضافة (يمكنك حذف مقعد تلو الاخر او اضافة عدد للعداد).
1-رتب و قسم المجموعة الى صفوف وفي كل صف عدد من المقاعد
2- اجعل عدد الصفوف في (صندوق قائمة ListBox ) و كل عنصر يعرض قائمة تضم عدد المقاعدة
3- اضف عداد و زر حذف او اضافة (يمكنك حذف مقعد تلو الاخر او اضافة عدد للعداد).
10-08-17, 01:38 AM
شكرا كثيرا أخي ابو ليلى على المثال
شكرا لك أخي alsouf
شكرا لك أخي alsouf
08-05-18, 06:18 PM
ألف عنصر هو لاشئ ، اننا نجري تجارب على قراءة سجلات من قاعدة بيانات فيها 100 ألف سجل ولا مشكلة ويحتاج هذا الى ثوان واجزاء من الثانية
المهم لا تستخدم قاعدة بيانات أكسس ، فهي بطيئة جدا وغير مستقرة .
انا اجربت تجربة بواسطة ListView ولم اجد مشكلة استغرق الامر اجزاء من الثانية
اذا كان الكرسي مثلا غير مشغول تستخدم ايقونة ملونة واذا كان مشغول تسخدم ايقونة سوداء او مختلفة
ولاحظ ايضا ان الاداة ستعفيك من عملية البحث اذا اردت كرسي رقمه في الـ 700 انقر على زر الرقم 7 وسوف تنتقل الى هناك مباشرة .
بالنسبة الى كيف تستخدم الايقونة المناسبة انظر للمثال التالي
طبعا انت سوف تقراء من قاعدة البيانات اذا كانت قيمة الحجز تساوي True سوف تستخدم الايقونة الحمراء او السوداء او التي تشير الى ان الكرسي محجوز
والعكس صحيح طبعا .
وايضا كل ايقونة تحمل رقم الكرسي
ايضا بامكانك استخدام اداتين عند حجز كرسي ينتقل الى الجهة الاخرى بنفس رقمه وتسجيله كمحجوز بقاعدة البيانات
ايضا يمكنك التحكم بحجم الخط كذلك
وحسب ما قراءت من تعليقاتك لا تستخدم Loop في كل مرة تحجز فيها كرسي فقط احجزه بقاعدة البيانات وغير ايقونته هنا فقط
هذه هي الطريقة الصحيحة
المهم لا تستخدم قاعدة بيانات أكسس ، فهي بطيئة جدا وغير مستقرة .
انا اجربت تجربة بواسطة ListView ولم اجد مشكلة استغرق الامر اجزاء من الثانية
اذا كان الكرسي مثلا غير مشغول تستخدم ايقونة ملونة واذا كان مشغول تسخدم ايقونة سوداء او مختلفة
ولاحظ ايضا ان الاداة ستعفيك من عملية البحث اذا اردت كرسي رقمه في الـ 700 انقر على زر الرقم 7 وسوف تنتقل الى هناك مباشرة .
بالنسبة الى كيف تستخدم الايقونة المناسبة انظر للمثال التالي
PHP كود :
For Int As Integer = 1 To 1000
If Int = 5 Or Int = 6 Or Int = 8 Then
ListView1.Items.Add(Int.ToString, 1)
Else
ListView1.Items.Add(Int.ToString, 0)
End If
طبعا انت سوف تقراء من قاعدة البيانات اذا كانت قيمة الحجز تساوي True سوف تستخدم الايقونة الحمراء او السوداء او التي تشير الى ان الكرسي محجوز
والعكس صحيح طبعا .
وايضا كل ايقونة تحمل رقم الكرسي
ايضا بامكانك استخدام اداتين عند حجز كرسي ينتقل الى الجهة الاخرى بنفس رقمه وتسجيله كمحجوز بقاعدة البيانات
ايضا يمكنك التحكم بحجم الخط كذلك
وحسب ما قراءت من تعليقاتك لا تستخدم Loop في كل مرة تحجز فيها كرسي فقط احجزه بقاعدة البيانات وغير ايقونته هنا فقط
هذه هي الطريقة الصحيحة
08-05-18, 08:43 PM
(08-05-18, 06:18 PM)viv كتب : [ -> ]ألف عنصر هو لاشئ ، اننا نجري تجارب على قراءة سجلات من قاعدة بيانات فيها 100 ألف سجل ولا مشكلة ويحتاج هذا الى ثوان واجزاء من الثانية
المهم لا تستخدم قاعدة بيانات أكسس ، فهي بطيئة جدا وغير مستقرة .
انا اجربت تجربة بواسطة ListView ولم اجد مشكلة استغرق الامر اجزاء من الثانية
![]()
اذا كان الكرسي مثلا غير مشغول تستخدم ايقونة ملونة واذا كان مشغول تسخدم ايقونة سوداء او مختلفة
![]()
ولاحظ ايضا ان الاداة ستعفيك من عملية البحث اذا اردت كرسي رقمه في الـ 700 انقر على زر الرقم 7 وسوف تنتقل الى هناك مباشرة .
بالنسبة الى كيف تستخدم الايقونة المناسبة انظر للمثال التالي
PHP كود :
For Int As Integer = 1 To 1000
If Int = 5 Or Int = 6 Or Int = 8 Then
ListView1.Items.Add(Int.ToString, 1)
Else
ListView1.Items.Add(Int.ToString, 0)
End If
طبعا انت سوف تقراء من قاعدة البيانات اذا كانت قيمة الحجز تساوي True سوف تستخدم الايقونة الحمراء او السوداء او التي تشير الى ان الكرسي محجوز
والعكس صحيح طبعا .
وايضا كل ايقونة تحمل رقم الكرسي
ايضا بامكانك استخدام اداتين عند حجز كرسي ينتقل الى الجهة الاخرى بنفس رقمه وتسجيله كمحجوز بقاعدة البيانات
![]()
ايضا يمكنك التحكم بحجم الخط كذلك
![]()
وحسب ما قراءت من تعليقاتك لا تستخدم Loop في كل مرة تحجز فيها كرسي فقط احجزه بقاعدة البيانات وغير ايقونته هنا فقط
هذه هي الطريقة الصحيحة
السّلام عليكم و رحمة الله و بركاته
أخي الكريم .. لو كان بإمكانك وضع مثال صغير سيكون رائع جدا ما تكرمت بشرحه
تحياتي
08-05-18, 09:15 PM
حسنا يا اخي عبدالعزيز سوف ارفق لكم مثال يوضح الفكرة
مع ان الفيجوال ستوديو به مشاكل عندي ولكن ساتكفل بالامر
مع ان الفيجوال ستوديو به مشاكل عندي ولكن ساتكفل بالامر