PDA

View Full Version : جلوگیری از Paste در تکس باکس



mohsen_iceman2000
جمعه 09 تیر 1391, 21:52 عصر
دوستان راهی هست که بشه از Paste کردن در تکس باکس جلو گیری کرد و کلید ترکیبی Ctrl+v رو هم غیر فعال کرد
خیلی لازم دارم دوستان اگه کسی بلده توضیح بده

MohammadGh2011
جمعه 09 تیر 1391, 22:44 عصر
سلام عليکم
بله راه هاي زيادي وجود داره کد زير رو امتحان کنيد:
Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 17 Then MsgBox "Not Ctrl"
End Sub
Private Sub Text1_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Button = vbRightButton Then MsgBox "No Right click"
End Sub


موفق باشيد

MohammadGh2011
جمعه 09 تیر 1391, 22:52 عصر
يا از کد ساده زير استفاده کنيد:
Private Sub Text1_GotFocus()
Clipboard.SetText ""
End Sub



اگه در مورد سوالتون در همين سايت جستجو ميکرديد کلي مطلب براتون ميومد و جواب سوالتون رو پيدا ميکرديد.

موفق باشيد

Veteran
جمعه 09 تیر 1391, 22:54 عصر
راه های زیادی وجود داره.
اما من این کد به ذهنم رسید.

Private Sub Text1_Change()
If InStr(1, Text1, Clipboard.GetText, vbTextCompare) <> 0 Then
Text1 = Replace(Text1, Clipboard.GetText, "")
Text1.SelStart = Len(Text1)
End If
End Sub

هز چیزی که پیست میشه توی حافظه هست و ما اومدیم گفتیم که اگه متنی که توی حافظه بود توی تکست هم بود اونو پاک کن.
اما مشکلی هم که داره اگه چیزی بنویسید که همون توی حافظه هم باشه باز پاک میشه:لبخند:
به هر حال گفتم بزارم شاید استفاده کردین.

محسن واژدی
جمعه 09 تیر 1391, 23:04 عصر
سلام علیکم
با اجازه دوستان
با کدی مشابه زیر هم میتوانیم بگونه ای Ctrl+V را کنترل و غیرفعال کنیم (البته این برای فقط قبول کردن عدد هست که با کمی ویرایش میتوانیم اونو به صورت دلخواهمان تعریف کنیم):
Private Sub Text1_KeyPress(KeyAscii As Integer)
If Not (KeyAscii = vbKeyBack Or KeyAscii = vbKeyDelete Or KeyAscii = vbKeySpace Or (KeyAscii >= Asc("1") And KeyAscii <= Asc("9"))) Then
KeyAscii = 0
End If
End Sub



برای غیرفعال کردن منوی کلیک راست هم جستجو کنید فراوان در انجمن بحث شده، به عنوان مثال پست زیر که البته textbox را هوک کرده :
http://barnamenevis.org/showthread.php?318010-%DA%A9%D9%84%DB%8C%DA%A9-%D8%B1%D8%A7%D8%B3%D8%AA&p=1396664&viewfull=1#post1396664

اما راه های ساده تری هم وجود دارد که قبلا توسط عزیزان اشاره شده، برای نمونه پست زیر:
http://barnamenevis.org/showthread.php?103687-%D8%BA%DB%8C%D8%B1%D9%81%D8%B9%D8%A7%D9%84-%DA%A9%D8%B1%D8%AF%D9%86-%D9%85%D9%86%D9%88%DB%8C-%D8%B1%D8%A7%D8%B3%D8%AA-%DA%A9%D9%84%DB%8C%DA%A9-%D8%AF%D8%B1-%D8%AA%DA%A9%D8%B3%D8%AA-%D8%A8%D8%A7%DA%A9%D8%B3&p=506620&viewfull=1#post506620

موفق باشید

just4froum
جمعه 09 تیر 1391, 23:18 عصر
با سلام :

همانطور که دوستان گفتند راه های مختلفی وجود داره . این کد نه می گذارد متنی پیست شود و هم SelStart تکستباکس را حفظ می کند. فقط یکم کدش در هم برهم شد ببخشید :

Dim m As Boolean, f As Boolean
Dim s As String, sel As Long

Private Sub Form_Load()
m = False
s = Text1.Text
f = False
End Sub

Private Sub Text1_Change()
If m = False Then Text1.Text = s: Text1.SelStart = sel
m = False
If f = True Then Text1.Text = s: f = False
s = Text1.Text
End Sub

Private Sub Text1_Click()
sel = Text1.SelStart
End Sub

Private Sub Text1_KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 86 And Shift = 2 Then f = True
End Sub

Private Sub Text1_KeyPress(KeyAscii As Integer)
m = True
sel = Text1.SelStart
End Sub

arenaw
شنبه 10 تیر 1391, 13:37 عصر
يا از کد ساده زير استفاده کنيد:
Private Sub Text1_GotFocus()
Clipboard.SetText ""
End Sub

موفق باشيد
اگر بتونیم از محتوای کلیپبرد بکاپ هم تهیه کنیم و اونو موقع لاست فوکوس برگردونیم بهتر میشه

Dim t As Variant
Private Sub Text1_GotFocus()
t = Clipboard.GetText
Clipboard.SetText ""
End Sub
Private Sub Text1_LostFocus()
Clipboard.SetText t
End Sub