PDA

View Full Version : سوال: افزودن قابلیت Right To Left به نمودار CodeJock



ali190
جمعه 25 شهریور 1390, 12:03 عصر
باسلام و عرض خسته نباشید خدمت همه عزیزان
در نمونه پروژه ای که خدمتتون قرار دادم ملاحظه میفرمائید که ocx چارت مجموعه کدجاک فاقد خاصیت Right To Left‌است که این مسئله برای ما فارسی زبانان در اکثر اوقات فاجعه است
میخواستم بدونم آبا راهی وجود داره که بشه خاصیت Right To Left رو با کدنویسی به این ocx اضافه نمود (نمونه این کار رو قبلاً در TreeView و ListBox دیده بودم) یا نه و این کار باید توسط خود شرکت CodeJock به این کنترل اضافه شود؟
ممنون میشم راهنماییم کنید
خیلی خیلی ممنونم
یاعلی

ali190
شنبه 26 شهریور 1390, 10:18 صبح
منتظر نظراتتون هستم

Restlesa
شنبه 26 شهریور 1390, 10:54 صبح
سلام دوست عزیز
من با کد زیر خاصیت Right To Left ابزارهای خود ویژال بیسیک مثل ListBox و RichTextBox و ... رو True و یا False می کنم.
این کد رو به برنامه ات اضافه کن ببین کار می کنه یا نه

کد زیر رو تو یه ماژول قرار بده

Option Explicit
Public Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Public Declare Function InvalidateRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT, ByVal bErase As Long) As Long
Public Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Public Declare Function GetClientRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Public Declare Function GetWindow Lib "user32.dll" (ByVal hwnd As Long, ByVal wCmd As Long) As Long
Public Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Public rClientRect As RECT
Public Const GWL_EXSTYLE = -20
Public Const GW_CHILD As Long = 5
Public Const WS_EX_LAYOUTRTL As Long = &H400000

Public Sub RTLObject(oObject As Object)
On Error Resume Next
Dim ReturnStyle&, Header_hWnd&
ReturnStyle = GetWindowLong(oObject.hwnd, GWL_EXSTYLE)
SetWindowLong oObject.hwnd, GWL_EXSTYLE, ReturnStyle Or WS_EX_LAYOUTRTL
GetClientRect oObject.hwnd, rClientRect
InvalidateRect oObject.hwnd, rClientRect, True
Header_hWnd = GetWindow(oObject.hwnd, GW_CHILD)
ReturnStyle = GetWindowLong(Header_hWnd, GWL_EXSTYLE)
'RightToLeft-
SetWindowLong Header_hWnd, GWL_EXSTYLE, ReturnStyle Or WS_EX_LAYOUTRTL
GetClientRect Header_hWnd, rClientRect
InvalidateRect Header_hWnd, rClientRect, True
End Sub

Public Sub LTRObject(oObject As Object)
On Error Resume Next
Dim ReturnStyle&, Header_hWnd&
ReturnStyle = GetWindowLong(oObject.hwnd, GWL_EXSTYLE)
SetWindowLong oObject.hwnd, GWL_EXSTYLE, ReturnStyle And Not WS_EX_LAYOUTRTL
GetClientRect oObject.hwnd, rClientRect
InvalidateRect oObject.hwnd, rClientRect, True
Header_hWnd = GetWindow(oObject.hwnd, GW_CHILD)
ReturnStyle = GetWindowLong(Header_hWnd, GWL_EXSTYLE)
'RightToLeft-
SetWindowLong Header_hWnd, GWL_EXSTYLE, ReturnStyle And Not WS_EX_LAYOUTRTL
GetClientRect Header_hWnd, rClientRect
InvalidateRect Header_hWnd, rClientRect, True
End Sub

این کد هم خاصیت RightToLeft رو تغییر میده و در قسمت () Form_Load قرار بده
RTLObject نام ابزار مورد نظر

ali190
شنبه 26 شهریور 1390, 22:50 عصر
سلام
ممنون از کدی که در اختیارم گذاشتید
ولی عمل نکرد!؟

Restlesa
یک شنبه 27 شهریور 1390, 20:01 عصر
شايد در مورد اين ابزار به اين صورته چون من همون طوري كه قبلا هم گفتم تمامي ابزارهاي خود ويژال بيسيك كار مي كنه