السلام عليكم...
إجابة الأخ أبو يعقوب متعلقة بـ VB.NET بينما هنا منتدى VB6.
أعتقد أن الموضوع مطروح من قبل، و لكن على أية حال يكون الحل بنسخ الكود التالي و لصقه في Module:
كود :
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
Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hwndParent As Long, ByVal hwndChild As Long, ByVal lpszClass As String, ByVal lpszTitle As String) As Long
Public Sub ChangeControlLayout(ByVal ControlHandle As Long, ByVal ArabicLayout As Boolean)
Dim OldLong As Long
OldLong = GetWindowLong(ControlHandle, GWL_EXSTYLE)
If ArabicLayout Then
SetWindowLong ControlHandle, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL
Else
SetWindowLong ControlHandle, GWL_EXSTYLE, OldLong And (Not WS_EX_LAYOUTRTL)
End If
UpdateWindow ControlHandle
End Sub
و في الحدث Form_Load للنافذة المحتوية على الـ ListView اكتب السطرين التاليين:
كود :
ChangeControlLayout ListView1.hWnd, True
ChangeControlLayout FindWindowEx(ListView1.hWnd, 0&, "msvb_lib_header", ""), True
حيث يقوم السطر الأول بتغيير اتجاه الـ ListView ما عدا عناوين الأعمدة (Column Headers)، و يقوةم السطر الثاني بتغيير اتجاه عناوين الأعمندة.
* يمكنك طبعاً استعمال الدالة ChangeControlLayout لتغيير اتجاه المكونات الأخرى، مثل الـ TreeView. مثلاً:
كود :
ChangeControlLayout TreeView1.hWnd, True
نرجو الاستفادة و السلام.