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

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

هذا الكود قمت بعمله لتوسيع أعمدة أداة الـ Listview لتأخذ حجمها بالنسبة المئوية علي حسب حجم الأداة :

الـدالــــــــــة :
كود :
[color=#0000ff]Public Function[/color] PercentWidth([color=#0000ff]ByVal [/color]Percent [color=#0000ff]As Decimal[/color], [color=#0000ff]ByVal[/color] lv [color=#0000ff]As[/color] ListView) [color=#0000ff]As Integer[/color]
[color=#0000ff]        On Error Resume Next[/color]
       [color=#0000ff] Return[/color] Percent * (lv.Width - 5) / 100
    End Function

يتم إستخدام الدالة عن طريق حدث الـ Resize الخاص بالـ Form ويمكن وضعه في أي حدث آخر كـ Timer مثلاً :

كود :
[color=#0000ff]Private Sub[/color] Form1_Resize([color=#0000ff]ByVal[/color] sender [color=#0000ff]As Object[/color], [color=#0000ff]ByVal [/color]e [color=#0000ff]As [/color]System.EventArgs)[color=#0000ff] Handles Me[/color].Resize
        [color=#0000ff]For Each[/color] c [color=#0000ff]As [/color]ColumnHeader In ListView.Columns
            [color=#0000ff]Select Case[/color] c.Index
                [color=#0000ff]Case [/color]0
                    c.Width = PercentWidth(50, ListView)
                [color=#0000ff]Case [/color]1
                    c.Width = PercentWidth(30, ListView)
                [color=#0000ff]Case [/color]2
                    c.Width = PercentWidth(20, ListView)
[color=#0000ff]            End Select[/color]
[color=#0000ff]        Next[/color]
   [color=#0000ff] End Sub[/color]
الكود أعلاه في حالة كانت الأداة تحتوي علي 3 أعمدة فقط .


****
***
**
*
جزاك الله خيرا
كفيت ووفيت
ربنا يجعله فى موازين حسناتك
نحمده ونصلي على رسوله الكريم

وعليكم السلام ورحمة الله وبركاته
بارك الله فيك وجزاك كل خير، فكرة جميلة جدا Smile
السلام عليكم

أعتذر على التطفل

حاول دائما ان يكون الكود شامل عام

الكود التالي يقوم بالمطلوب حتى لو كانت الأعمدة مليون ويحافظ على نسبة كل عمود بشرط أن تعطيه نسبة مجموع الأعمدة النهائي

PHP كود :
Sub ResizeHeaders(ByVal lv As ListViewByVal percent As Single)
        
Dim FinalHeadersWidth lv.Width percent
        Dim CurrentHeadersWidth 
As Integer
        
For Each c As ColumnHeader In lv.Columns
            CurrentHeadersWidth 
+= c.Width
        Next
        
'طرحنا 1 بكسل لكل عمود لكي لا يظهر السكرول بار إذا كانت النسبة 1
        Dim RemainWidth As Integer = FinalHeadersWidth - CurrentHeadersWidth - lv.Columns.Count
        For Each c As ColumnHeader In lv.Columns
            Dim val = (c.Width / CurrentHeadersWidth) * RemainWidth
            If c.Width + val > 1 Then
                c.Width += val
            End If
        Next
    End Sub 

ونستخدمه مثلا عند تغير مساحة الفورم
PHP كود :
Private Sub Form1_Resize(ByVal sender As ObjectByVal e As System.EventArgsHandles Me.Resize
        Me
.ResizeHeaders(Lvw1)
    
End Sub 
فعلا الكود عملي أكثر من كودي

جزاك الله خير الجزاء أبو يعقوب