PDA

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



Special
پنج شنبه 05 دی 1387, 10:27 صبح
با سلام خدمت اساتيد عزيز

چطور ميشه در VB6 براي فارسي نوشتن TreeView رو راست چين کرد؟

من توی فوروم سرچ کردم اما چيزی پيدا نکردم.

حامد مصافی
پنج شنبه 05 دی 1387, 11:49 صبح
این کد رو در یک ماژول کپی کنید:

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





و سپس :

RTL_Form.RTLWindow Treeview1.hwnd, True

Special
جمعه 06 دی 1387, 00:35 صبح
میشه یه توضیحی در مورد کد بديد.
من کپی کردم توی یک module اما اتفاقی نیافتاد!

3dboy1
جمعه 06 دی 1387, 07:42 صبح
با سلام
ماژول درست هست
از اين كد استفاده كنيد

RTLWindow TreeView1.hwnd, True

كد را در فرم لود برنامه قرار بدين

موفق باشي

Special
جمعه 06 دی 1387, 16:32 عصر
از هردو عزیز ممنونم
جواب داد
خدا علمتون رو زیاد کنه.

حامد مصافی
یک شنبه 08 دی 1387, 09:57 صبح
ضمناً یادم رفت بگم با این کد می تونید هر کنترلی (مثل Toolbar ، StatusBar یا خود فرم) رو راست به چپ کنید.

soheil_programmer
پنج شنبه 26 شهریور 1388, 10:19 صبح
ضمناً یادم رفت بگم با این کد می تونید هر کنترلی (مثل Toolbar ، StatusBar یا خود فرم) رو راست به چپ کنید.

با سلام

این ماژول روی ToolBar بدرستی عمل نمیکند!
یعنی Toolbar را Right2Left کرد اما هیچیک از کلیدهای موجود روی Toolbar دیگر کار نمی کنند!

ha_mirzaee
پنج شنبه 26 شهریور 1388, 13:47 عصر
دوست گرامي اين را امتحان كن واسه من كه جواب داده
SetWindowLong Treeview1.hwnd, -20, &H400000