View Full Version : right to left ویژوال با کدنویسی برای object بدون این خاصیت
look20
جمعه 13 فروردین 1389, 11:04 صبح
سلام دوستان خسته نباشید آیا؟
right to left ویژوال با کدنویسی امکان داره یعنی فرض کنیم یه object این خاصیت رو نداره چطور با کد این خاصیت رو بهش بدیم
M.T.P
شنبه 14 فروردین 1389, 10:03 صبح
بله امکانش هست در تاپیک زیر پست 33
http://barnamenevis.org/forum/showthread.php?t=174912&page=4
و اما واسه راست به چپ در ویندوز 7 نسخه 32 بیتی:(پست 45)
http://barnamenevis.org/forum/showthread.php?t=174912&page=5
موفق باشید.:لبخندساده:
look20
شنبه 14 فروردین 1389, 11:02 صبح
ببخشید منظورم این نیست که کلا فرم چپ به راست بشه فقط یه object مثلا textbox کمبو و نظیر اینها
یعنی برای هر object دلخواه کدی تعریف کنیم که در هنگام نمایش فرم right to left بشه البته با کد زیر جواب نمیده
Private Sub Form_Load()
Label1.RightToLeft = True
End Sub
البته خود Label1 خاصیت right to left نداره منظورم منم همین بود که اگه نداشته باشه چکار کنم
M.T.P
شنبه 14 فروردین 1389, 11:27 صبح
ببخشید منظورم این نیست که کلا فرم چپ به راست بشه فقط یه object مثلا textbox کمبو و نظیر اینها
یعنی برای هر object دلخواه کدی تعریف کنیم که در هنگام نمایش فرم right to left بشه البته با کد زیر جواب نمیده
Private Sub Form_Load()
Label1.RightToLeft = True
End Sub
البته خود Label1 خاصیت right to left نداره منظورم منم همین بود که اگه نداشته باشه چکار کنم
البته اگه دقت کرده باشین در برنامه rtl که لینکش در بالا هست شما میتونین در تابعی که در ماژولش هست هر تغییری رو که دلتون میخواد اعمال کنید و برای هر کنترلی یه تابع مخصوص واسه راست به چپ کردنش ایجاد کنین...
در مورد Label هم Right to left وجود داره و من هیچ مشکلی نمیبینم...:گیج:
در کل استفاده از API واسه راست به چپ کردن به نظرم فقط برای کنترل های Microsoft Common Controls هست وگرنه کنترل های استاندارد VB6 همشون Right to left رو دارن و مشکلی وجود نداره...مثلا همون کدی که نوشتی واسه Label هیچ مشکلی نداره و کار میکنه مگه اینگه vbame.dll داخل پوشه system32 نباشه
look20
شنبه 14 فروردین 1389, 11:39 صبح
منظورم اسمش label در واقع کمبو البته نه کمبوی خود vb بلکه مربوط به یه ocx حالا میشه کاری کرد؟!
M.T.P
شنبه 14 فروردین 1389, 12:13 عصر
منظورم اسمش label در واقع کمبو البته نه کمبوی خود vb بلکه مربوط به یه ocx حالا میشه کاری کرد؟!
از کد زیر استفاده کنین منتها تابع RTL از شما اسم کنترلی رو که قراره راست به چپ بشه میخواد ، البته اگه کنترل ocx شما خصوصیت hwnd داشته باشه
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 RTL(Ctl As Control)
SetWindowLong Ctl.hwnd, GWL_EXSTYLE, _
GetWindowLong(Ctl.hwnd, GWL_EXSTYLE) Or WS_EX_LAYOUTRTL
End Sub
look20
شنبه 14 فروردین 1389, 12:16 عصر
میشه بیشتر راهنمایی کنید یعنی چه که تابع RTL از شما اسم کنترلی رو که قراره راست به چپ بشه میخوا
من کد رو توی فرم گذاشتم و ocx رو هم گذاشتم حالا باید چکار کنم
M.T.P
شنبه 14 فروردین 1389, 15:31 عصر
اگه امکانش هست ocx رو آپلود کنید.:لبخندساده:
look20
شنبه 14 فروردین 1389, 17:04 عصر
اینم فایلم
http://www.barnamenevis.org/forum/attachment.php?attachmentid=45498&d=1268387786
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.