تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
عمل auto hide لل listbox
#1
السلام عليكم ورحمة الله وبركاته..
ممكن لو سمحتم ازاى اخلى الليست بوكس تتجهه نحو اليمين بمجرد الضغط على الزر
وحين الضغط مرة أخرى عليه ترجع كما كانت فى مكانها مثل الدبوس auto hide الموجود هنا وجزاكم الله كل الخير.


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

كود :
  If Panel1.Visible = True Then
           Panel1.Visible = False
           Exit Sub
       End If


       If Panel1.Visible = False Then
           Panel1.Visible = True
           Exit Sub
       End If
الرد }}}
تم الشكر بواسطة:
#2
أعملها بــ Timer

كود :
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Timer1.Start()
    End Sub
    Dim i As Single
    Dim O As Boolean
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        If O = False Then
            Panel1.Left += i
            i += 0.1
            If i >= 5.5 Then Timer1.Stop() : O = True : Button1.Text = "<"
        Else
            i -= 0.1
            Panel1.Left -= i
            If i <= 0 Then Timer1.Stop() : O = False : Button1.Text = ">"
        End If
    End Sub


الملفات المرفقة
.rar   2.rar (الحجم : 43.97 ك ب / التحميلات : 16)
الرد }}}
#3
السلام عليك ورحمة الله اخي ابو روضه

اولا ضع اداة CheckBox داخل الفورم  واجعلها غير مؤشرة
ثانيا في وقت التصميم  قم بموضعة الاداة ListBox بحيث يكون الجانب الايمن لها ملاصق للجانب الايمن للفورم
ثالثا قم بتحجيم الاداة ListBox الى الحجم الاصغر لها
 ثم انسخ الكود التالي:

كود :
    Dim DefaultWidth As Integer
    Dim LongWidth As Integer = 300
    Dim Defaultleft As Integer

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        DefaultWidth = ListBox1.Width
        Defaultleft = ListBox1.Left

    End Sub

  
    Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked Then
            ListBox1.Width = LongWidth
            ListBox1.Left = Me.Width - ListBox1.Width
        Else
            ListBox1.Width = DefaultWidth
            ListBox1.Left = Defaultleft

        End If
    End Sub


لاحظ انه عند تشغيل البرنامج ثم التأشير داخل التشيك بوكس تصبح قيمة الخاصية ListBox.Width= 300 وهي القيمة العضمى والتي حددتها في الكود ضمن المتغير LongWidth
ولكي يبقى الـ ListBox في مكانه اي بمحاذاة الجانب الايمن فانا نعيد تموضع الـ ListBox.Left بحيث تساوي عرض الفورم ناقص عرض الـ ListBox 
اما في حالة ازالة التاشير فتعود الخاصية ListBox.Width= DefaultWidth وانا اعطيتها القيمة 79 ويعود تموضع الـ   ListBox.Left ليساوي القيمة المحفوظة في المتغير Defaultleft

ارجو ان يكون الكود واضح وان يكون هو ما اردت

الرد }}}
#4
(02-07-20, 01:00 AM)سامي محمد كتب : أعملها بــ Timer

كود :
 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Timer1.Start()
    End Sub
    Dim i As Single
    Dim O As Boolean
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        If O = False Then
            Panel1.Left += i
            i += 0.1
            If i >= 5.5 Then Timer1.Stop() : O = True : Button1.Text = "<"
        Else
            i -= 0.1
            Panel1.Left -= i
            If i <= 0 Then Timer1.Stop() : O = False : Button1.Text = ">"
        End If
    End Sub

(02-07-20, 01:06 AM)معاند الحظ كتب : السلام عليك ورحمة الله اخي ابو روضه

اولا ضع اداة CheckBox داخل الفورم  واجعلها غير مؤشرة
ثانيا في وقت التصميم  قم بموضعة الاداة ListBox بحيث يكون الجانب الايمن لها ملاصق للجانب الايمن للفورم
ثالثا قم بتحجيم الاداة ListBox الى الحجم الاصغر لها
 ثم انسخ الكود التالي:

كود :
    Dim DefaultWidth As Integer
    Dim LongWidth As Integer = 300
    Dim Defaultleft As Integer

    Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
        DefaultWidth = ListBox1.Width
        Defaultleft = ListBox1.Left

    End Sub

  
    Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
        If CheckBox1.Checked Then
            ListBox1.Width = LongWidth
            ListBox1.Left = Me.Width - ListBox1.Width
        Else
            ListBox1.Width = DefaultWidth
            ListBox1.Left = Defaultleft

        End If
    End Sub


لاحظ انه عند تشغيل البرنامج ثم التأشير داخل التشيك بوكس تصبح قيمة الخاصية ListBox.Width= 300 وهي القيمة العضمى والتي حددتها في الكود ضمن المتغير LongWidth
ولكي يبقى الـ ListBox في مكانه اي بمحاذاة الجانب الايمن فانا نعيد تموضع الـ ListBox.Left بحيث تساوي عرض الفورم ناقص عرض الـ ListBox 
اما في حالة ازالة التاشير فتعود الخاصية ListBox.Width= DefaultWidth وانا اعطيتها القيمة 79 ويعود تموضع الـ   ListBox.Left ليساوي القيمة المحفوظة في المتغير Defaultleft

ارجو ان يكون الكود واضح وان يكون هو ما اردت



بارك الله فيكم أخوتى الكرام وجزاكم كل الخير...

هذا ما أريده بالتحديد الله يسعدكم......
الرد }}}
#5
أتمنى ان يكون هذا الكود ذو فائدة وبسوالك هذا وجدت فكره اضيفها الى فاتورة المبيعات فانا مجرد مبتدي وانتم الاساتذه اتمنى التحقق من الكود وافادتي اذا يوجد به اخطاء ولكم منيجزيل الشكر والتقدير


الملفات المرفقة
.zip   إخفاء وإضهار تلقائي.zip (الحجم : 83.17 ك ب / التحميلات : 22)
الرد }}}
#6
(02-07-20, 07:17 AM)alshandodi كتب : أتمنى ان يكون هذا الكود ذو فائدة وبسوالك هذا وجدت فكره اضيفها الى فاتورة المبيعات فانا مجرد مبتدي وانتم الاساتذه اتمنى التحقق من الكود وافادتي اذا يوجد به اخطاء ولكم منيجزيل الشكر والتقدير

مثال جميل جدا أخى بارك الله فيك
الرد }}}
تم الشكر بواسطة: alshandodi , alshandodi , ابراهيم ايبو



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


يقوم بقرائة الموضوع: