منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : انشاء وتحريك الادوات في زمن التشغيل
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم

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


الغاية من هذا المثال هو كيفية انشاء ادوات وقت التنفيذ واضافة الاحداث لها (Events) عن طريق الكود 


وهذا هو الكود 


PHP كود :
Public Class Form1

    
Public Const WM_NCLBUTTONDOWN = &HA1
    
Public Const HTCAPTION 2

    
Private TextBox(10) As TextBox
    
Private Button(10) As Button
    Dim numberOfButtons 
As Integer
    
Private Sub Button1_Click(sender As ObjectAs EventArgsHandles Button1.Click

        Dim newbox 
As TextBox
        
For As Integer 1 To 10
            newbox 
= New TextBox
            newbox
.Size = New Drawing.Size(10020)
            'ضبط خاصية الحجم
            newbox.Location = New Point(130, 10 + 25 * (i - 1))
            ' 
ضبط خاصية الموقع
            newbox
.Name "TextBox" i
            
' الاسم البرمجي
            newbox.Text = newbox.Name
            ' 
الاسم الظاهر الكابشن
            AddHandler newbox
.MouseDownAddressOf TextBox_MouseDown
            
' هذه مهمة جداً وهي اضافة الحدث واعطاء اسم للبروسجير الذي سينفذ الكود المطلوب
            TextBox(i) = newbox
            Me.Controls.Add(newbox)
            '
        Next

        
' نفس الشرح في الاكواد السابقة ينطبق على هذه الاكواد ولكن هذه خاصة بازرار الامر
        Dim Newbtn As Button
        For i As Integer = 1 To 10
            Newbtn = New Button
            Newbtn.Size = New Drawing.Size(100, 20)
            Newbtn.Location = New Point(10, 10 + 25 * (i - 1))
            Newbtn.Name = "Button" & i
            Newbtn.Text = Newbtn.Name
            AddHandler Newbtn.MouseDown, AddressOf NewButton_MouseDown
            Button(i) = Newbtn
            Me.Controls.Add(Newbtn)
        Next
    End Sub
    Friend Sub TextBox_MouseDown(ByVal sender As Object, ByVal e As MouseEventArgs)
        ' 
هذا الاجراء خاص بمكانية تحريك التكسات بوكس  بالزر الايسر للماوس ولاحظ هو Friend sub
        
For 1 To 10
            
If e.Button MouseButtons.Left Then
                TextBox
(i).Capture False
                Dim msg 
As Message Message.Create _
                
(TextBox(i).HandleWM_NCLBUTTONDOWN,
                New IntPtr(HTCAPTION), IntPtr.Zero)
                Me.DefWndProc(msg)
            End If
        Next i
    End Sub
    Friend Sub NewButton_MouseDown
(ByVal sender As ObjectByVal e As MouseEventArgs)
        ' هذا الاجراء خاص بمكانية تحريك ازرار الامر بالزر الايسر للماوس ولاحظ هو Friend sub
        For i = 1 To 10
            If e.Button = MouseButtons.Left Then
                Button(i).Capture = False
                Dim msg As Message = Message.Create _
                (Button(i).Handle, WM_NCLBUTTONDOWN,
                New IntPtr(HTCAPTION), IntPtr.Zero)
                Me.DefWndProc(msg)
            End If
        Next i
    End Sub



End Class 


المشروع بالمرفقات  


اتمنى لكم التوفيق
جزاك الله خيرا اخي علي
من الامور الجيدة ايضأ ان يتم حفظ هذه المواقع و التصميمات حسب الرغبة و تثبيتها
تماماً كما يحصل في مكتبة DevExpress حيث هناك ما يعرف بالمخططات يتم حفظها و استيرادها 
حسب التشكيل الذي تريده (تحفظ في ملفات XML).
بارك الله فيك.
الله يجازيك بالخير اخي ابو ليلى وفعلا الـ Devexpress جميلة جداً لانها تعتمد على xml وامكانية حفظ التنسيق

اشكرك اخي على المرور الجميل