محاذاة اداة list view من اليمين الى اليسار - hannileo - 12-11-18
السلام عليكم ورحمة الله وبركاته ....
بالنسبة لاداة listview كيف يمكن تحويل السجلات من اليمين الى اليسار
هذا بخصوص عمل واجهة البرنامج بالعربي
حيث انها تظهر من اليسار الى اليمين
وشكرا لكم
RE: محاذاة اداة list view من اليمين الى اليسار - AL_BRNS - 12-11-18
وعليكم السلام ورحمة الله وبركاته
جرب التالي
PHP كود :
Option Explicit 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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Const WS_EX_LAYOUTRTL = &H400000 Private Const GWL_EXSTYLE = (-20)
Private Sub SetRtL(Ctl As Control) Ctl.Visible = False SetWindowLong Ctl.hwnd, GWL_EXSTYLE, _ GetWindowLong(Ctl.hwnd, GWL_EXSTYLE) _ Or WS_EX_LAYOUTRTL Ctl.Visible = True End Sub
Private Sub Form_Load() SetRtL ListView1 End Sub
بالتوفيق .
RE: محاذاة اداة list view من اليمين الى اليسار - hannileo - 13-11-18
(12-11-18, 11:13 PM)AL_BRNS كتب : وعليكم السلام ورحمة الله وبركاته
جرب التالي
PHP كود :
Option Explicit 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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long Private Const WS_EX_LAYOUTRTL = &H400000 Private Const GWL_EXSTYLE = (-20)
Private Sub SetRtL(Ctl As Control) Ctl.Visible = False SetWindowLong Ctl.hwnd, GWL_EXSTYLE, _ GetWindowLong(Ctl.hwnd, GWL_EXSTYLE) _ Or WS_EX_LAYOUTRTL Ctl.Visible = True End Sub
Private Sub Form_Load() SetRtL ListView1 End Sub
بالتوفيق .
شكرا لك وبارك الله بك استاذ AL_BRNS
لقد وضعت هذا الكود في الفورم ولكن ظهرت رسالة خطأ عند التنفيذ وعندما ازلت الكود لم تعد تظهر هذه الرسالة كما مبين بالصورة
وبكل الاحوال جربتها على مثال خارجي اضفت listview للفورم ونسخت الكود ولم يتغير شيئ كما في الصورة الثانية
RE: محاذاة اداة list view من اليمين الى اليسار - AL_BRNS - 13-11-18
العفو اخي الكريم
جرب المثال التالي
بالتوفيق .
RE: محاذاة اداة list view من اليمين الى اليسار - hannileo - 14-11-18
(13-11-18, 11:40 PM)AL_BRNS كتب : العفو اخي الكريم
جرب المثال التالي
بالتوفيق .
اشكرك اخي AL_BRNS
لكن للاسف لم يعمل عندي بشكل جيد مازالت رسالة الخطأ كما بالصورة السابقة تظهر عندي
ربما لانني وضفت اسم العمود من خصائص الاداة وليس بطريقة برمجية
هل هناك طريقة عملية اكثر من هذه الطريقة ان امكن وشكرا لك
RE: محاذاة اداة list view من اليمين الى اليسار - elgokr - 15-11-18
وعليكم السلام ورحمة الله وبركاته
تفضل استخدم الكود بهذا الشكل
كود :
Option Explicit
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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const WS_EX_LAYOUTRTL = &H400000
Private Const GWL_EXSTYLE = (-20)
Private Sub SetRtL(Ctl As Control)
Ctl.Visible = False
SetWindowLong Ctl.hWnd, GWL_EXSTYLE, _
GetWindowLong(Ctl.hWnd, GWL_EXSTYLE) _
Or WS_EX_LAYOUTRTL
Ctl.Visible = True
End Sub
Private Sub Form_Load()
Me.ListView1.View = lvwReport
Me.ListView1.ColumnHeaders.Clear
Me.ListView1.ColumnHeaders.Add , , "العنوان", ListView1.Width / 2
Me.ListView1.ColumnHeaders.Add , , "التفاصيل", ListView1.Width / 2
With Me.ListView1.ListItems
.Add , , "تجريبي 1"
.Add , , "تجريبي 2"
End With
Me.ListView1.ListItems(1).SubItems(1) = "نص نص نص نص نص نص"
Me.ListView1.ListItems(2).SubItems(1) = "نص نص نص نص نص نص"
SetRtL ListView1
End Sub
Option Explicit
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 GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long
Private Const WS_EX_LAYOUTRTL = &H400000
Private Const GWL_EXSTYLE = (-20)
Private Sub SetRtL(Ctl As Control)
Ctl.Visible = False
SetWindowLong Ctl.hWnd, GWL_EXSTYLE, _
GetWindowLong(Ctl.hWnd, GWL_EXSTYLE) _
Or WS_EX_LAYOUTRTL
Ctl.Visible = True
End Sub
Private Sub Form_Load()
Me.ListView1.View = lvwReport
Me.ListView1.ColumnHeaders.Clear
Me.ListView1.ColumnHeaders.Add , , "العنوان", ListView1.Width / 2
Me.ListView1.ColumnHeaders.Add , , "التفاصيل", ListView1.Width / 2
With Me.ListView1.ListItems
.Add , , "تجريبي 1"
.Add , , "تجريبي 2"
End With
Me.ListView1.ListItems(1).SubItems(1) = "نص نص نص نص نص نص"
Me.ListView1.ListItems(2).SubItems(1) = "نص نص نص نص نص نص"
SetRtL ListView1
End Sub
تحياتى لك
وتمنياتى لك التوفيق
RE: محاذاة اداة list view من اليمين الى اليسار - hannileo - 18-11-18
وعليكم السلام ورحمة الله وبركاته ,,,
فعلاً هذه المرة هذا الكود يعمل بشكل جيد عندما نسخت الكود في فورم مع ادام listview ولكن ليش مع برنامجي ولا ادري ماهو السبب حيث انها تظهر عندي رسالة خطأ
عندما اقوم بالتشغيل هل يوجد مشكلة بالكود التالي ؟
حتى لو تلاحظ كما بالصورة ان القوائم عندي لم تقلب الى اليمين
كود :
Private Sub Text2_Change()
On Error Resume Next
If rs.State = 1 Then rs.Close
sql = "Select *From tblTransactions WHERE [TransacCode] Like '%" & Trim(Text2.Text) & _
"%' or [TransacCont] LIKE '%" & Trim(Text2.Text) & _
"%'"
rs.Open sql, cn
If rs.RecordCount <= 0 Then
MsgBox "No Invoice found!", vbCritical + vbOKOnly, ""
Else
ListView1.ListItems.clear
txtCust.Text = ""
txtCont.Text = ""
TxtDate.Text = ""
Text3.Text = ""
Text1.Text = ""
Text6.Text = ""
Text5.Text = ""
Text4.Text = ""
With rs
Do While .EOF = False
Set li = ListView1.ListItems.Add(, , rs!ID_item)
li.SubItems(1) = rs!ItemDesc
li.SubItems(2) = rs!ItemQTY
li.SubItems(3) = Format(rs!UnitPrice, "###,###,###.00")
li.SubItems(4) = Format(rs!Amount, "###,###,###.00")
li.SubItems(5) = rs!TransacCust
li.SubItems(6) = rs!TransacCont
li.SubItems(7) = rs!DatePurchased
li.SubItems(8) = rs!TransacCode
li.SubItems(9) = rs!ItemProdCode
li.SubItems(10) = rs!ItemCategory
rs.MoveNext
Loop
End With
End If
Text3.Text = ListView1.SelectedItem.Text
Text6.Text = ListView1.SelectedItem.SubItems(2)
Text4.Text = ListView1.SelectedItem.SubItems(3)
Text5.Text = ListView1.SelectedItem.SubItems(4)
txtCust.Text = ListView1.SelectedItem.SubItems(5)
txtCont.Text = ListView1.SelectedItem.SubItems(6)
TxtDate.Text = ListView1.SelectedItem.SubItems(7)
Text1.Text = ListView1.SelectedItem.SubItems(8)
lblitems.Caption = ListView1.ListItems.Count
End Sub
كود :
Private Sub Form_Load()
Me.ListView1.View = lvwReport
ListView1.ColumnHeaders.Add , , "ID_item", 0, 0
ListView1.ColumnHeaders.Add , , "Product Description", 2700, 0
ListView1.ColumnHeaders.Add , , "QTY", 800, 2
ListView1.ColumnHeaders.Add , , "Unit Price", 1700, 1
ListView1.ColumnHeaders.Add , , "Amount", 1700, 1
ListView1.ColumnHeaders.Add , , "Customer Name", 0, 1
ListView1.ColumnHeaders.Add , , "Contact Number", 0, 1
ListView1.ColumnHeaders.Add , , "Date", 0, 1
ListView1.ColumnHeaders.Add , , "TransCode", 0, 1
ListView1.ColumnHeaders.Add , , "ItemProdCode", 800, 1
ListView1.ColumnHeaders.Add , , "ItemCategory", 1500, 1
SetRtL ListView1
End Sub
مع العلم ان رسالة الخطا تظهر عند السطر :
كود :
Set li = ListView1.ListItems.Add(, , rs!ID_item)
بارك الله بك استاذ الجوكر
شكرا على المساعدة
وجعلها في ميزان حسناتك
RE: محاذاة اداة list view من اليمين الى اليسار - hannileo - 20-11-18
لا يوجد رد !!!
على كل حال قمت بازالة جملة Option Explicit أصبح يعمل ولكن المشكلة التي ظهرت انني عندما اقوم بازاحة الاعمدة يمين او يسار فان محتوى الجدول يتحرك عكس ذلك
أعتقد ان هذا الشيئ ليش عملي وقد يعمل على افشال التصميم وربما الى افشال عمل البرنامج
هل يوجد حل افضل من هذا ان وجد وان لم يكن يوجد خير وبركة
على كل حال بارك الله بجهودكم وشكراً على المساعدة
|