تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
طلب مساعدة فيما يخص tabcontrol
#6
أخي نوري هذا كود ملف FACTVENTE


واعتذر لانه لا يمكنني رفع ملف المشروع

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

يمكنك الآن حذف صفحات التاب الموجودة مع شرط الابقاء على الأولى

كود :
Public Class FACTVENTE


   Private Sub FACTVENTE_Load(sender As Object, e As EventArgs) Handles MyBase.Load

       '// fillDGV(DataGridView1, "select * from PRODUITS order by CODEPRODUIT")
       '  TEXTVENTECODE.Text = CODE_GEN("FACTVENTE", "VENTECODE") + 1
       TEXTTOTALVENTE.Text = "0.00"

   End Sub

   Sub retour_FACTVENTE(ByVal CODE_)
       DataGridView2.Rows.Clear()
       Dim DT As New DataTable
       Dim da As New SqlClient.SqlDataAdapter("SELECT * FROM FACTVENTE where VENTECODE = " & CODE_ & "", sqlConn)
       da.Fill(DT)
       'If DT.Rows.Count = 0 Then
       '    MessageBox.Show("الرجاء التأكد من رقم الفاتورة", "رسالة تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error)
       'Else
       Dim dr = DT.Rows(0)
       TEXTVENTECODE.Text = dr!VENTECODE
       TEXTVENTETYPE.Text = dr!VENTETYPE
       TEXTNOMCLIENT.Text = dr!NOMCLIENT
       VENTEDATE.Value = dr!VENTEDATE
       TEXTTOTALVENTE.Text = dr!TOTALVENTE

       Dim DS As New DataSet
       da = New SqlClient.SqlDataAdapter("SELECT * FROM DETFACTVENTE where FACTVENTECODE = " & CODE_ & "", sqlConn)
       DS = New DataSet
       da.Fill(DS)
       DT = DS.Tables(0)
       For I = 0 To DT.Rows.Count - 1
           DataGridView2.Rows.Add()
           DataGridView2.Rows(I).Cells(0).Value = DT.Rows(I).Item("CODEPRODUIT")
           DataGridView2.Rows(I).Cells(1).Value = DT.Rows(I).Item("NOMPRODUIT")
           DataGridView2.Rows(I).Cells(3).Value = DT.Rows(I).Item("PRIXACHATPRODUIT")
           DataGridView2.Rows(I).Cells(4).Value = DT.Rows(I).Item("PRIXVENTEPRODUIT")
           DataGridView2.Rows(I).Cells(5).Value = DT.Rows(I).Item("TOTALE")
           DataGridView2.Rows(I).Cells(6).Value = DT.Rows(I).Item("QTTVENDUE")
           Dim DT1 As New DataTable
           Dim DA1 As New SqlClient.SqlDataAdapter("SELECT * FROM PRODUITS WHERE NOMPRODUIT LIKE N'" & DataGridView2.Rows(I).Cells(1).Value & "'", sqlConn)
           DA1.Fill(DT1)
           Dim BAR As Integer
           BAR = DataGridView2.Rows.Count - 1
           DataGridView2(2, BAR).Value = DT1.Rows(0).Item("QTTPRODUIT")

       Next
   End Sub

   Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
       If DataGridView1(0, DataGridView1.CurrentRow.Index).Selected = True Then
           'For I = 0 To SALEPIL.DataGridView2.Rows.Count - 1
           textBcode.Text = DataGridView2.CurrentRow.Cells(1).Value
           textBcode_Leave(sender, e)


       End If
   End Sub

   Private Sub textBcode_TextChanged(sender As Object, e As EventArgs) Handles textBcode.TextChanged

   End Sub


   Sub calc()

       Dim SelecedGridView As DataGridView

       For Each ctrl As Control In TabControl1.SelectedTab.Controls
           Dim dgv As DataGridView = TryCast(ctrl, DataGridView)
           If dgv IsNot Nothing Then
               SelecedGridView = dgv
               Exit For
           End If
       Next


       ' الان للتعامل مع الداتا جريد المحددة استخدم المتغير SelecedGridView
       '
       '
       For i As Integer = 0 To SelecedGridView.Rows.Count - 1
           SelecedGridView.Rows(i).Cells(5).Value = Val(SelecedGridView.Rows(i).Cells(4).Value) * Val(SelecedGridView.Rows(i).Cells(6).Value)
           'SelecedGridView.Rows(i).Cells(7).Value = Val(SelecedGridView.Rows(i).Cells(2).Value) - Val(SelecedGridView.Rows(i).Cells(6).Value)
       Next
       Dim tot As Double
       For i = 0 To SelecedGridView.Rows.Count - 1
           tot = Val(tot) + Val(SelecedGridView.Rows(i).Cells(5).Value)
           'disc = Val(disc) + Val(DataGridView1.Rows(i).Cells(5).Value)
           'qttin = Val(qttin) + Val(DataGridView1.Rows(i).Cells(4).Value)
           'numeroitem = DataGridView1.Rows.Count
       Next
       TEXTTOTALVENTE.Text = Val(tot)
       'textsale_ITEM_COUNT.Text = numeroitem
       'TOTALQTT.Text = qttin

       'fauxsaletotale.Text = Val(saleTOTAL.Text)
       'Dim r As Decimal
       'r = Convert.ToDecimal(fauxsaletotale.Text)

   End Sub
   Private Sub textBcode_Leave(sender As Object, e As EventArgs) Handles textBcode.Leave

       Dim SelecedGridView As DataGridView

       For Each ctrl As Control In TabControl1.SelectedTab.Controls
           Dim dgv As DataGridView = TryCast(ctrl, DataGridView)
           If dgv IsNot Nothing Then
               SelecedGridView = dgv
               Exit For
           End If
       Next


       ' الان للتعامل مع الداتا جريد المحددة استخدم المتغير SelecedGridView
       '
       '

       'For M As Integer = 0 To DataGridView2.Rows.Count - 1
       '    DataGridView2.Rows(M).Cells(5).Value = Date.Now
       'Next
       'For g As Integer = 0 To DataGridView1.Rows.Count - 1
       '    'Dim textdate1 As Date = DataGridView1.Rows(g).Cells(8).Value
       '    Dim textdate2 As Date = DataGridView1.Rows(g).Cells(10).Value
       '    Dim result As TimeSpan = textdate1 - textdate2
       '    Label12.Text = CInt(result.Days)
       '    DataGridView1.Rows(g).Cells(10).Value = Label12.Text
       'Next

       If textBcode.Text <> Nothing Then
           Dim DT As New DataTable
           Dim DA As New SqlClient.SqlDataAdapter("SELECT * FROM PRODUITS WHERE NOMPRODUIT LIKE N'" & textBcode.Text & "'", sqlConn)
           DA.Fill(DT)
           If DT.Rows.Count > 0 Then
               '______________________التحقق من كود الصنف
               For I = 0 To SelecedGridView.Rows.Count - 1
                   If SelecedGridView.Rows(I).Cells(0).Value = DT.Rows(0).Item("CODEPRODUIT") Then
                       SelecedGridView.Rows(I).Cells(6).Value = SelecedGridView.Rows(I).Cells(6).Value + 1
                       calc()
                       textBcode.Clear()
                       Exit Sub
                   End If
               Next
               '______________________إضافة سجل للداتا قريد
               Dim BAR As Integer
               SelecedGridView.Rows.Add()
               BAR = SelecedGridView.Rows.Count - 1
               SelecedGridView(0, BAR).Value = DT.Rows(0).Item("CODEPRODUIT")
               SelecedGridView(1, BAR).Value = DT.Rows(0).Item("NOMPRODUIT")
               SelecedGridView(2, BAR).Value = DT.Rows(0).Item("QTTPRODUIT")
               SelecedGridView(3, BAR).Value = DT.Rows(0).Item("PRIXACHATPRODUIT")
               SelecedGridView(4, BAR).Value = DT.Rows(0).Item("PRIXVENTEPRODUIT")
               'SelecedGridView(7, BAR).Value = DT.Rows(0).Item("QTTPRODUIT")
               'SelecedGridView(5, BAR).Value = DT.Rows(0).Item("TOTALE")
               'SelecedGridView(7, BAR).Value = DT.Rows(0).Item("ITEM_TAKLOFA")
               SelecedGridView(6, BAR).Value = 1
               SelecedGridView(6, BAR).Selected = True


               calc()

           Else
               'FRM_ITEMS.Show()
               'Clipboard.SetText(textBcode.Text.Trim())
               'FRM_ITEMS.textBarecode.Paste()
               Console.Beep()
           End If
       End If
       textBcode.Clear()
       textBcode.Focus()
       calc()
       'If DataGridView1.Rows.Count > 0 Then
       '    GroupBox17.Visible = False
       'Else
       '    GroupBox17.Visible = True
       'End If

   End Sub

   Private Sub textBcode_KeyDown(sender As Object, e As KeyEventArgs) Handles textBcode.KeyDown
       If e.KeyCode = Keys.Enter Then
           textBcode_Leave(sender, e)
       End If
   End Sub

   Private Sub btnsave_Click(sender As Object, e As EventArgs) Handles btnsave.Click

       Dim SelecedGridView As DataGridView

       For Each ctrl As Control In TabControl1.SelectedTab.Controls
           Dim dgv As DataGridView = TryCast(ctrl, DataGridView)
           If dgv IsNot Nothing Then
               SelecedGridView = dgv
               Exit For
           End If
       Next


       ' الان للتعامل مع الداتا جريد المحددة استخدم المتغير SelecedGridView
       '
       '

       If SelecedGridView.Rows.Count = 0 Then
           MessageBox.Show("لا توجد اصناف لحفظها", "رسالة تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error)
           Exit Sub
       End If
       For I As Integer = 0 To SelecedGridView.Rows.Count - 1
           If SelecedGridView.Rows(I).Cells(6).Value = 0 Then
               MessageBox.Show("الرجاء التحقق من الكمية", "رسالة تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Error)
           End If
       Next
       Dim dt As New DataTable
       Dim da As New SqlClient.SqlDataAdapter("select * from FACTVENTE where VENTECODE = " & TEXTVENTECODE.Text & "", sqlConn)
       da.Fill(dt)
       'If dt.Rows.Count > 0 Then
       '    TEXTVENTECODE.Text = CODE_GEN("SALEPIL", "SALE_CODE") + 1
       'Else
       Dim DR = dt.NewRow
       DR!VENTECODE = TEXTVENTECODE.Text
       DR!VENTETYPE = TEXTVENTETYPE.Text
       DR!NOMCLIENT = TEXTNOMCLIENT.Text
       DR!VENTEDATE = VENTEDATE.Value
       DR!TOTALVENTE = TEXTTOTALVENTE.Text
       'DR!SALE_ITEM_COUNT = textsale_ITEM_COUNT.Text
       '    DR!SALE_TOTAL_ARABIC = TOTALARABIC.Text
       '    DR!SALE_TOTAL_QTT = TOTALQTT.Text
       '    DR!SALE_USER = TOOLUSER.Text
       '    DR!CUST_FAREK = Val(TextBox5.Text)
       '    DR!SALE_STATE = True

       dt.Rows.Add(DR)
       Dim save As New SqlClient.SqlCommandBuilder(da)
       da.Update(dt)
       'End If
       da = New SqlClient.SqlDataAdapter("select * from DETFACTVENTE", sqlConn)
       da.Fill(dt)
       For I As Integer = 0 To SelecedGridView.Rows.Count - 1
           Dim DR1 = dt.NewRow
           DR1!FACTVENTECODE = TEXTVENTECODE.Text
           DR1!VENTEDATE = VENTEDATE.Value
           DR1!CODEPRODUIT = SelecedGridView.Rows(I).Cells(0).Value
           DR1!NOMPRODUIT = SelecedGridView.Rows(I).Cells(1).Value
           'DR1!ITEM_UNITE = SelecedGridView.Rows(I).Cells(2).Value
           DR1!QTTVENDUE = Val(SelecedGridView.Rows(I).Cells(6).Value)
           DR1!PRIXVENTEPRODUIT = Val(SelecedGridView.Rows(I).Cells(4).Value)
           DR1!PRIXACHATPRODUIT = Val(SelecedGridView.Rows(I).Cells(3).Value)
           DR1!TOTALE = Val(SelecedGridView.Rows(I).Cells(5).Value)
           DR1!QTTPRODUITINITIAL = Val(SelecedGridView.Rows(I).Cells(7).Value)
           'DR1!SALE_ITEM_COUNT = textsale_ITEM_COUNT.Text
           'DR1!SALE_USER = TOOLUSER.Text
           DR1!QTTPRODUIT = SelecedGridView.Rows(I).Cells(2).Value
           'DR1!ITEM_BARE = SelecedGridView.Rows(I).Cells(8).Value
           'DR1!ITEM_TAKLOFA = SelecedGridView.Rows(I).Cells(9).Value
           'DR1!ITEM_PLACE = SelecedGridView.Rows(I).Cells(5).Value
           'DR1!SALE_DET_STATUS = True
           dt.Rows.Add(DR1)
           Dim cmd As New SqlClient.SqlCommandBuilder(da)
           da.Update(dt)
       Next





       '__________________________________طرح الكمية
       For M As Integer = 0 To SelecedGridView.Rows.Count - 1
           Dim newqtt As Integer
           newqtt = Val(SelecedGridView.Rows(M).Cells(2).Value) - Val(SelecedGridView.Rows(M).Cells(6).Value)
           Dim cmd1 As New SqlClient.SqlCommand
           cmd1.Connection = sqlConn
           cmd1.CommandText = " UPDATE PRODUITS SET QTTPRODUIT = " & newqtt & " where NOMPRODUIT = N'" & SelecedGridView.Rows(M).Cells(1).Value & " '"
           cmd1.ExecuteNonQuery()
       Next
       'b_Click(sender, e)
       MessageBox.Show("تم حفظ الفاتورة بنجاح", "رسالة تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Information)

       'End If

       'SelecedGridView.Rows.Clear()



   End Sub

   Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
       ''Dim r As Decimal
       ''r = Convert.ToDecimal(TEXTTOTALVENTE.Text)
       'TEXTTOTALVENTE.Text = Format(TEXTTOTALVENTE, "currency")
   End Sub

   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
       RETOURFACTVENTE.Show()

   End Sub

   Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click

       ''''
       ''''كود اضافة تاب جديد واضافة داتاجريدفيو له
       ''''

       'References to source and target grid.
       Dim sourceGrid As DataGridView = Me.DataGridView2

       'بناء datagridview جديدة في كل مرة
       Dim NewGrid As DataGridView = New DataGridView

       ' يمكنك التحكم في خصائص الجريد الجديدة مثل الخط واللون وشكل وارتفاع الاعمدة وغيرها
       ' NewGrid.AllowUserToAddRows = False

       'Clear target columns and then clone all source columns.
       NewGrid.Columns.Clear()

       For Each column As DataGridViewColumn In sourceGrid.Columns
           NewGrid.Columns.Add(CType(column.Clone(), DataGridViewColumn))
       Next

       ' بناء صفحة تاب جديدة
       Dim newTabPage As TabPage = New TabPage
       newTabPage.Name = TabControl1.TabCount + 1
       newTabPage.Text = "فاتورة " & TabControl1.TabCount + 1
       newTabPage.Controls.Add(NewGrid)
       NewGrid.Dock = DockStyle.Fill
       Me.TabControl1.TabPages.Add(newTabPage)
       TabControl1.SelectTab(newTabPage)
   End Sub

End Class

الرد }}}


الردود في هذا الموضوع
RE: طلب مساعدة فيما يخص tabcontrol - بواسطة محمد كريّم - 08-11-19, 05:30 AM


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم