PDA

View Full Version : راست چین کردن treeview



arsalansalar
یک شنبه 01 مهر 1386, 00:52 صبح
سلام
چگونه می توان یک treeview را راست چین کرد؟

Mbt925
یک شنبه 01 مهر 1386, 14:43 عصر
باید از یه TreeView ی دیگه استفاده کنین.

حامد مصافی
یک شنبه 01 مهر 1386, 14:57 عصر
چرا قبل از طرح سوال جستجو نمی کنید؟

arsalansalar
یک شنبه 01 مهر 1386, 22:26 عصر
سلام
منظورتون متوجه نمی شوم؟ یعنی چی از یک treeview دیگر استفاده کنم؟
در ضمن جستجو کردم ولی چیزی پیدا نکردم.

Mbt925
یک شنبه 01 مهر 1386, 22:57 عصر
یعنی TreeView ویبی RightToLeft یا راستچین نمیشه.

و باید از یه TreeView دیگه که این قابلیت رو داره استفاده کنین.

Mbt925
دوشنبه 02 مهر 1386, 00:08 صبح
مثل این نمونه :

حامد مصافی
دوشنبه 02 مهر 1386, 10:04 صبح
یعنی TreeView ویبی RightToLeft یا راستچین نمیشه.
میشه.

هر چند قبلاً به کررات این کد رو گذاشتم. اما خب دوباره می ذارمش.:


Rem Hamed Masafi
Rem Ineed: No Module!

'##ModelId=43DEADE7000F
Const GWL_EXSTYLE = -20
'##ModelId=43DEADE70020
Const WS_EX_LAYOUTRTL = &H400000
'##ModelId=43DEADE7002E
Const WS_EX_NOINHERITLAYOUT = &H100000
'##ModelId=43DEADE7003E
Const RDW_INVALIDATE = &H1

'##ModelId=43DEADE603B9
Private Type RECT
'##ModelId=43DEADE603C8
Left As Long
'##ModelId=43DEADE603D8
Top As Long
'##ModelId=43DEADE603D9
Right As Long
'##ModelId=43DEADE70000
Bottom As Long
End Type

'##ModelId=43DEADE7004E
Private Declare Function RedrawWindow Lib "user32.dll" (ByVal hWnd As Long, lprcUpdate As RECT, ByVal hrgnUpdate As Long, ByVal fuRedraw As Long) As Long

'##ModelId=43DEADE7006E
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hWnd As Long, lpRect As RECT) As Long

'##ModelId=43DEADE7007F
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long) As Long

'##ModelId=43DEADE7009C
Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long

'##ModelId=43DEADE700BB
Private Declare Function EnumChildWindows Lib "user32.dll" (ByVal hWndParent As Long, ByVal lpEnumFunc As Long, ByVal lParam As Long) As Long

'##ModelId=43DEADE700CE
Private Sub RTLForm(hWnd As Long)
Dim OldLong As Long
Dim rc As RECT

OldLong = GetWindowLong(hWnd, GWL_EXSTYLE)
SetWindowLong hWnd, GWL_EXSTYLE, OldLong Or WS_EX_LAYOUTRTL Or WS_EX_NOINHERITLAYOUT

GetWindowRect hWnd, rc
RedrawWindow hWnd, rc, 0&, RDW_INVALIDATE
End Sub

'##ModelId=43DEADE700DB
Private Function EnumChildProc(ByVal hWnd As Long, ByVal lParam As Long) As Long
RTLForm hWnd
EnumChildProc = True
End Function

'##ModelId=43DEADE700FA
Public Sub RTLWindow(hWnd As Long, Optional GetAllChilds As Boolean = False)
RTLForm hWnd
If GetAllChilds Then EnumChildWindows hWnd, AddressOf EnumChildProc, ByVal 0&
End Sub

Mbt925
چهارشنبه 04 مهر 1386, 10:18 صبح
ممنون دوست عزیز.

البته منظوره من استفاده از API نبود.

حامد مصافی
چهارشنبه 04 مهر 1386, 13:02 عصر
در اینصورت امکان پذیر نیست