منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
مساعدة في كود برمجي - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : مساعدة في كود برمجي (/showthread.php?tid=46153)

الصفحات: 1 2


مساعدة في كود برمجي - maherhaddaf - 31-05-23

عندي على الفورم عده ادوات من نوع CheckBox 
واريد عندالضغط على اي اداة من هذه الادوات ان يكتب اسم الاداة واسماء جميع الادوات CheckBox التي تم التعليم عليها 
ليكون التكست بوكس يحتوي اسماء جميع الادوات التي تم وضع علامة الصح عليها فقط  
هل يمكن ذلك  
شاكرا لكم تفاعلكم


RE: مساعدة في كود برمجي - asmarsou - 31-05-23

يمكن ذلك بعدة طرق و ابسطها باضافة مؤقت(تايمر) بحيث يكون مفعل و ضع فيه الكود التالي كمثال

PHP كود :
Private Sub Timer1_Tick(sender As ObjectAs EventArgsHandles Timer1.Tick
        TextBox1
.Text = (String.Join(", ",
 
                          From cb In Controls.OfType(Of CheckBox)()
 
                          Where cb.Checked
                           Select cb
.Text))
 
   End Sub 



RE: مساعدة في كود برمجي - fouadhdfouad - 31-05-23

Imports System
Imports System.Collections.Generic
Imports System.Windows.Forms

Public Class Form1
Private checkboxes As List(Of CheckBox)

Public Sub New()
InitializeComponent()
checkboxes = New List(Of CheckBox)() From {CheckBox1, CheckBox2, CheckBox3, CheckBox4}
End Sub

Private Sub CheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged
TextBox1.Clear()
Dim selectedCheckboxes As List(Of String) = GetSelectedCheckboxes()
For Each checkboxName As String In selectedCheckboxes
TextBox1.AppendText(checkboxName & Environment.NewLine)
Next
End Sub

Private Function GetSelectedCheckboxes() As List(Of String)
Dim selectedCheckboxes As New List(Of String)()
For Each checkbox As CheckBox In checkboxes
If checkbox.Checked Then
selectedCheckboxes.Add(checkbox.Text)
End If
Next
Return selectedCheckboxes
End Function
End Class

كود :
Imports System
Imports System.Collections.Generic
Imports System.Windows.Forms

Public Class Form1
   Private checkboxes As List(Of CheckBox)

   Public Sub New()
       InitializeComponent()
       checkboxes = New List(Of CheckBox)() From {CheckBox1, CheckBox2, CheckBox3, CheckBox4}
   End Sub

   Private Sub CheckBox_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged, CheckBox4.CheckedChanged
       TextBox1.Clear()
       Dim selectedCheckboxes As List(Of String) = GetSelectedCheckboxes()
       For Each checkboxName As String In selectedCheckboxes
           TextBox1.AppendText(checkboxName & Environment.NewLine)
       Next
   End Sub

   Private Function GetSelectedCheckboxes() As List(Of String)
       Dim selectedCheckboxes As New List(Of String)()
       For Each checkbox As CheckBox In checkboxes
           If checkbox.Checked Then
               selectedCheckboxes.Add(checkbox.Text)
           End If
       Next
       Return selectedCheckboxes
   End Function
End Class



RE: مساعدة في كود برمجي - سعود - 01-06-23

مشاركة لكم احببت وضع المثال البسيط

عدل الحدث (heckBox1_CheckedChanged) الى :
PHP كود :
Private Sub CheckBox1_CheckedChanged(sender As ObjectAs EventArgsHandles CheckBox6.CheckedChangedCheckBox5.CheckedChangedCheckBox4.CheckedChangedCheckBox3.CheckedChangedCheckBox2.CheckedChangedCheckBox1.CheckedChanged
        Dim c 
As CheckBox DirectCast(senderCheckBox)
 
       If (c.Checked True And txtchecked.Text.Contains(c.Text) = FalseThen
            txtchecked
.AppendText(c.Text " ")
 
       Else
            txtchecked
.Text txtchecked.Text.Replace((" " c.Text), "")
 
       End If
 
   End Sub 



RE: مساعدة في كود برمجي - سعود - 01-06-23

الكود رغم بساطته اتعبني معه كل شوي اكتشف غلط او قصور!
آخر كلام :
كود :
Public Class Form1
   Dim ax, ay As Integer, dr As Boolean
   Dim sr As Integer = Screen.PrimaryScreen.Bounds.Right
   Dim sb As Integer = Screen.PrimaryScreen.WorkingArea.Bottom
   Dim lst As New List(Of String)
   Private Sub rep(f As Form)
       If f.Left < 0 Then f.Left = 0
       If f.Top < 0 Then f.Top = 0
       If f.Right >= sr Then f.Left = sr - f.Width
       If f.Bottom >= sb Then f.Top = sb - f.Height
   End Sub
   Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles MyBase.MouseUp, Label1.MouseUp
       dr = False
       rep(Me)
   End Sub
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       rep(Me)
   End Sub
   Private Sub btnclose_Click(sender As Object, e As EventArgs) Handles btnclose.Click
       Close()
   End Sub
   Private Sub btnmin_Click(sender As Object, e As EventArgs) Handles btnmin.Click
       WindowState = FormWindowState.Minimized
   End Sub
   Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox6.CheckedChanged, CheckBox5.CheckedChanged, CheckBox4.CheckedChanged, CheckBox3.CheckedChanged, CheckBox2.CheckedChanged, CheckBox1.CheckedChanged
       Dim c As CheckBox = DirectCast(sender, CheckBox)
       If (c.Checked = True And lst.Contains(c.Text & " ") = False) Then
           lst.Add(c.Text & " ")
       ElseIf (c.Checked = False And lst.Contains(c.Text & " ") = True) Then
           lst.Remove(c.Text & " ")
       End If
       lbl.Text = "Controls Count: " & pnlc.Controls.Count & " | " & lst.Count
       txtchecked.Clear()
       For Each h As String In lst
           If txtchecked.Text.Contains(h) = False Then
               txtchecked.AppendText(h)
           End If
       Next
   End Sub
   Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove, Label1.MouseMove
       If dr Then
           Left = MousePosition.X - ax
           Top = MousePosition.Y - ay
       End If
   End Sub
   Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown, Label1.MouseDown
       If e.Button = MouseButtons.Left Then
           dr = True
           ax = MousePosition.X - Left
           ay = MousePosition.Y - Top
       End If
   End Sub
End Class



RE: مساعدة في كود برمجي - fouadhdfouad - 01-06-23

كود :
اتضل التعديل

Private Sub rep(f As Form)
   If f.Left < 0 Then f.Left = 0
   If f.Top < 0 Then f.Top = 0
   If f.Right >= sr Then f.Left = sr - f.Width
   If f.Bottom >= sb Then f.Top = sb - f.Height
End Sub

Private Sub Form1_MouseUp(sender As Object, e As MouseEventArgs) Handles MyBase.MouseUp, Label1.MouseUp
   dr = False
   rep(Me)
End Sub

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
   rep(Me)
End Sub

Private Sub btnclose_Click(sender As Object, e As EventArgs) Handles btnclose.Click
   Close()
End Sub

Private Sub btnmin_Click(sender As Object, e As EventArgs) Handles btnmin.Click
   WindowState = FormWindowState.Minimized
End Sub

Private Sub CheckBoxes_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox6.CheckedChanged, CheckBox5.CheckedChanged, CheckBox4.CheckedChanged, CheckBox3.CheckedChanged, CheckBox2.CheckedChanged, CheckBox1.CheckedChanged
   Dim c As CheckBox = DirectCast(sender, CheckBox)
   If c.Checked = True AndAlso Not lst.Contains(c.Text & " ") Then
       lst.Add(c.Text & " ")
   ElseIf c.Checked = False AndAlso lst.Contains(c.Text & " ") Then
       lst.Remove(c.Text & " ")
   End If
   lbl.Text = "Controls Count: " & pnlc.Controls.Count & " | " & lst.Count
   txtchecked.Clear()
   For Each h As String In lst
       If Not txtchecked.Text.Contains(h) Then
           txtchecked.AppendText(h)
       End If
   Next
End Sub

Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles MyBase.MouseMove, Label1.MouseMove
   If dr Then
       Left = MousePosition.X - ax
       Top = MousePosition.Y - ay
   End If
End Sub

Private Sub Form1_MouseDown(sender As Object, e As MouseEventArgs) Handles MyBase.MouseDown, Label1.MouseDown
   If e.Button = MouseButtons.Left Then
       dr = True
       ax = MousePosition.X - Left
       ay = MousePosition.Y - Top
   End If
End Sub



RE: مساعدة في كود برمجي - Taha Okla - 01-06-23

أفضل وأبسط حل هو الذي طرحه الأخ (asmarsou):
وهذا هو ولكن مع تعديل بسيط ، 
حيث أنه من الخطأ استخدام تايمر في هذه الحالة :
بالاضافة لترتيب التحديد بحسب اسم الأداة .

الكود بعد التعديل هو :
كود :
Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles _
           CheckBox1.CheckedChanged, CheckBox2.CheckedChanged, CheckBox3.CheckedChanged,
           CheckBox4.CheckedChanged, CheckBox5.CheckedChanged, CheckBox6.CheckedChanged

   TextBox1.Text = (String.Join(", ",
               From cb In Controls.OfType(Of CheckBox)()
               Where cb.Checked
               Order By cb.Text
               Select cb.Text))

End Sub



RE: مساعدة في كود برمجي - عبدالله الدوسري - 01-06-23

الشباب ما قصروا كل طرقهم المستخدمة تؤدي المطلوب

أحببت أن إلقي الضوء على 
 الــ  ( Extension Methods )

كما إستخدمها أخي asmarsou 

Me.Controls.OfType

الـ  OfType هي عبارة عن Extension Methods
الـ  OfType هذة الـ Extension تم إضافتها بواسطة الـ NET. أي انها تحديث للـ NET. وليست Extension مخصصة ألتي يظيفها المبرمج في المشروع.
أي انها لم تكن موجودة في الإصدارات القديمة من الـ NET. ، وتم إضافتها لاحقاً على شكل ( Extension )
لذلك إذا قمت بوضع الماوس على كلمة OfType سيظهر لك أنها Extension 

سبب هذة المشاركة ليس حل موضوع المشاركة ولكن أحببت أن اتكلم عن الـ Extension 

الجدير بالذكر انه يمكنك عمل الـ Extension الخاص بك، في ملف Module منفصل ، تضع فيه كل الـ Extension الخاصة بك.

يمكنك إلصاق أي Function أو Sub بأي أسم انت تراه ، وإلصاقة في أي كلاس موجود في كامل الـ NET.


مثلاً الـ CheckBox عبارة عن كلاس 
وكما تعلم هذا الكلاس لا يحتوي على Function باسم ()ChangeMyColorToRed
مثلاً : ()CheckBox1.ChangeMyColorToRed

بإمكانك إنشاء هذة الـ Function وإلصاقها بالكلاس CheckBox

مفيدة جداً جداً ، مثال بسيط على إستخدامي لهذة الـ Extension 
الكلاس Image
قمت بإنشاء Function باسم ()ToBytesArray وألصقتها بالكلاس Image
الآن أي صورة Image لدي أستطيع إستخدام الوظيفة  ()ToBytesArray عليها لتحويلها إلى مصفوفة بايتات
مثلاً : MyImg صورة
بهذة الطريقة : 
()Dim BlaBla As Byte() = MyImg.ToBytesArray

تستطيع إلصاق الكثير من الــ Extension  في الكلاس Image على سبيل المثال :

()MyImg.ToBytesArray
()MyImg.ToStream
()MyImg.Print
()MyImg.ToGrayscale
()MyImg.ToIcon


()MyImg.ToBytesArray
Function تعود بقيمة من نوع مصفوفة بايتات لتسهيل عملية الحفظ مثلاً في قواعد البيانات


()MyImg.ToStream
Function تعود بقيمة من نوع Stream


()MyImg.Print
Sub يقوم بإرسال أمر الطباعة إلى الطابعة لطباعة الصورة ( مثلاً )


()MyImg.ToGrayscale
Function تعود بقيمة من نوع Image ولكن بعد تحويلها من صورة ملونة إلى صورة بدون ألوان ( تدرجات الرمادي )

()MyImg.ToIcon
Function تعود بقيمة من نوع  Icon  بعد تحويلها من صورة إلى أيقونة



ستسهل عليك أمور كثيرة ، حتى أنها أجمل بكثير ، ومرتبة .



هذا مثال بسيط ، تخيل ماذا يمكن أن تفعل مع هذة الـ Extension 

طريقة إنشاء الـ Extension بسيطة جداً جداً.


RE: مساعدة في كود برمجي - maherhaddaf - 04-06-23

اشكركم من عميق قلبي على هذا الجهد وهذه المشاركه
انا غفلت عن الموضوع قليلا ورجعت له
اشكركم جميعا على المشاركات الفعالة


RE: مساعدة في كود برمجي - maherhaddaf - 05-06-23

واجهتني مشكلة في الكود المستعمل
Dim c As CheckBox = DirectCast(sender, CheckBox)
If (c.Checked = True And lst.Contains(c.Text & " - ") = False) Then
lst.Add(c.Text & "- ")
ElseIf (c.Checked = False And lst.Contains(c.Text & " - ") = True) Then
lst.Remove(c.Text & " ")
End If
Txtdetails.Text = "Controls Count: " & GroupPanel2.Controls.Count & " | " & lst.Count
Txtdetails.Clear()
For Each h As String In lst
If Txtdetails.Text.Contains(h) = False Then
Txtdetails.AppendText(h)
End If
Next
بعد تفريغ الحقل الذي يحتوى البيانات من محتوياته فانه يحتفظ بالبيانات اريد تفريغ الذاكرة من البيانات لبدء العمل بسجل جديد