PDA

View Full Version : Fucos



AsgharDasTala
سه شنبه 05 مهر 1384, 14:48 عصر
من یک برنامه ماشین حساب نوشته ام و به دنبال راهی می گردم که :
اولا دیگر فوکوس در برنامه ام ظاهر نشود تا نه تنها از طریق Tab بلکه از هیچ طریق دیگری مانند کلید های جهت دار نیز نتوان روی کنترل ها حرکت کرد.
ثانیا نتوان با زدن Enter یا هر کلید دیگری مانند Space و ... کلید دارای فوکوس را فشرد

bachemosbat
چهارشنبه 06 مهر 1384, 04:38 صبح
می تونی خاصیت TabStop از کنترلهایی که می خوای با کلید Tab روی اونها نره رو به false تغییر بدی.

حامد مصافی
پنج شنبه 07 مهر 1384, 00:13 صبح
سلام
ابتدا خصوصیت KeyPreview فرم رو به true ست کن و کد زیر رو تایپ کن


Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = vbKeyReturn Then KeyCode = 0
If KeyCode = vbKeyTab Then KeyCode = 0
If KeyCode = vbKeyRight Then KeyCode = 0
If KeyCode = vbKeyLeft Then KeyCode = 0
If KeyCode = vbKeyUp Then KeyCode = 0
If KeyCode = vbKeyDown Then KeyCode = 0
End Sub



و اما برای از بین بردن فوکوس تا جایی که سواد من قد می ده راهی وجود نداره
ولی با یه کم سر و کله زدن با توابع API میشه یک خط به فاصله 5 پیکسل از لبه های دکمه (همیشه) رسم کرد تا فوکوس دیده نشه (البته اگه برنامه با استیل کلاسیک اجرا بشه)
اگه خواستی بگو تا این کد رو برات بنویسم

PalizeSoftware
پنج شنبه 07 مهر 1384, 00:55 صبح
سلام
دوست عزیز چرا خودت یه کنترل نمی‌سازی که راحت‌تر باشی. این بخش رو ببین
آخرش مهمه.
http://www.barnamenevis.org/forum/showthread.php?t=26461
موفق باشی

AsgharDasTala
جمعه 15 مهر 1384, 15:29 عصر
با سلام و تشکر
1. BlackDal برای اینکه منظور من را درک کنی بهتر است به ماشین حساب ویندوز نگاهی بیاندازی و وجود نداشتن Focus و نحوه ی کار آن را ببینی.
2. PalizeSoftware من نحوه ی طراحی دکمه ها و چگونگی استفاده از آن ها را متوجه نشدم و در برنامه مشکلاتی به شرح زیر پیدا کردم:
1. با زدن space دکمه ای که روی آن فوکوس قرار دارد عمل می کند
2. با زدن دکمه هایی بغیر از کلید های تعریف شده دکمه های فوکوس دار از حالت high light خارج می شوند
3. می خواهم مانند ماشین حساب ویندوز با زدن کلید های کیبورد فوکوسی بوجود نیاید
پس بهترین راه برای آنکه برنامه درست کار کند وجود نداشتن fucos است

PalizeSoftware
جمعه 15 مهر 1384, 16:15 عصر
دوست عزیز برای مورد اول که با زدن کلید space‌ عمل می‌کند می‌تونی این کد رو برداری یا هر جور که خواستی تغییر بدی


Private Sub UserControl_KeyPress(KeyAscii As Integer)
If KeyAscii = 32 Then
RaiseEvent Click
End If
End Sub

برای طراحی دکمه‌ها از تصاویر استفاده شده که اونها رو بصورت resource‌ قرار دادم. و فقط لود میشن و نمایش داده میشن.
اگه می‌خوای هیچ فوکوسی نباشه که این دو کد رو بردار


Private Sub UserControl_GotFocus()
HighLight
End Sub

Private Sub UserControl_LostFocus()
Normal
End Sub


در ضمن خصوصیت TabStop همه دکمه‌ها رو false کن.
با این تغییرات شما نیازی نداری که از usercontrol استفاده کنی و می‌تونی از یه label هم استفاده کنی. این usercontrol جنبه آموزشی داشت، همین
موفق باشی

AsgharDasTala
جمعه 29 مهر 1384, 18:59 عصر
دمت گرم خیلی بهم حال دادی .
لطف می کنی به من بگویی چگونه می توان اعداد را در Text Box بصورت انگلیسی و از راست به چپ نوشت (همانند ماشین حساب )

PalizeSoftware
جمعه 29 مهر 1384, 20:29 عصر
خب اول یه فونت انتخاب کن که لاتین باشه و خاصیت Alignment رو به Right Justify تنظیم کن. همین