PDA

View Full Version : ساختن قابلیت Tab برنامه ی Notepad



Restlesa
شنبه 14 اسفند 1389, 10:32 صبح
سلام بر همگی دوستان عزیز برنامه نویس
وقتی در برنامه ی Notepad ویندوز کلید Tab کیبرد را فشار می دهیم مکان نما به اندازه ی مشخصی به جلو حرکت می کند.حال سوال من این است که ای روش را چگونه می توانم در برنامه ی خودم پیاده سازی کنم.
ممنون تان میشم که راهنماییم کنید.
با تشکر

parselearn
شنبه 14 اسفند 1389, 11:05 صبح
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim mblnTabPressed As Boolean
mblnTabPressed = (KeyCode = vbKeyTab)
If mblnTabPressed Then
Text1.SelText = vbTab
KeyCode = 0
End If
End Sub

Restlesa
یک شنبه 15 اسفند 1389, 14:39 عصر
ممنونم دوست عزیز
ولی یه مشکلی دارم و مشکلم این هستش که وقتی کد رو به برنامه ام اضافه می کنم و برنامه رو اجرا می کنم و کلید Tab رو می زنم مکان نما به مقدار 2 تا Tab برنامه ی Notepad به جلو حرکت می کنه
چی کار کنم که مثل خود برنامه ی Notepad ویندوز بشه ؟؟؟

محسن واژدی
یک شنبه 15 اسفند 1389, 14:53 عصر
ممنونم دوست عزیز
ولی یه مشکلی دارم و مشکلم این هستش که وقتی کد رو به برنامه ام اضافه می کنم و برنامه رو اجرا می کنم و کلید Tab رو می زنم مکان نما به مقدار 2 تا Tab برنامه ی Notepad به جلو حرکت می کنه
چی کار کنم که مثل خود برنامه ی Notepad ویندوز بشه ؟؟؟

سلام
اگر منظورتون افزایش تعداد Tabهاست که میتوانید بجای یکبار نوشتن دستور vbTab به تعدادی مورد نظر آنرا در مقدار برگردانده شده وارد کنید، مثلا بصورت زیر (با اجازه جناب parselearn (http://barnamenevis.org/member.php?48732-parselearn)):

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
Dim mblnTabPressed As Boolean
mblnTabPressed = (KeyCode = vbKeyTab)
If mblnTabPressed Then
Text1.SelText = vbTab & vbTab

KeyCode = 0
End If
End Sub



موفق باشید

Restlesa
یک شنبه 15 اسفند 1389, 15:47 عصر
نه دوست عزیز منظورم اینه که کدی که دوست خوبمون گذاشتن 2 برابر تعداد Tab های برنامه ی Notepad هستش
من تعداد Tab های خود برنامه ی Notepad رو می خوام
منظورم رو فهمیدین :متفکر::متفکر::متفکر::متفکر:: تفکر:

knight-rak
یک شنبه 15 اسفند 1389, 15:57 عصر
دوست عزیز این کد کاملا درست هستش
فقط مشکل اینجاست که اکثر برنامه های تحت ویندوز که ویراستار هستن از خود ویندوز مقدار تب رو دریافت میکنن
خود ویندوز برای شما یک بار تب میزنه و بعد هم تبی که خودتون نوشتید اضاف میشه
اول باید تب ویندوز رو توی برنامه از کار انداخت و غیر فعال کرد
من درموردش چیزی نمیدونم و بلد نیستم اگر اساتید عزیز بگن منم خوش حال میشم بدونم چطور باید کلید تب توی توابع اصلی ویندوز رو توی برنامه از کار انداخت که اصلا کار تغییر فکوس یا همین فاصله رو انجام نده

موفق باشید ....

returnx
یک شنبه 15 اسفند 1389, 19:09 عصر
از این کد اسفاده کن ببین جواب میده ، دقیقا مطمئن نیستم چون تست نکردم:

If mblnTabPressed Then
text1.text=text1.text & space(8)

Restlesa
یک شنبه 15 اسفند 1389, 22:21 عصر
با تشکر از تمامی دوستان خوبم
مشکل ذکر شده برطرف شد و فقط می مونه مشکل Back Space که به همان اندازه ی Tab پاک نمی کنه
کد زیر رو امتحان کنید متوجه منظورم خواهید شد
Private Sub Text1_KeyPress(KeyAscii As Integer)
Dim mblnTabPressed As Long
mblnTabPressed = KeyAscii
If mblnTabPressed = 9 Then
Text1.SelText = Space(16)
KeyAscii = 0
ElseIf mblnTabPressed = 8 Then
'چه کدي بايد نوشته بشه
End If
End Sub

knight-rak
یک شنبه 15 اسفند 1389, 22:44 عصر
قاعدتا برای پاک کردن که نباید به اندازه تب پاک کرد اینجوری ممکنه متن نوشته شده هم به اشتباه پاک بشه

موفق باشید ....

Restlesa
یک شنبه 15 اسفند 1389, 22:50 عصر
دوست عزیز مثل اینکه متوجه من ظورم نشدی
برنامه ی Notepad ویندوز رو باز کن و کلید Tab رو فشار بدید و سپس ی Pach Space رو فشار بدین
همون توری که مشاهده فرمودید وقتی دکمه Back Space رو میزنید اون مقدار Tab پاک میشه
منظور من این هستش

knight-rak
یک شنبه 15 اسفند 1389, 23:02 عصر
خوب شما باید چک کنید که سمت چپ اون خطی که اشاره گر قرار داره مقداری هست یا نه - و اینکه آیا به اندازه مثلا 14 تا فاصله که تب بوده قرار داره یا نه
اگر بود که فقط همونقدر پاک بشه اگر نه که دونه دونه پاک بشه

موفق باشید ....

Restlesa
سه شنبه 17 اسفند 1389, 15:02 عصر
میشه اگه امکانش هست سورش رو برام بفرستی ؟؟؟؟ :لبخند::لبخند::لبخند::لبخند:: بخند::لبخند::لبخند: