الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

هل يوجد كود لجعل الـ ScrollBars دائماً على الجهة اليمنى بالـ Listview - مرفق صورة مثال

بدأه جواد في 26 فبراير 2013 · 4 رد · 471 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم اخواني

 

 

هل يوجد كود لجعل الـ ScrollBars دائماً على الجهة اليمنى بالـ Listview

 

 

المشكلة هي عند فتح البرنامج يظهر الشريط المحدد عليه باللون لأحمر 
 
 
يظهر على اليسار وأنا أريد أول ما اشغل البرنامج يحددلي أول إسم ويكون الشريط على اليمين وليس على اليسار
 
 
aEnxt.jpg
 
 
 
 
 
مثل هذا الشكل
 
 
rmhS8.jpg
 
 
ما هو الحل أخواني الكرام بارك الله فيكم
#2

هل يوجد حل اخواني بارك الله فيكم

#3

من لديه الحل يا اخواني

#4

السلام عليكم...

 

للأسف فإن مكونات Windows Common Controls (و من بينها الـ ListView) لا تدعم خاصية RightToLeft في VB6. و لهذا علينا اللجوء إلى ما يسمى تقنية المرآة (Mirroring) لتغيير اتجاه الـ ListView بأكملها لتكون من-اليمين-إلى-اليسار، كالتالي:

 

1. في قسم التصريحات العام للـ Form ضع التصريحات التالية:

Private Const GWL_EXSTYLE = (-20)
Private Const WS_EX_LAYOUTRTL = &H400000

Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function UpdateWindow Lib "user32" (ByVal hwnd As Long) As Long
Private Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

2. تحت التصريحات السابقة قم بتعريف الإجراء التالي:

Private Sub ChangeControlLayout(ByVal ControlHandle As Long)
    Dim OldLong As Long

    OldLong = GetWindowLong(ControlHandle, GWL_EXSTYLE)
    SetWindowLong ControlHandle, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
    UpdateWindow ControlHandle
End Sub

3. في إجراء الحدث Form_Load استدع الإجراء السابق مرتين، هكذا:

    ChangeControlLayout ListView1.hwnd
    ChangeControlLayout FindWindowEx(ListView1.hwnd, 0&, "msvb_lib_header", "")

* الاستدعاء الأول لتغيير اتجاه الـ ListView نفسها، و الاستدعاء الثاني لتغيير اتجاه عناوين رؤوس الأعمدة (Column Headers) لأنها عبارة عن مكون مستقل بذاته لكنه موجود داخل الـ ListView.

 

نرجو الاستفادة و السلام.

وَ قُلِ اعْمَلُوا فَسَيَرَى اللهُ عَمَلَكُمْ وَ رَسُولُهُ وَ الْمُؤْمِنُونَ

صدق الله العظيم

#5

رائع اخي najy_zl

 

الله يبارك فيك والله يرزقك من حيث لا تحتسب

 

والله يعطيك العافية

 

شكراً لك

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…