الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

حصريا : فورم نقطة بيع يصلح لشاشه اللمس

بدأه ammarvb في 8 أغسطس 2014 · 12 رد · 3,074 مشاهدة · في ADO.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

فورم نقطه بيع يصلح لشاشات اللمس يستمد بيانات الاصناف من جدول في الداتا بيس و يتحدث مع تحديث معلومات الجدول .

عند اختيار الماده يتم اضافتها في كرد فيو و اذا اختارينا نفس المادة مره اخرى يقوم بزياده العدد واحد  

برنامج روعه جاهز بين يديكم يرجى التحميل من المرفقات بشرط ان ترد على الموضوع و تدعو لي دعاء صادقا .

image.png

3
#2

الملف

WindowsApplication2.rar

3
#3

جهد ممتاز وتشكر عليه ..وفقك الله .

 

ياليت تشرح طريقة العمل حتى نستفيد جميعا .

#4

هذا الكود مع تعليقات على كل جزء

Imports System.Data.OleDb
Imports System.String
Public Class Form1
    Dim myCatId As Integer ' رقم الصنف
    Dim myCatName As String ' اسم الصنف
    Dim myPos As Integer = 0 ' موقع السجل
    Dim dtList As New DataTable  ' داتا ست لقائمة الشراء
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        ' فتح اتصال وتحميل بيانات الاصناف
        Me.WindowState = FormWindowState.Maximized
        Dim con As New OleDbConnection
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & Application.StartupPath & "\db.mdb'"
        con.Open()
        Dim da As New OleDbDataAdapter("select * from ItemsCat", con)
        Dim ds As New DataSet
        da.Fill(ds, "ItemsCat")
        con.Close()
        ' تحميل بيانات العناصر و انشاء الازرار
        For i = 0 To ds.Tables("ItemsCat").Rows.Count - 1
            Dim btn As Button = New Button()
            btn.Parent = Me
            btn.Name = "btn" & ds.Tables("ItemsCat").Rows(i).Item("CatId")
            btn.Top = 10
            btn.Left = 100 + i * 100
            btn.Height = 50
            btn.Width = 100
            btn.Text = ds.Tables("ItemsCat").Rows(i).Item("CatName")
            ' ربط الازرار بحدث كلك
            AddHandler btn.Click, AddressOf HandleDynamicButtonClick
        Next
        ' انشاء جدول القائمة 
        dtList.Columns.Add("Cat", GetType(String))
        dtList.Columns.Add("Item", GetType(String))
        dtList.Columns.Add("Count", GetType(Integer))
        dtList.Columns.Add("Cost", GetType(Double))
        dtList.Columns.Add("Total", GetType(Double))


        dgvList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells

    End Sub

    Private Sub HandleDynamicButtonClick(ByVal sender As Object, ByVal e As EventArgs)
        ' عند ضغط احد ازرار الاصناف يتم جلب العناصر التابعه للصنف
        ' انشاء زر يكون عباره عن الزر الذي انشء الحدث
        Dim btn As Button = DirectCast(sender, Button)
        ' اسم الزر يكون رقم العنصر و التكست يكون اسم العنصر 
        myCatId = CInt(Microsoft.VisualBasic.Right(btn.Name, Microsoft.VisualBasic.Len(btn.Name) - 3))
        myCatName = btn.Text
        ' الغاء الازرار التابعه للصنف 
        Dim killall As Boolean = True
        While (killall)
            killall = False
            For Each tmp As Control In Me.Controls
                If Microsoft.VisualBasic.Left(tmp.Name, 5) = "Items" Or tmp.Name = "btnNext" Then
                    Me.Controls.Remove(tmp)
                    killall = True
                End If
            Next
        End While


        Dim con As New OleDbConnection
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & Application.StartupPath & "\db.mdb'"
        con.Open()
        Dim da As New OleDbDataAdapter("select * from Items where CatId=" & myCatId, con)
        Dim ds As New DataSet
        da.Fill(ds, "Items")
        con.Close()
        ' انشاء زر التالي اذا كان عدد العناصر اكثر من 25
        If ds.Tables("Items").Rows.Count > 25 Then
            Dim btnNext As Button = New Button()
            btnNext.Parent = Me
            btnNext.Name = "btnNext"
            btnNext.Top = 6 * 70
            btnNext.Left = 100 + 5 * 100
            btnNext.Height = 50
            btnNext.Width = 100
            btnNext.Text = "التالي"
            AddHandler btnNext.Click, AddressOf btnNextClick
        End If
        myPos = 0
        ' انشاء ازرار العناصر و ربطها بحدث كلك
        For i = 1 To 5
            For j = 1 To 5
                If myPos + 1 > ds.Tables("Items").Rows.Count Then myPos = 0 : Exit Sub
                Dim btn2 As Button = New Button()
                btn2.Parent = Me
                btn2.Name = "Items" & ds.Tables("Items").Rows(myPos).Item("ItemId")
                btn2.Top = i * 70
                btn2.Left = 100 + j * 100
                btn2.Height = 50
                btn2.Width = 100
                btn2.Text = ds.Tables("Items").Rows(myPos).Item("ItemName")
                AddHandler btn2.Click, AddressOf HandleChildDynamicButtonClick
                myPos += 1
            Next
        Next
    End Sub
    Private Sub HandleChildDynamicButtonClick(ByVal sender As Object, ByVal e As EventArgs)
        ' يتنفذ هذا الحدث عند النقر على العنصر 
        Dim btn As Button = DirectCast(sender, Button)
        Dim con As New OleDbConnection
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & Application.StartupPath & "\db.mdb'"
        con.Open()
        Dim da As New OleDbDataAdapter("select * from Items where CatId=" & myCatId & " and ItemId=" & Microsoft.VisualBasic.Right(btn.Name, Microsoft.VisualBasic.Len(btn.Name) - 5), con)
        Dim ds As New DataSet
        da.Fill(ds, "Items")
        con.Close()
        Dim newitem As Boolean = True
        ' البحث عن العنصر اذا كان موجود يتم زيادة العدد و السعر اذا لم يكن موجود يتم اضافته
        For i = 0 To dtList.Rows.Count - 1
            If myCatName = dtList.Rows(i).Item("Cat") And btn.Text = dtList.Rows(i).Item("Item") Then
                dtList.Rows(i).Item("Count") = dtList.Rows(i).Item("Count") + 1
                dtList.Rows(i).Item("Total") = dtList.Rows(i).Item("cost") * dtList.Rows(i).Item("Count")
                newitem = False
                Exit For
            End If
        Next
        If newitem = True Then
            dtList.Rows.Add(myCatName, btn.Text, 1, ds.Tables("Items").Rows(0).Item("ItemCost"), ds.Tables("Items").Rows(0).Item("ItemCost"))
        End If
        FillGrid(dgvList, dtList)
    End Sub

    Private Sub btnNextClick(ByVal sender As Object, ByVal e As EventArgs)
        ' يقوم بجلب العناصر الجديده ال 25
        Dim btn As Button = DirectCast(sender, Button)

        Dim killall As Boolean = True
        While (killall)
            killall = False
            For Each tmp As Control In Me.Controls
                If Microsoft.VisualBasic.Left(tmp.Name, 5) = "Items" Then
                    Me.Controls.Remove(tmp)
                    killall = True
                End If
            Next
        End While

        Dim con As New OleDbConnection
        con.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source='" & Application.StartupPath & "\db.mdb'"
        con.Open()
        Dim da As New OleDbDataAdapter("select * from Items where CatId=" & myCatId, con)
        Dim ds As New DataSet
        da.Fill(ds, "Items")
        con.Close()
        For i = 1 To 5
            For j = 1 To 5
                If myPos + 1 > ds.Tables("Items").Rows.Count Then myPos = 0 : Exit Sub
                Dim btn2 As Button = New Button()
                btn2.Parent = Me
                btn2.Name = "Items" & ds.Tables("Items").Rows(myPos).Item("ItemId")
                btn2.Top = i * 70
                btn2.Left = 100 + j * 100
                btn2.Height = 50
                btn2.Width = 100
                btn2.Text = ds.Tables("Items").Rows(myPos).Item("ItemName")
                AddHandler btn2.Click, AddressOf HandleChildDynamicButtonClick
                myPos += 1
            Next
        Next
    End Sub
    Private Sub FillGrid(ByRef myDataGrid As DataGridView, ByVal myTable As DataTable)
        ' ملئ الكرد من جدول 
        myDataGrid.Rows.Clear()
        If myTable.Rows.Count < 1 Then Exit Sub
        Dim i As Integer
        Dim j As Integer
        Dim mystr(0 To myTable.Columns.Count - 1) As String
        For i = 0 To myTable.Rows.Count - 1
            For j = 0 To myTable.Columns.Count - 1
                If IsDBNull(myTable.Rows(i).Item(j)) Then
                    mystr(j) = ""
                Else
                    mystr(j) = myTable.Rows(i).Item(j)
                End If
            Next j
            myDataGrid.Rows.Add(mystr)
        Next
    End Sub
End Class
2
#5

جزاك الله عنا كل خير بصراحة أستفدت بشكل كبير من هذا المثال و قمتُ بتطبيقه في برنامجي و نجح بشكل كامل
و أحتاج لبعض المساعدة في بعض الإضافات لكني أحاول جاهداً بأن أنفذها و إن عجزت سأعود إن شاء الله

أشهد أن لا إله إلا الله وحده لا شريك له

و أشهد أن محمداً صلى الله عليه و

سلم عبده و رسوله

#6

اسعدني انك استفدت من هذا البرنامج و وفقت لكل خير اخوك عمار من العراق 

1
#7

السلام عليكم
لقد حاولت جاهداً أن أعمل على تنفيذ ما أريد من خلال التعلم من المنتدى و لم أفلح
ما أريده هو إدخال ( الكمية ) يدوياً و ليس آلياً في حقل العدد و بالإضافة إلى textboxs أدخل فيه المبلغ فيقوم بـ (( تقسيم 1000 على السعر الإفرادي ضرب القيمة المدخلة في  textboxs و الناتج يدخل في حقل الكمية ))

أي أنه عندما أدخل رقم في textboxs و أضغط على زر الصنف المراد إضافته يقوم بحساب الكمية المقابلة للسعر المدخل و يدخلها في حقل الكمية
أرجو أن يكون سؤالي واضح

أشهد أن لا إله إلا الله وحده لا شريك له

و أشهد أن محمداً صلى الله عليه و

سلم عبده و رسوله

#8

شكرأ كتيراً على الافادة العبقرية دي بارك الله فيك

وهل يوجد مثال مشابه بالسي شارب

تم تعديل هذه المشاركة بواسطة #A-H.c في 28 سبتمبر 2014 في 20:24

#9
#A-H.c كتب:

شكرأ كتيراً على الافادة العبقرية دي بارك الله فيك

وهل يوجد مثال مشابه بالسي شارب

 

يمكنك استخدام هذا الموقع لتحويل الكود من VB.Net الي #C

 

http://www.developerfusion.com/tools/convert/vb-to-csharp/

تم تعديل هذه المشاركة بواسطة محمد فؤاد تركي في 29 سبتمبر 2014 في 05:25

1

certifiedj.jpg

 

 

Image Hosted by ImageShack.us
#10

السلام عليكم 

شكراً على البرنامج والأكواد 

 

بس ياليت توضح هذا الكود تبع ايش بالضبط 

 

dgvList.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells

 

خصوصاً اللي بالأحمر 

 

لأن البرنامج ما رضي يفتح معي 

بس حاولت استفيد من الكود ووقفت عند هالنقطة !!

#11

dgvList

ده الاسم اللي مسميه لل داتا جريد فيو

#12

طيب معليش ترجع ترسل المشروع مره ثانيه ؟

لأنه ما رضي يفتح لي 

#13

ممكن أحد يحفظ المشروع بـframework 4 فأقل !! وييرجع يرسله

لأن الفريم وورك تبع المشروع 4.5 وأنا 4

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…